字节跳动深圳后端开发,一二三面面经,已意向书
一面(50min)
1、项目
2、TCP三次握手的过程
3、为什么要进行第三次握手
4、操作系统为什么要设置虚拟内存,主要用于解决什么问题
5、不用虚拟内存直接用物理内存效率是不是更高
6、100万高考考生,对其进行语文成绩的排名
7、快排及其优化
8、Redis持久化方式
9、算法题1
数组里每个数字表示在当前位置能跳的最远距离,求最左边跳到最右边的最小跳跃次数。比如[3,5,1,4,1,2,3,6,1,1,1,1
10、算法题2
输出二叉树指定层级的节点值 in:(TreeNode *root, int level)
二面(60m)(没有录音,凭记忆记录)
1、三次握手
2、Time-Wait和Close-Wait
3、TCP拥塞控制
4、快重传
5、共享内存怎么实现
6、copy-on-write
7、CAS
8、MVCC快照实现原理
9、Redis数据结构
10、跳表数据结构、时间空间复杂度
11、rehash实现
12、redis持久化
13、算法题
链表调整,若输入链表为:1 -> 2 -> 3 -> ... -> n-1 -> n -> null,
调整后为:1 -> n -> 2 -> n-1 -> 3 -> ... -> null
三面(90min)
1、项目
2、算法题1
二叉树结点的最低公共祖先
3、介绍一下Thrift
4、Thrift、Protobuf、json的关系
5、描述一下大根堆和小根堆
6、大小根堆为什么必须是完全二叉树
7、算法题2
数组转为大顶堆(有比递归效率更高的方法?)
8、各个排序算法及其时间空间复杂度及其实现原理
9、算法题3
快排实现
10、最近半年看过什么技术类的书籍
11、为什么JVM有那么多的实现
12、算法题4
用定长数组实现一个队列,有push、pop、isEmpty操作,写成一个类,构造函数的入参是队列的大小。时空复杂度尽可能低。
0818收到意向书
#面经##校招##字节跳动##Java工程师#