信锐网络科技面试经验

最近一周五六个面试,这家的面试岗位是Linux内核、应用层,以及网络层方面的开发,主要写业务方面的代码,有友友可以解释一下什么是业务方面的代码吗。

1.自我介绍

2.询问项目和实习经验

4.链表和数组有什么区别,各自的优势是什么?

5.什么是僵尸进程;如何防止空指针、野指针问题?

6.哈希表怎么解决冲突,以及哈希表扩容原理是什么?

在 C++ 中,哈希表通常通过标准库容器 std::unordered_map(或 std::unordered_set)实现。这些容器内部使用动态哈希表,当元素数量增长到一定程度时会自动进行扩容(rehashing)当负载因子超过某个阈值(称为 最大负载因子,max_load_factor),哈希表就会触发扩容。

扩容过程(Rehashing)

  • 分配一个更大的桶数组(通常是当前桶数的质数倍或 2 的幂次,取决于实现)。
  • 遍历旧桶中的所有元素,根据新的桶数量重新计算每个元素的哈希位置(即 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类,重载加法

    全部评论
    一周这么多面试,那可有得忙了,光面试准备有要花时间的
    点赞 回复 分享
    发布于 11-14 20:08 陕西
    发现大家都爱问三次握手
    点赞 回复 分享
    发布于 11-13 18:03 陕西
    大佬,这个星期有收到二面通知吗
    点赞 回复 分享
    发布于 11-10 22:30 广东

    相关推荐

    评论
    2
    1
    分享

    创作者周榜

    更多
    牛客网
    牛客网在线编程
    牛客网题解
    牛客企业服务