字节后端开发实习三面面经(已过)
1.自我介绍,由于没有高质量的java项目经历,没问项目直接做题
想了5分钟写了10分钟,面试官说有个小问题,自己检查出没考虑random指针为null的问题,然后代码有一点冗余,提示后更改AC
3.两个球,100层楼,每个球在一定高度扔下去会碎,怎么用最少的次数判断几层楼会把球摔碎?https://www.nowcoder.com/questionTerminal/ee242e01c1be4e34853b01ba2264dde3
一开始答的100/x+x-1的最小值,面试官提示还可以优化,纸笔算了一会得出了14次的答案(1+2+……+14>100),面试官说这是动规的思想,让给出状态转移方程,这里卡了大概5分钟面试官给了个提示才做出来
4.单例模式 双重校验锁,为什么需要上两次锁?
5.java有哪些锁?
6.读写锁和互斥锁的区别?
7.如何用互斥锁实现一个读写锁?(这里想了半分钟,面试官说可能有点复杂,就不卡在这了)
8.tcp三次握手四次挥手,time_wait关键字的作用?如果大量出现time_wait怎么处理?(没答出来)
9.操作系统为什么要分为用户态和内核态?
10.进程和线程的区别?如何传输信息?
11.redis的主从复制是如何实现的?
12.看过哪些开源项目的源码?(没咋看过)
13.topk如何实现?(答了类似于快排的分割思想)时间复杂度是多少?用大根堆/小根堆怎么实现?时间复杂度是多少?(这里漏答了建堆的复杂度)
如果用选择排序时间复杂度又是多少?(阿这都忘了选择排序是啥了,跌跌撞撞还是答出来了)可以优化吗?
14.确认实习时长、地点,有实习结束后在字节留用的想法吗?
15.反问(先问了技术栈,之后问了面试表现,面试官没有透露,说结果会由hr通知)
全程1小时3分钟,面试官人很好,全程引导做题,特别是第二题从100层这个特例推广到动态规划,本来以为只是一道智力题,没想到可以用算法推。
最后听说牛客网很神,求个HR面!!!!
HR加微信了!牛客网果然神!!!!!