字节跳动商业化,后端一二三面面经,凉经
一面 7.22 45min
- 网络五层结构
- 路由器如何进行路由
- 为什么三次握手,四次挥手
- 进程和线程区别
- 如何避免死锁
- 可重入锁了解吗
- 函数调用时堆栈的变化
- 聚集索引和非聚集索引
- 事务和 MVCC
- LRU(说了LinkedHashMap的实现)
- Redis为什么快,为什么不需要多线程
- 终端执行过程时 ctrl + c 发生了什么
算法题:
- 词翻转: i am a cat -> cat a am i,O(1)空间复杂度
二面 8.2 50min
面试官先介绍了团队主要做什么
- 项目问题
- 为什么选择rabbitmq,代码实现 mq 中的消息模型的设计
- 代码:实现Queue
- 算法:字符串,打印没有重复字符的最长子串
- 代理模式:A是一个方法:A封装了代理B,扩展 一个 日志的功能,打印入参和返回值; 实现这个B;
- JVM 内存模型,内存回收策略,回收不了的对象
三面 8.4 49min
- 终端运行程序 ctrl + c 发生了什么
- cpu 调度的基本单元
- 进程调度策略
- IO模型,BIO 和 AIO 应用场景
- shell编程思路:结束使用指定端口的进程
- gc 调优工具
- 线程池参数,BlockingQueue有哪几种,ArrayBlockingQueue 和 LinkedBlockingQueue 的区别
- Future 有什么用,什么时候使用
- SpringBoot 里的 aop 了解吗
- 介绍一下 bin log,三种模式
- 三范式
- rabbitmq 在项目里的作用,为什么选择rabbitmq,怎么部署的
算法题:给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入、删除和替换一个字符的代价,请输出将str1编辑成str2的最小代价。
字节三次面试体验都很好,反问环节面试官会给建议,指出不足,一二面结果出的也快,点赞。