字节 新业务 后端 日常实习
这是22年6月初的面经,挂上的有点晚啦~~
字节 一面
- 时间:70分钟
- 自我介绍+设计题+基础+编程
- 设计题:设计微信群(可5000人的群)发/抢红包的功能
- 接上:会涉及到哪些数据库表的修改?
- 接上:你觉得在哪些地方会用得到redis和消息队列?
- 计网:介绍一下七层模型。
- TCP和UDP的应用场景分别是什么?
- HTTP的短连接与长连接
- TCP拥塞控制的慢开始
- 了解网络代理吗?
- 说一下你了解的Linux指令
- 删除文件的时候,rm -rf,为什么要加-rf之类的东西?
- 了解软链接和硬链接吗?
- 杀死进程的指令中,kill -9 pid,为什么要加“-9”才能强制杀死进程?
- 说一下数据库事务的ACID特性。
- 介绍一下悲观锁和乐观锁
- 乐观锁是怎么实现的?
- 数据库加了读锁,还能加写锁吗?
- 数据库如何避免一个事务的写操作对另一个事务的读操作产生影响的?
- 你了解sql语句的“for update”和“share mode”吗?
- 数据库的持久化特性:数据库崩溃是怎么恢复的?
- 编程题:**763 划分字母区间
- 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
- 返回一个表示每个字符串片段的长度的列表。
示例:
输入:S = "ababcbacadefegdehijhklij"
输出:[9,7,8]
解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。
每个字母最多出现在一个片段中。
像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。
提示:
S的长度在[1, 500]之间。
S只包含小写字母 'a' 到 'z' 。
字节二面
- 时间:60分钟
- 自我介绍+基础+编程
- 项目相关——数据库处理失败的订单,如何将redis的库存加回去?
- redis怎么保证库存预减不会有多线程的冲突呢?
- 压力测试1000个线程你是怎么做的?(答的压测软件)如果用代码你怎么写?
- 数据库索引的数据结构是什么?为什么用这个?
- 对数据库表的a,b,c三列分别加索引(不是联合索引),查询条件为a=? AND c=?时,索引使用情况是什么?
- TCP是怎么保证可靠的?
- HTTP的状态码502是什么?
- 你了解哪些加解密算法?
- 说一下你知道的Linux命令
- 什么情况下要用线程池?
- 线程池的类名是什么?
- ConcurrentHashMap的底层原理
- 编程题:**152 乘积最大子数组
字节三面
- 时间:60分钟
- 网络的七层模型?
- TCP和IP协议分别在哪层?
- 传输层和网络层的作用是什么?
- 说一下TCP的滑动窗口
- 你知道哪些Linux命令
- 如何查看某个端口被哪个进程占用?
- 说一下设计模式
- Spring中的Bean默认是单例的吗?什么情况下用到非单例?
- 写一个单例模式
- 说一下有哪些排序算法?
- 给你100万个数(取值范围在1~1亿),如何快速地排序?内存占用多少?
- 说一下synchronized和ReentrantLock的区别
- 什么叫可重入锁?
- 写sql语句:给一个表,有3列(学生id,班级id,学生成绩)
- 求每个班的平均成绩
- 给第一问加两个条件,要求平均成绩大于60,并按照递减顺序排列
- 求每个班的最高成绩的学生记录(学生id,班级id,学生成绩)
- 编程题:**236 二叉树的最近公共祖先