一面
【C/C++】【面经】2022 字节跳动( C++ 客户端-教育方向 )提前批面经
二面
OS
- 虚拟内存与物理内存;他们的区别;内存的交换是啥
- 寻址方式有哪些;(讲了一会页表映射,具体问题没有理解,可能没涉及到)
- 分页分段;区别及其应用;(内外碎片…)
- 系统中断的过程;(保存上下文、中断程序、恢复现场、调度)
- 内核态的理解;(隔离,os 层面包装内存空间,限制用户程序)
C++
- 智能指针每个讲一下;
- 引用计数怎么设计;(引用构造都在什么时候加1)(深拷贝、浅拷贝,会引起引用计数加一吗?)
- 写一下造成循环引用的代码;
- map、unordered_map;实现区别、复杂度区别、空间区别;
手撕
- 将下面的arr 分组位下面的arr2
面试完想起来其实就是字母异位分组的问题;
vector<vector<char>> arr= {{'a','b','c'},{'b','a'},{'a','c','b'},
{'c','a','b'},{'A','B'},{'a','b'},{'B','A'}};
vector<vector<vector<char>>> arr2=
{
{{'a','b','c'},{'a','c','b'},{'c','a','b'}}
{{'b','a'},{'a','b'}}
{{'A','B'},{'B','A'}}
};
总结
- 这次的面试官给了我很大的发挥空间,让我自己讲的比较多;然后根据我讲的再挖深一些,总体比较友好;
- 也讲到了C++ 只是基础,如果真要去做客户端,需要重学语言与架构;
三面
闲聊
- 你是电子的学生?课程和计算机有什么差异呢?
- 有学过什么课程;
- 自学的框架;
- 什么时候准备转行的;
- 对客户端有什么了解;做过相关工作吗?
- 了解过什么客户端的项目;
- 客户端的IOS 安卓有了解多少;
- 怎么评价自己;
手撕+闲聊
- linux了解多少、java了解吗;
- IPV4、IPV6 了解多少;格式讲一下;
- 手撕IPV6判断;(主要是针对一些测试用例的修改、比如:“0::0”)
闲聊一些基础
- HTTP 的header 记得多少;
- 2.0 和1.1 的区别;(头部压缩、二进制帧、并发传输、主动推送)
- 常见状态码;206、200、500;
- 线程池重用;
- 并行并发;
- 投的教育方向,对教育方向的了解;
- 为什么想做互联网
反问:
- K12政策问题的影响;(技术导向问题不大)
总结
- 面试官很好,有引导,让自己讲解;整体面试过程很舒服;