字节后端日常实习一二三面和HR面面经(已OC)
字节一面 5.5 55min
1.这个论坛是你一个人做的吗
2.我看你项目部署到腾讯云上,文件图片又上传到阿里云oss,是有出于什么特别的考虑吗
3.你做的这个论坛是有人在使用吗
4.你当时做这个技术选了springboot的原因是什么,为什么没用spring mvc、spring cloud,是出于什么考虑吗
5.为什么选mybatis,能说下用它的原因。
6.操作数据库除了用mybatis还可以用别的吗,mybatis是怎么实现的,mybatis相对jdbc有什么优势
7.这个spring security权限控制是怎么做的。
8.项目这个登录是怎么做的
9.你这个token在网络中传输的时候,抓包抓到你这个token,然后伪造这个token登录这个你有考虑过吗
10.你用这个kafka这个异步消息消息系统是做了什么。
11.写题
121. 买卖股票的最佳时机
122. 买卖股票的最佳时机 II
3. 无重复字符的最长子串
12.你能介绍下你在写一个Java程序和一个C++程序在编译的时候有什么区别吗
13.你写一段C/C++程序是怎么编译的,在Linux环境下
14.你做这个项目有遇到过性能相关的问题吗
15.你对redis有什么了解吗
16.说一下Redis的持久化
17.RDB和AOF一般都用到什么场景下
18.当redis内存快满了,这个时候还有大量写入会发生什么问题
(说了下内存淘汰机制)
19.redis设置一个过期时间底层是怎么实现的
(说了下数据字典、过期删除策略)
20.你在开发这个社区论坛过程中有做过一些性能分析或者压力测试方面的吗
21.你对MySQL有了解吗,你对MySQL的索引、常见存储引擎有什么理解。MySQL为什么需要索引。
22.我现在执行了一条sql查询,比我预期的要慢一些,这个你有什么排查手段。
(这里说了下可能是查询字段没设置索引)
23.那你怎么来判断它有没有设置索引
(说了个explan命令)
24.那你用explain之后,返回的一些结果知道怎么看吗
(不会)
反问
1.想进字节跳动实习,应该加强哪方面的学习
字节二面 5.10 60min
无自我介绍
1.你这论坛什么时候做的,介绍一下这个项目
2.你这项目你觉得有挑战性得地方
3.redis+token的登录过程
4.token被攻击者抓包抓到怎么办
(一面问了没答上来,二面果然又问了 说了下CSRF攻击,然后结合spring security说了下解决方案)
5.http结构,http请求行有哪些 请求头有哪些字段,作用
6.get和post的区别
7.https如何加密的,证书颁发机构CA,认证过程详细说下
8.https的ssl协议要几次握手,简单说下
9.https既然要ssl四次握手,你说开销比较大,那你考虑过https可以怎样去优化吗
10.Java集合用过哪些,ArrayList底层实现,和LinkedList区别
11.hashmap底层实现,1.7和1.8分别说说。说一下插入元素的过程。有哪些安全问题。说下hashmap的扩容过程。
12.hashmap中的key如果使用自定义的类需要注意什么。你在项目中用过自定义的类作为hashmap的key吗
13.使用自定义的类除了你说的要重写hashcode和equals方法外还要重写什么
14.项目还有哪些用到了这种key-value结构的数据类型
(说了redis 然后就开始问redis了)
15.redis中的hash的底层实现。
16.说下redis的hash中的渐进式扩容,为啥redis的rehash采用渐进式,而hashmap是一次性rehash。
17.redis的hash渐进式扩容的触发条件
18.项目中用hyperloglog做了什么,底层实现。
19.出了两道sql题
(不知道写没写对,面试官也没说啥)
20.说下sql语句几个关键字的执行顺序
21.给了两条sql语句,说下他们查询的区别
id是主键情况说下他们的区别;如果给name字段也加索引呢?
select * from student where id=‘101’ select * from student where name='张三'
22.项目的MySQL用的什么存储引擎,什么隔离级别,为啥选这个。
23.算法题
先说下有几种方法。先用手写堆写了下,因为堆比较熟悉,很快写出来了。然后再让我用快排写,快排写完有bug,本来想在本地ide调试,但面试管说不用了,他检查下。最后说了下我思路没问题就结束了。问我快排方法的时间复杂度,这个我直记得是O(N),就说了下,然后面试官问为啥是O(N),没答上来,记得算法导论上有推导,好像比较麻烦。
没有反问
字节三面 5.12 45min
public class Main{ public static int fun(int n){ int[] dp = new int[n+1]; dp[1]=1000;dp[2]=1000; for(int i=3;i<=n;i++){ dp[i]=Math.min(dp[i-3],Math.min(i>=4?dp[i-4]:0,i>=5?dp[i-5]:0))+1; } return dp[n]; } public static void main(String[] args) { Scanner input = new Scanner(System.in); int n; n=input.nextInt(); System.out.println(fun(n)); } }
1.JWT你了解吗
2.Redis怎么做持久化的
3.MySQL事务是如何实现的
4.说下MVCC机制
5.不小心删了一条数据怎么恢复。
6.HTTP的keep alive和TCP的keep alive有什么区别
7.TCP拥塞控制方法
8.比如我现在有A,B两个网站,分别都是属于同一家公司的关联服务,我在其中一个网站登录以后,然后再访问另一个网站就能自动登录,请问怎么做。
9.现在有一个绳子,材质不均匀,从头烧到尾要一个小时,我给你若干条绳子,你怎么帮我烧成一个小时十五分钟。
-
先拿出两个绳子第一个绳子从一头点火,第二个绳子从两头同时开始点火(也就是需要烧半个小时)
-
在第二根绳子烧完后,第一个绳子还剩下一半没烧,此时在它另一头点火,直到烧没此时经过30+15=45分钟
-
在第上一根绳子刚好烧完之后在第三根绳子两头点火,也就是45+30 = 75分钟计时一个小时十五分钟
10.四个药罐子,其中一个受到污染了,重6g,另外的重5g,如何称一次将其找出。
11.四点二十 时针和分针的夹角
11.一道sql题,有点复杂,不知道写没写对。写完面试官让说了下思路和执行顺序。
12.能实习实习多久,北京可能只能实习几个月,因为后面要去杭州读研。如果给你调到上海能长期实习吗
13.反问
HR面 5.18 25min
1.面试官自我介绍
2.我自我介绍
3.为啥转专业
4.看你保研了成绩还不错,那当时转专业后是怎么学新专业的。
5.最困难的一段时间
6.平时小组大作业怎么分工
7.优缺点
8.了解字节这边的工作节奏
(我说10点前下班就行,面试官笑了 说我要求挺低)
9.还有在面其他公司吗,如果字节给你发offer还会面其他公司吗
10.未来规划
11.可以尽快入职吗,可以实习多久