字节跳动后端一面凉经
《面试题目》
- 项目拷打
- MySQL相关:最左匹配原则、索引原理、事务机制及项目中的应用场景
- 网络协议:HTTPS原理、三次握手与四次挥手、TCP与UDP区别、拥塞控制原理
- Java基础:设计模式及应用、锁机制、HashMap底层实现
- 软件工程:SOLID原则
- 数据结构:常见数据结构分类
- 手撕代码:无重复字符的最长子串
《参考解析》
1. 最左匹配原则:在使用联合索引时,检索数据从索引的最左列开始匹配,若中间跳过某列,后续列将无法利用索引。建议查询条件紧跟索引定义顺序。
2. 三次握手与四次挥手:三次握手确保客户端与服务端均具备发送与接收能力;四次挥手是因为TCP全双工特性,被动关闭方需要时间处理剩余数据后再发送FIN包。
3. TCP拥塞控制:通过慢启动、拥塞避免、快重传和快恢复算法,动态调整发送窗口大小,防止网络拥塞导致的丢包。
4. HashMap底层:JDK 1.8采用数组+链表+红黑树实现。链表长度超过8且数组长度大于64时转红黑树,有效降低冲突查找时间复杂度至O(log n)。
5. SOLID原则:核心包括单一职责(SRP)、开闭原则(OCP)、里氏替换(LSP)、接口隔离(ISP)和依赖倒置(DIP),旨在提升代码可维护性与扩展性。