面试复盘|美团后端开发 C++ 一面
面试时长:75分钟
- 开局自我介绍
- 部门技术栈是java,可以转吗?可以,面试官说:我当时面试时候也是C++面试的
- 说一下C++的面向对象吧,详细的说一下
- 说一下单继承时候的虚函数表内存分布情况
- 说一下菱形继承时候的虚函数表分布情况
- 说一下模版的底层实现,从指令集的角度来说,怎么实现的模版实例化。 不太懂
- 说一下模版实例化之后,底层汇编是怎么做的,比如如何jump之类的?不太懂
- 熟悉STL库是吧,说一下STL的仿函数设计原理及其底层实现..这个有点偏僻的我有点忘,说的不好
- 说一下vector的底层实现?说一下优先级队列的实现方法?
- C++本身没有多线程吧?有
- 说一下linux的多线程,pthread_XX这些和C++的thread库,底层实现的区别?
- 或者说,说一下thread库的底层封装逻辑?
- 从操作系统角度看,pthread_xxx和C++ thread创建线程有区别吗?
- 从指令集的角度来说一下,linux怎么实现的进程和线程?我从linux系统代码角度说了一下最初版的线程和现在的线程区别,具体的指令集啥的不太懂
- IPC,说一下有哪些进程间通信的技术?你用过那些?
- socket编程,select底层是怎么实现的,或者简单来说一下select的流程
- epoll底层怎么实现的,是基于回调机制的吗?
- 讲一下其他系统下的高性能IO多路复用方法都有什么?
- 熟悉linux命令吗?说一下比如我们要分析系统的状态,一般都用什么命令。如何查找一个文件?
- 说一下mysql的事务吧?ACID?ACID都是什么,哪个是因哪个是果?
- mysql实现到了ACID中的哪些?
- mysql如何实现的?
- 说一下间隙锁,什么时候会触发间隙所?
- 了解redis的实现吧,说一下SDS底层如何实现的?
- 说一下redis的跳表?
- 了解git吧,说一下git分支,我们一般怎么用
- git的三种状态说一下,分别什么时候对应什么状态?
开局算法题:
106. 从中序与后序遍历序列构造二叉树
25. K 个一组翻转链表
给定时间12分钟,思考+编码+调试,第一次遇见时间这么紧的算法题,12分钟没有写完两个,又申请了5分钟,最后花了15分钟写完的两个。 反问:部门,技术栈?
反反问:能转java吗?
以上就是能想到的面试题目了,这次有一些偏僻的没有回答上来,比如thread库是怎么包装的线程,菱形继承的虚函数表,还有指令集的部分。希望能过吧,许愿~
#面试复盘##面经##美团##C++工程师#