字节跳动深圳后端开发实习生面经(四面+hr面 已offer)
一面(45min)
-
自我介绍,项目问题
-
联合索引是什么,叶子节点存储的是什么,索引下推
-
数据库ACID是什么,原子性如何实现,undo log是什么
-
CAS操作,底层原理是什么
-
数据库持久性如何实现,redo log的写入机制
-
平衡二叉树和红黑树的区别
-
redis的五种数据类型
-
跳表的结构,一个值在跳表中存几次
-
写一个SQL语句,group by的
-
最长回文子串
-
分析题:连续抛掷硬币,直到最近三次硬币抛掷结果是“正反反”或者“反反正”。如果是前者A获胜;如果是后者B获胜。这个游戏公平吗?
二面(1h)
-
自我介绍
-
TCP建立后,影响传输速率的因素
-
syn flood
-
TCP/IP四层结构 传输层为什么需要端口号
-
拥塞控制
-
传输层使用UDP协议,应用层不同长度的报文到传输层会怎样
-
Nagle算法
-
redis数据持久化 RDB和AOF的区别
-
redis的kv对是如何删除的
-
场景题:统计当前活跃的用户数量 bitmap
-
算法题:Leetcode567
三面(50min)
-
自我介绍
-
数据库四种隔离级别,如何查看隔离级别
-
悲观锁和乐观锁
-
undo log和redo log的区别
-
进程和线程的区别 结合linux
-
如何顺序访问磁盘,如何实现
-
WAL, LSM TREE了解吗(不知道)
-
HashMap和HashTable的区别 线程安全
-
HashMap的底层实现
-
synchronize的原理
-
volatile的原理
-
指令重排序,happens-before原则,volatile如何防止指令重排序(了解到不深,面试官没有深入问了)
-
堆排序的实现,建堆的时间复杂度
-
树的遍历方式,层序遍历
-
Leetcode279 完全平方数
-
给定数据表T,字段,id, name, sex,age,city,查询:男性平均年龄最大的前三个城市,和该城市的平均年龄
四面(1h)
-
自我介绍,项目问题 restful风格接口 密码加盐
-
场景题:两台机器,需要传输大批量的小文件,在网络状况不好的情况下如何设计 从底层谈谈如何建立连接
-
如果使用UDP协议,如何保证可靠
-
fork()函数相关:子进程会复制什么数据 子进程和父进程需要写同一个文件怎么办 子进程会复制父进程的文件描述符吗(这几个问题答的不好)
-
智力题:两人轮流取石头,一次性只能拿一个或者拿两个,拿到最后一个石头即可获胜。先手什么情况下能赢(石头数不为3的倍数则先手赢)
-
整数开平方,精确到四位小数
-
建堆的时间复杂度(上次答错了,这次详细讲了一下)
-
算法题:锯齿遍历二叉树
-
算法题(说思路):
-
mxn矩阵,没有障碍,从左上角到右下角的方法数
-
mxn矩阵,可能有障碍,从左上角到右下角的方法数
-
mxn矩阵,玩家有一个初始血量,每个格子可能加一滴血或者减一滴血或者不掉血,问是否可以从左上角走到右下角
-