百度提前批 搜索架构部C++开发 一二面面经
攒攒人品发发面经- -
一面
复习的有点仓促,只复习了C++部分,导致八股文部分很多专业名词都忘了,都是意会+手舞足蹈比划,还被面试官吐槽了- -
而且八股文问的时间有点久,以至于最后没问算法题
1.自我介绍以及介绍两个实习经历(3min)
2.C++语言相关(20min)
- C和C++的区别
- 面向对象的三个特点,和面向过程在开发上有什么不同
- dynamic_cast和static_cast的区别
- 引用和指针的区别,引用是否占用实际空间
- 多态:静态多态和动态多态,以及在底层都是怎么实现的
- malloc和new的区别(是否构建对象,如何异常处理,返回类型不同),new如何不抛出异常,new如何指定地址创建对象/在栈区创建对象
- 智能指针:shared_ptr在什么场合会引用计数增、减,shared_ptr的具体结构,unique_ptr是怎样实现的
- 编译-链接-加载的过程,动态链接和静态链接的过程
3.计算机八股文(30min)
- 进程和线程的区别,进程和线程占用的资源
- IO多路服用的实现:poll和epoll的区别,使用的数据结构,水平触发和边沿触发的区别、应用场景
- 虚拟内存的意义,页表(多级页表,还问了Linux的页表有几级...),页的缺页中断调度
- 进程的写时复制、文件描述符的共享情况。
- 内存池的作用,伙伴系统和合并算法
- 自旋锁和互斥锁的区别,互斥锁,不可重入锁,死锁的条件和解决方法
- tcp四次挥手
- Redis(这块答得超级烂):aof和rdb各自的优缺点,rehash的时机和策略
4.反问环节:三分钟
二面
1.自我介绍,实习介绍和问一些问题(15分钟)
- 实习相关问题
- 项目(Http服务器):reactor模型和proactor模型的区别/对比,redis的好处
- 实验室项目简单介绍
2.一些简单的八股文(5分钟)
- 实习过程中用到的过哪些设计模式,是否尝试过自己写过迭代器
- vector的扩容
3.写题(20分钟)
- 判断链表中是否有环->定位链表中是否有环
4.搜索引擎相关的知识(20分钟)
- 谈谈对搜索引擎如何理解,倒排索引怎么实现
- 搜索引擎和数据库引擎的共性和不同(因为我实习做的数据库引擎- -)
- 一个小算法题;多个链表找交集(对应搜索引擎里多个关键词搜索)
- 多个倒排索引merge时顺序怎么选择,有什么merge算法
5.反问环节