记一次字节跳动后端实习的面经
一面
算法题:
给定一个数组,求数组中第二大的值
例子1: nuns[1,2,3,4,5] 返回4
例子2: nums[1,2,3,5,5] 返回3
- GC垃圾收集器
- GC收集算法
- TCP的四次挥手
- 为什么不是三次,为什么不是五次
- Java有哪些锁机制
- volatile的含义
- 如何实现静止指令优化重排
- 多线程默认如何修改共享的变量
- 阻塞队列有哪几种
- 死锁的原因,必要条件及解除方式
- Java的四种引用
- Http1.0,1.1,2.0的差别
二面
算法题:
一群人围成一个圈,依次1,2,3报数,数到3的人出列,求最后出列的那个人的编号
- Java中的容器
- 安全的容器
- hashmap的底层实现
- 线程池的七大参数
- 线程池何时创建非核心线程
- 核心线程会销毁吗
- 静态内部类与普通内部类的差别
- 单例的实现
- 单例内部类这种实现方式的优势
- IO多路复用
三面
算法题:
一片空地,画了N个连续的方格,每个方格上随机填上了一个数字,大家从第一个格子开始,每次可以向后跳不超过当前格子上的数的步数,大家开始就此比赛,看谁跳到最后一个格子的步数最少。
- tcp的三次握手
- 网络的请求报文格式
- 网络的回答报文格式
- 常见的返回码及含义
- HTTP2.0的头部压缩如何实现
- 聊天相关
四面
算法题:
给一个二叉树和n。求第n行的结点个数
- 怼项目
- 网络的分层
- 一个数据包从应用层开始,每一层做些什么操作
- 传输层会分包吗
- 网络层的协议
- 传输层的协议
- 聚簇索引是什么
- linux的IO多路复用
- 最左匹配原则
- 一个SQL题:
一个表中有:id,student_id,score,class_id。求总分最高的十个
- HTTP2.0的服务器推送的方式