后端开发面经系列 -- 华为OD -- C++面经(3)
来自:阿Q技术站1、补码计算方法?
①确定数的位数和符号位:假设我们要计算一个8位二进制数的补码,其中最高位为符号位(0表示正数,1表示负数)。
②如果是正数:正数的补码就是其原码。例如,+3的8位原码是00000011,那么它的补码也是00000011。
③如果是负数:
取反:先将负数的绝对值转换为二进制形式,然后对每一位取反(0变为1,1变为0)。例如,-3的绝对值是3,其二进制形式是00000011,取反后为11111100。
加1:将取反后的结果加1。例如,11111100加1得到11111101。
④得到补码:将上述步骤得到的结果作为负数的补码。例如,-3的补码为11111101。
2、C++ 指针和引用的区别,为什么需要引用?
①定义:
指针: 指针是一个包含变量地址的变量。通过指针,可以访问或修改存储在该地址上的值。
引用: 引用是一个别名,它为一个已存在的变量提供了另一个名字。引用在创建时必须初始化,并且一旦初始化后,它将一直引用相同的对象。
②语法:
指针: 使用 * 符号来声明指针,以及通过 * 来访问指针指向的值。
int x = 10;
int *ptr = &x;// 指针的声明和初始化int value = *ptr;// 使用指针访问值
引用: 使用 & 符号来声明引用,没有类似 * 的解引用符号。
int x = 10;
int &ref = x;// 引用的声明和初始化int value = ref;// 直接使用引用访问值
③空值(NULL 或 nullptr):
指针: 可以是空值(nullptr 或 NULL),表示指针不指向任何有效的地址。
引用: 引用必须在创建时初始化,并且不能为 null。
④地址操作:
指针: 可以通过指针进行地址的算术操作,比如指针加法和减法。
引用: 引用一旦初始化,不能改变引用的目标。
⑤多级间接引用:
指针: 可以通过多级指针实现多级间接引用。
引用: 引用本身不支持多级引用。
⑥数组:
指针: 可以通过指针对数组进行遍历和操作。
引用: 引用不直接支持数组的遍历,但可以通过指针和引用的结合来实现。
⑦传递给函数:
指针: 通过指针可以实现函数的参数传递和返回。
引用: 通过引用也可以实现函数的参数传递和返回,但语法上更简洁。
⑧使用场景:
指针: 通常用于动态内存分配、数组操作、实现数据结构等。
引用: 通常用于函数参数传递、返回引用值、以及在某些情况下取代指针使用。
3、什么是多态,是否可以把一个父类的对象赋给一个子类的指针?
多态指的是通过子类对象或子类类型的对象来调用父类中定义的方法,实现不同子类对象对同一消息的不同响应。
在C++中,可以通过继承和虚函数实现多态性。当父类的函数被声明为虚函数时,子类可以重写(覆盖)该函数,并且在运行时,会根据实际对象的类型来调用对应的函数。这就是多态的体现。
可以将一个父类的指针或引用指向一个子类的对象,这样就可以通过父类的指针或引用来访问子类的成员变量和方法。这种行为是安全的,因为子类对象也是一个父类对象,它继承了父类的属性和方法,所以可以将子类对象看作是父类对象的一种特殊形式。
顺便吆喝一下,技术大厂,前后端/测试捞人,来看看!>>>机会
4、C++ 和 c 的区别?
C是面向过程的语言,而C++是面向对象的语言。
C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。
C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。
C++支持重载,而C语言不支持。
C++有引用,C没有。
C++全部变量的默认链接属性是外链接,而C是内链接。
C 中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以。
5、数据库什么情况使用索引?
频繁的查询操作:如果某个字段经常被用于查询操作,那么为该字段创建索引可以显著提高查询效率。
数据唯一性要求:对于要求数据唯一性的字段(如主键),应该为其创建索引,以确保数据的唯一性和快速查找。
连接查询:在连接查询中,连接的字段应该被索引,以提高连接查询的速度。
排序和分组:如果某个字段经常用于排序或分组操作,为该字段创建索引可以加快排序和分组的速度。
范围查询:对于范围查询(如 BETWEEN、>、<)经常用到的字段,应该创建索引以提高查询速度。
大数据表:对于数据量较大的表,应该根据查询需求创建索引,以提高查询效率。
感谢大佬的分享,挺不错的后端开发 hex123 发表于 2024-12-1 09:32
感谢大佬的分享,挺不错的后端开发
感谢支持,持续更新{:128:}
页:
[1]