一面
C++:
- new、malloc区别
返回类型、分配失败返回值、分配大小、数组的处理方式、是否调用构造函数 - 多态
编译时多态、运行时多态 - 虚函数实现
vptr、vtable - 重载原理
符号表 - map
红黑树,定义,自旋
网络:
- UDP可靠实现
序列号、ACK、重传、定时器 - DNS细节
不会 - Listen(2),backlog参数
The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow. - 浏览器输入网址到实现
略
操作系统:
- C程序的虚拟内存空间
stack、heap、bss、data、text - 页机制
换页、缺页异常、TLB - IPC
管道、信号、消息队列、信号量+共享内存
Linux
- 常用命令
算法题
- 最大子序和
dp
二面
网络
- 拥塞控制
慢启动、拥塞避免、快速重传、快速恢复 - select(2)、epoll(7)
红黑树、边缘触发、节省用户态内核态拷贝 - 红黑树原理,与AVL的区别
定义、自旋,rebalance频率相对低,适合大量插入删除node的场景
操作系统
- 多进程和多线程的选择
多进程可靠性高,创建销毁切换开销大,多线程反之 - Linux下C程序的调试
breakpoint、coredump - 静态链接、动态链接
libc库,避免代码庞大,节省内存,更新时不需全部重新编译,提高可维护性 - 内存泄漏
valgrind
算法题
- n个整数,找出平均数最大且长度为k的连续子数组,输出最大平均数
easy题,滑动窗口 - 如果长度大于等于k?
n^2超时,面试结束看了题解,用的二分,这是个hard题