字节跳动后端暑期实习面试经历


Day 1

remove-cpp

  1. 讲讲 Python 的 GIL;
  2. 你写哪个标准的 C++?
  3. 讲讲右值引用;
  4. 实现一个 shared_ptr
  5. 讲一下 TCP/UDP;
  6. 讲一下 malloc 过程;
  7. brkmmap
  8. 讲一下页表、硬缺页、软缺页;
  9. 讲一下进程和线程区别;
  10. 讲一下阻塞和非阻塞(内核级);
  11. 给一个字符串里的所有单词反转;
  12. 矩阵中 minmax。

Day 2

  1. static 关键字;
  2. (地址空间中)堆和栈的区别;
  3. 可执行文件地址空间、加载后地址空间(没答上来低地址里的内核虚拟内存,但好像他以为我误解为只用说用户态内存了,不是很介意);
  4. C 编译过程;
  5. 程序加载过程;
  6. 堆管理(系统、库函数);
  7. malloc 过程;
  8. mmap 过程;
  9. C++ 多态的各种实现原理;
  10. 虚函数多态实现方法;
  11. C++ template 可以定义声明写不同文件里吗?
  12. 一个 string 类多线程冲突访问会怎么样?
  13. 静态成员多线程访问冲突;
  14. 多线程 Counter 的无锁实现;
  15. 套接字复用;
  16. 阻塞与非阻塞、发送失败后如何重试?
  17. 套接字程序把数据写到哪里?
  18. STL 复杂度;
  19. 红黑树和哈希表怎么选?
  20. 写代码:非递归的二叉树前序遍历。

Day 3

  1. 揪着几个项目问了问,担任的职责、遇到的困难什么的,估计是考察真实性,还让我讲技术细节;
  2. TCP 如何保障连接可靠性?
  3. TCP 和 UDP 包头区别;
  4. 写代码:一个山脉,数组元素表示高度,下雨积水,问最多可以积多少水?
  5. 你的优点;
  6. 你的不足之处,以后想怎么改进;

Day 4 HR

  1. 自我介绍;
  2. 印象最深刻的项目,为什么?
  3. 有哪些参与人数比较多的项目;
  4. 出了矛盾怎么解决的?
  5. 你的优点;
  6. 之前几轮面试的感受;
  7. 地域偏好;
  8. 预期实习时间。