信锐网络科技面试经验
最近一周五六个面试,这家的面试岗位是Linux内核、应用层,以及网络层方面的开发,主要写业务方面的代码,有友友可以解释一下什么是业务方面的代码吗。
1.自我介绍
2.询问项目和实习经验
4.链表和数组有什么区别,各自的优势是什么?
5.什么是僵尸进程;如何防止空指针、野指针问题?
6.哈希表怎么解决冲突,以及哈希表扩容原理是什么?
(在 C++ 中,哈希表通常通过标准库容器 std::unordered_map(或 std::unordered_set)实现。这些容器内部使用动态哈希表,当元素数量增长到一定程度时会自动进行扩容(rehashing)。当负载因子超过某个阈值(称为 最大负载因子,max_load_factor),哈希表就会触发扩容。
扩容过程(Rehashing)
hash(key) % new_bucket_count)。释放旧桶内存。)
7.TCP三次握手,当你有浏览器访问百度域名的时候用到了哪些协议
8.说一下C++多态,sizeof和strlen的区别,结构体为什么要对齐。(sizeof计算的是占字节数,strlen字符串中计算的是有几个字符,不会计算'\0',但sizeof会)。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char arr[] = "123";
std::cout << "sizeof:" << sizeof(arr) << std::endl;
std::cout << "strlen:" << strlen(arr) << std::endl;
return 0;
}
//输出结果:
sizeof:4
strlen:3
结构体对齐是指:编译器在为结构体成员分配内存时,会根据每个成员的类型和平台要求,在成员之间插入“填充字节”(padding),使得每个成员的起始地址满足其“对齐要求”。
结构体对齐(Structure Padding / Alignment)是 C/C++ 中一个重要的底层内存布局机制。它的核心目的是提升 CPU 访问内存的效率,甚至在某些架构上是强制要求。 现代CUP通常以字(word)为单位(四字节或者8字节)从内存中读取数据。如果一个int(4 字节)存储在地址 0x1001(非 4 的倍数),CPU 可能需要两次内存读取并拼接数据,效率低下。
9.vector容器怎么扩容的
std::vector 是 C++ 标准库中最常用的动态数组容器,它的核心特性之一就是自动扩容——当插入元素导致容量(capacity)不足时,会自动分配更大的内存空间,并将原有元素迁移过去。
10.手撕代码,单链表原地翻转,自己实现C++string类,重载加法