字节22届实习一、二、三面(已 offer)
一面
1.自我介绍
2.能实习多久
3.对前端的了解,部门要写点前端(说了解 HTML + CSS + JS + JQuery)
4.了解 VUE 吗(不了解)
5.之前实习做的是纯后端吗(对)
6.JDK1.8 新特性(stream、lambda 表达式、接口 default 方法)
7.具体说下 lambda 表达式(不知道什么意思,我就说了下怎么写)
8.HashMap put 实现(八股文)
9.JDK1.8前后 HashMap 有什么改动(八股文)
10.HTTP 和 HTTPS 的区别(八股文)
11.HTTP 和 HTTPS 的默认端口sm (80 和 443)(八股文)
12.TCP 和 UDP 的区别(八股文)
13.DNS 协议(八股文)
14.平时用过什么数据库(只敢说 MySQL)
15.了解过 Redis 吗
16.介绍下 MySQL 的索引(八股文)
17.在什么情况下不适合加索引(频繁改动和删除的数据、数据量小、区分度小的字段(比如性别))
18.索引失效的情况(不满足最左前缀原则、where 后面不能用函数)
19.Redis 数据类型(八股文)
20.Spring、SpringMVC、SpringBoot 区别(八股文)
21.在第二个项目中做了什么
22.项目中前端部分你做了哪些(没有做过,我是纯后端)
23.项目中与钉钉的交互逻辑(说了个大概,不是我实现的)
24.共享屏幕用 IDE 写代码:写一个 POST 接口,输入参数为一个数组,返回倒序结果,postman 调用,15分钟。具体实现用了快排,逻辑没有问题,请求的时候一直请求不过来,调了几分钟还是没用。面试官直接说要去开会,没时间了,一面过了,二面会有 hr 联系你。
感谢面试官不杀之恩!
二面
1.算法题
- 求序列是否有循环依赖,比如 [[A, B], [B, C], [C, A]],A->B->C->A,就有循环依赖。(面试官看我不会就说可以换题)
- 大数加法,36 进制,'0' - '9' 为阿拉伯数字 0 - 9,'a' - 'z' 为阿拉伯数字 10 - 35。(AC)
2.说下 TCP 3 次握手 4 次挥手。
- 服务端发送 FIN(第二次 FIN) 报文前要等待多长时间(等数据处理完就会发送 FIN 报文了)
- 是网络层的数据处理完,还是应用层的数据处理完呢(看具体情况,如果是 HTTP 请求的话就是应用层数据处理完;如果是基于 TCP 编码的话就是传输层数据处理完)
3.Redis 使用场景是什么(只敢说缓存,说了下缓存的应用场景)
- 缓存更新机制是怎么设计的
答:一开始是先删除再更新,这种情况会有读写并发脏数据的问题。吹了一波牛逼,说怎么排查到这种错误
的,排查后使用先删除再更新再删除的策略。第一次的删除可以避免 Redis 宕机导致脏数据的问题,后面先
更新再删除可以避免读写并发脏数据的问题。
- 你这种策略还有什么问题(目前还没有碰到过)
4.排查一个问题:前端请求接口无响应
答:1.先看 nginx 和后端服务是否挂掉。
2.如果没有挂掉,看后端日志,根据日志异常排错。
3.如果根据日志没有找出问题,就本地复现。
5.有什么要问我的
- 我感觉这次发挥不太好,你对我有什么建议吗?
答:我觉得还好啊,你可能对自己期望比较高吧,哈哈哈。
- 下一轮还是技术面吗
答:不清楚
- 最快什么时候可以得到回复
答:会很快,字节效率很高的
三面
1.自我介绍
2.讲下 GC(八股文)
3.介绍下 SpringSecurity
- 看过它的源码吗(没有)
4.Redis 数据结构(八股文)
5.介绍下 HashTable(八股文)
6.熟悉 Nginx 吗(负载均衡、反向代理)
7.了解 oAuth2.0 吗(不了解)
8.HashMap 和 ConcurrentHashMap 的区别(八股文)
9.Redis 主从复制(不了解)
10.容器了解吗(说了下 Docker 的概念和几种操作)
- 容器实例之间数据怎么做隔离的(不了解)
11.了解飞书吗
12.职业生涯怎么规划的
13.介绍了下部门干什么的
14.能不能暑期入职(不能)
15.有转正的机会吗(特别优秀的同学会考虑转正,几率比较小(我怀疑就是没有))
16.最快什么时候能得到回复呢(本周)
17.你还有其他的 offer 吗