写在前面
下面分享一下BAT及美团、头条、滴滴、小米、网易等各大公司的各类面试题
最新面试题 https://v2ee.cn/
有需要的小伙伴拿走~
作者:Kensley
看了好多天面经,回馈一下。
一二面大起大落,目前已经没有什么找工作的热情了,想静下心沉淀一下技术。
一面:
基本全A,自我评价的话我能打90分,一面后3分钟HR约一天后二面。
-
自我介绍
-
项目介绍
-
系统:
-
项目中的进程/线程
-
IPC
-
Socket通信
-
网络:
-
TCP/UDP
-
拥塞避免
-
HTTPS
-
数据结构:
-
树:详细说二叉树、红黑树、B/B+树
-
语言:
-
虚函数、纯虚函数
-
算法:单调栈结构
二面
-
1.上来啥都没说,自我介绍项目介绍也没让我讲,礼貌问了一下怎么称呼,没吃我这套。
-
2.字节对齐。写了7个sizeof 讲输出
-
2.多态。手写实现一个体现多态的程序。再手写一下派生类的析构函数的实现和效果。
-
3.C++11特性知道哪些?(这是我最后悔回答的一个问题,我还特意强调了了解,结果开始了不归路)
答:了解一点智能指针,lambda表达式,右值引用,auto和decltype关键字这些
- 4.刚想开始展开我了解的皮毛,给他讲讲4种智能指针,他打断了我,问
vector和shared_ptr里面的装的是对象?指针?引用?
答–对象 (开始懵逼
- 5.vector里面删除特定元素,有重复,让我实现。
答—写完。我说了下中间插入删除会造成vector的迭代器失效,内存重新分配,但是erase方法不会。
–哦?那你实现一下迭代器会失效的写法。
- 6.stl里面有算法,有容器自己封装的函数,同样职能的比如remove和vector::erase有什么不同?
答–(我说实话都没用过remove,sort倒是用的多……)具体用法,底层实现等,因为对一个链表和一个vector进行remove肯定是不一样的,对于vector…
–被打断,再想想
- 7.手写一个用Lambda表达式的程序。
答:写了个比较器接口。
- 8.有什么是函数指针做不到,Lambda可以的?逮着问lambda捕获引用的作用域?底层怎么保证作用域持续的?
答–我几乎连问题都听不懂,尽我所能讲了我知道的Lambda相关
–皱眉
- 9.右值引用是个啥,有什么用?我不太懂这个,不如你实现一下给我看看
答-写了右值引用实现移动构造函数,和移动赋值号的重载。说了在大量new场景下不用生成多余临时对象进行拷贝的开销优势
-
10.这样移动赋值的好处还有什么?如果类内成员元素是int这种,还有没有必要写?
-
11.进程间通信。着重问了共享内存
-
12.多进程,多线程。
-
13.如果你自己做一个处理高并发的系统,不论是单还是多线程,你提高并发效率的思路是?(想详述select poll epoll被打断–那个简单,说说自己的想法)
-
14.父子进程其中一个new一份内存,另一个在同样的地址空间能不能看到?线程呢?
-
15.Volatile
-
16.new的是物理内存还是虚拟内存?那虚拟内存什么时候分配?
-
17.我现在想跟内核态交互,怎么做?
-
18.算法题: 行列递增的mn矩阵,找target.
最后
分享一下BAT及美团、头条、滴滴、小米、网易等各大公司的各类面试题
最新面试题 https://v2ee.cn/
有需要的小伙伴拿走~