- 聊了聊项目
C++
- 实例化一个派生类A的智能指针,这个过程中会发生什么
std::shared_ptr<A> p1 = std::make_shared<A>(); std::shared_ptr<A> p2(new A);
- make_shared 和 share_ptr(new A) 的区别
- 构造函数能不能抛出异常
- A a() 和 A* ptr_a = new A() 的区别
网络:
- 讲一下对网络协议栈的理解,列举一下协议栈各层的协议
- TCP从请求连接开始,经过多少个rrt能收到有效数据
算法题:
- N个节点的二叉树有几种形态(不会,白板五分钟,给我换了一题);
- 中缀表达式转换成后缀表达式(拍脑袋,“用栈!”,然后还是写不出来,又换一题);
- 对一个链表进行快速排序(差点举手投降了,提示:“你想想链表怎么实现partition?”然后拍脑袋,想出来了把小于pivot的插到表头然后返回pivot,接着继续分治),写完之后,问我:“你写的代码内存上有什么问题吗”, 我愣了半分钟,然后说:每次头插法partition的时候new了一个dummyHead,没有delete,可能会内存泄漏,表示赞许,并对我进行了“C++ new完一定要想想在哪里delete”的人生经验传授
反问环节
主要是做什么?答:搜索结果召回和筛选
技术栈?答:为了高效率和灵活性,可控性,主要是C++作服务器的开发