【美团】C++岗-面试复盘(已意向)

一面:

开局自我介绍
部门技术栈是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的三种状态说一下,分别什么时候对应什么状态?
开局算法题:

  1. 从中序与后序遍历序列构造二叉树
  2. K 个一组翻转链表
    给定时间12分钟,思考+编码+调试,第一次遇见时间这么紧的算法题,12分钟没有写完两个,又申请了5分钟,最后花了15分钟写完的两个。

反问:部门,技术栈?
反反问:能转java吗?

二面:

开局自我介绍
讲一下TCP和UDP,以及他们的使用场景
讲一下linux虚拟内存布局
全局变量放在哪
静态变量放在哪
new出来的对象放在哪
讲一下虚拟内存和物理内存的对应机制
场景题目:10亿级别URL存放两个文件,如何求出相同的URL

算法题:两个链表的相加

反问:部门,技术栈。
总体体验比起第一轮的地狱级难度面试,第二轮友好了很多,期待下一面~

发表评论

后才能评论