字节跳动后端实习面试
字节跳动后端实习面试
前言
华东师范大学大四,之前大三下在字节实习过两个月,后来辞职考研,准备三个月后意外保研。现在打算找个实习学习技术,累计经验。顺便找点小钱准备毕业旅行。耗时大概一周,已收到Hr通知
一面
1.自我介绍
2.问了下我大三上做的一个Spring项目,提到了评论表的设计。
3.问我之前在字节实习的项目,做的一个限流器。(答得有点拉,因为当初设计得也不算很好,自己也没有针对项目很好准备)
4.java线程池参数,作用
5.java工作队列满了,活动线程数还没达到最大线程数,此时提交一个任务,执行哪个任务?
6.当空闲线程超时后会销毁,销毁哪些线程?
7.采用自增ID和UUID的区别?
会导致行移动,磁盘IO更多,还可能导致页分裂。
算法题
Z字形打印满二叉树(力扣第103题)
我没做过这道题,刚开始说层序遍历,偶数层保存下来然后逆序输出。面试官提示是满二叉树,并且可以用数组存储。我就想到了2k和2k+1的性质,所以改为了遍历层数,找到偶数层,然后每层个数为2^{k-1},调换该层顺序就行了。
一面是个小哥哥,感觉人很和善,也很帅hhh
二面
1.自我介绍
2.熔断器如何设计?
我说我了解的是一个自动机,怎么巴拉巴拉。。。
3.限流器里面针对不同维度的阈值如何动态设定?
扯到了拥塞控制算法那里去,可以借用拥塞控制算法的机制去试探下游的调度能力。
4.之前在字节的管理项目有哪些功能上的优化?
啊这。。。才进去第2天就让我做这个管理系统的项目,只是听学长的话这么做,没有想过为啥😂。这是我上次的缺点,我这次一定改。
5.Go的调度模型
6.GMP和MP的区别,优势
7.redis数据结构
8.redis分布式锁如何实现
9.rdb和aof的使用场景
算法题
三面
1.自我介绍,一二面结束后又写了遍自我介绍😂
2.问第一个项目的时候问到了SpringBoot的启动原理,AOP
3.介绍第二个限流器的项目,经过之前的教训,下来我自己想了一些可以优化的地方,我觉得这点很重要。因为面试官一般都会问你哪些地方如果xxx会怎样,该怎么解决。你可以自己提前去思考这些问题,刚好我自己想的几个优化点面试官都问到了😂
4.介绍第三个项目,暑假在家里学习RPC的时候在牛客网上找的一个JAVA实现RPC的项目,真的超牛逼那个项目,用到了动态代理,反射,netty,自定义协议等等等等。反正我觉得学完之后真的帮助我对RPC有了更深一层的理解
5.数据库慢查询如何优化?
把我知道的都扯出来了hhhh,刚好面试前把explain的type字段都记了下来。
算法题
求一个数组的所有子数组,其和为一个定值。用的回溯法,这道题没做过,当时也没想到更优解。做的比较慢,主要是回溯时边界出错了,导致答案差一些结果。面试官说再给10分钟能做出来吗,我说可以,最后还是做出来了,胆大命大哈哈哈哈。