深信服 C++ 春招面经


一面:
1. 笔试错题,在单链表和双链表的常见排序的各种时间复杂度,手画单链表的插入排序,简述快速排序思想
2. 涉及字符串长度和末尾'\0'的strcpy和strlen问题,打印末尾没有'\0'有什么问题(可能一堆乱码),strcpy有什么问题(缓冲区溢出,可能覆盖掉返回地址)strcpy怎么实现安全(直接用strncpy),strncpy的大小参数设置多少才安全
3. 网络通信怎么做(tcp,udp,ip)
4. tcp为什么是大端字节序(和tcp实现有关,tcp是面向字节流,大端收发的顺序更直观)
5. 为什么程序要判定大小端(网络编程,各个平台的CPU实现不一,大部分x86比如intel是小端字节序,而ARM可以手动设置大端还是小端
6. 简述堆排序过程(手写堆排序)
7. 树中节点查找过程(递进的方式简述每种树的概念和思想 二分查找 -> 折半二叉树 -> 平衡二叉树 -> 红黑树 -> B/B+树)
8. 红黑树比平衡二叉树和好在哪儿(牺牲部分平衡性,换来时间复杂度的优化)
9. stl中map和unordermap实现(红黑树和哈希表
10. 哈希函数实现(手写简单的string to int 的哈希函数,简单介绍了下md5,sha1等几种常用散列函数)
11. 一致性哈希(环输出域) 其中一个节点挂了怎么做(扔给下一个) 如何实现负载均衡(每个机器无限多id再hash)
12. 哈希表大小设置多少合理 (和vector一样吧,动态调整大小,介绍了下渐进式rehash的过程) 如果不考虑rehash怎么做(应该是质数,因为避免冲突,另外大小设置和输入数据有关,具体应该是查表,表是科学家实践得出的参考值)
13. memcmp能不能比较结构体(不能,内存对齐的空洞随机值) 如何比较(遍历结构体元素) 为什么结构体对齐(考虑数据读写效率)
14. memmove如何防止内存重叠(手写memmove
14. 访问百度的过程  那么第一步请求dns有什么细节(查找dns缓存)dns层下面有什么细节(dns -> UDP -> IP -> ARP ->以太网-> 物理层)
15. ARP干嘛用的(IP转MAC) ARP查询过程  ARP中的目的地址填什么(网关网卡的mac) 是百度服务器网卡的mac吗(不是,因为家用路由器一般都会nat) 如果不考虑nat呢(百度服务器和我们网络之间存在很多转发路由器)
16. 电脑如何判断这个包是不是给自己的(目的mac地址,另外还可以开启混杂模式,监听不属于自己的数据包)

二面:
1. 大学做过arm linux有关什么的(应用层和底层的),底层有些什么(简单的字符设备驱动,按键驱动)
2. 多线程怎么无锁(原子操作,CAS...)简述下原子操作(不能被中断打断的操作,编译器和平台架构特异性
3. 无锁设计架构了解吗,有没有架构上避免无锁的(简单说了下muduo的异步日志的双buffer设计,不知道有没有关系),双buffer能避免无锁吗(虽然不能完全避免,但还是能提高并发效率)
4. mutex和spinlock区别(释放CPU) 介绍下spinlock的使用场景(没看过,其实在一些驱动临界资源有涉及)
5. send函数返回-1可能的情况(1. EAGAIN 被中断打断 2. SIGPIPE 管道读写时对方已经关闭...)
6. 这些知识都是从哪儿看的(APUE和UNP) 看了多少 什么时候开始看的
7. 快排的最坏时间复杂度(O N2) 如何避免(随机寻找pivot)如何随机(基础库的随机函数,如果rand() 是 (0, 1)区间,修改区间大小和偏移)
8. 图的dfs和bfs(树看作是一种特殊的图,前序和层序)


HR:
看着简历问项目,不是问技术相关的,问设计思路和看法

#春招##面经##深信服##C++工程师#
全部评论
请问楼主拿到offer了吗
点赞 回复
分享
发布于 2019-03-13 14:28
请问有参加笔试吗
点赞 回复
分享
发布于 2019-03-15 10:32
阅文集团
校招火热招聘中
官网直投
大佬太厉害了。
点赞 回复
分享
发布于 2019-10-10 19:45
想问下是本科的还是研究生
点赞 回复
分享
发布于 2019-12-26 02:15

相关推荐

11 102 评论
分享
牛客网
牛客企业服务