腾讯音乐-后台开发-暑期实习一、二面面经

----------------------------------------------------------------------
一面 
时间：7:00 pm-8:22 pm
1.自我介绍
2.然后问我两个项目： 
     -oRaft 协议的项目，问了比较久 
            如果外部一个客户端需要提交一个数据，什么时候返回成功？是大多数复制完成之后再返回？
     -因为项目的 Go 实现的，继续问了 Go 语言的特性，Go 调度器的实现了解过没有？协程如何调度的。
     -毕设的文件系统： 
         PMEM 的延时
         调度算法
3.网络编程：多线程和多进程的程序写过没有，主要关心实战情况 
  -osocket编程
  -oselect/poll/epoll了解过吗？
4.网络中传输数据如何分包，应该是问 TCP 粘包问题 
  -顺便问了知不知道 protobuf
  -ogRPC 实现 protobuf 的关键点在哪？ 
         跨平台，跨语言
         不同机器下定义的基本数据类型长度不同，考虑大端存储还是小端存储
5.进程的通信方式
6.数据库： 
  -MySQL 使用的引擎：InnoDB 之类
  -如何建索引？为哪个键建索引？
  -Reids 的情况，哪里用过
7.TCP 的三次握手，四次挥手，TIME_WAIT

算法：<= 20min，vscode，共享屏幕，手写，手动构造样例。两道大水题。
1.反转链接
2.二分查找

-----------------------------------------------------------------------
二面
> 面试官迟到 40+ min 。。。。。。10:40+am-11:40+am
1.问项目，raft 协议 
  -脑裂的情况如何解决
  -日志复制的具体过程
  -CAP 理论，日志的理解：日志只是记录操作，并不一定数据的直接修改
2.后面问 Go 的知识： 
  -GMP 了解过没有？没有，还是继续问。
  -GMP 如果一个协程阻塞了，如何调度？
  -Context 有没有了解过。
  -Go 语言哪些是按引用传递的。
3.C++ 知识： 
  -map 的实现：红黑树
              用迭代器访问元素，然后tmp = it, it = it->next，然后把把 tmp 删了，后面迭代器还可以继续执行吗？
  -malloc 的实现
4.进程和线程的区别
5.程序的内存布局
6.Go 的协程和线程的优势
7.I/O 密集型和计算密集型哪一个适合 Go 的协程。
