滴滴后端开发一二面面经
一面 40mins
- 实习工作细节
- MySQL 的引擎有哪些?适用场景?
- 数据库的增删改查熟悉吗?
- 表很大的话如何优化查询速度?
- 索引
- 拆分表
- 水平分表
- 水平分表的缺点
- 扩容时映射变化,一致性哈希
- join
- 分页问题
- 索引为什么会快?有什么不好的地方?(空间换时间)
- RPC 和 HTTP 的区别?为什么要用 RPC?(IDL、桩方法、服务化收益)
- RPC 传输速度比 HTTP 更快吗?(不一定,但一般会快。取决于序列化协议和传输协议,比如二进制编码肯定比 JSON 节省体积,自定义 tcp 协议/HTTP2.0 比 tcp/HTTP1.1 要快)
- RPC 是用的时候连一次,还是连一次后就长连接?(这个被问过好几次,我猜是长连接,有大佬知道吗)
- 输入 URL 到展示的过程
- 这个过程中有没有用到 udp 协议?(DNS)
- 常用的负载均衡软件有哪些
- TCP 和 UDP 的区别
- TCP 为什么是面向连接的(发送之前需要知道目的地址,然后通过三次握手先建立连接,再传输数据)
- TCP 的粘包的概念是对的吗(面试官:TCP 是面向字节流的,所以这个概念本身是一个伪概念,本身就是可以粘的。但是这种现象还是要解决的)
- 存储器的层次结构有哪些(寄存器、L1、L2、L3、内存、外存)
- 代码如何优化来实现局部性
二面 1h
- Java map 和 hash table 的实现?
- 红黑树跟普通平衡二叉树的区别
- map 是并发安全的吗?如何实现并发安全的 map?
- 如果机器性能变差(CPU),如何分析性能问题?(profile,没有用过)
- 进程的内存空间
- google 的 tcmalloc 了解吗?(其实 Golang 的内存管理就是用 tcmalloc 的思想)
- RPC 框架有哪些?不同 rpc 框架的区别?brpc(百度)、grpc 了解吗?
- RPC 有没有可能会用 HTTP 协议?(有,如 grpc 就是 HTTP2.0)
- 网络 I/O 模型
- select 和 epoll 分别适用于哪个场景?如果你有一个单机服务器,大概 100 多个日活,你会用哪个 I/O 模型?
- 实习期间做过的最有成长的工作