字节跳动提前批后端两面面经
一面:
1、Java集合类,Hashmap了解么,原理是怎么样的,为什么用红黑树,红黑树有什么特征?如果要线程安全的hashmap该怎么办?(这个问题基本上问的很普遍了)
2、java内存机制了解过吗?Minorgc和fullgc区别,Majorgc呢?什么时候发生?Minorgc发生在哪个地方?
3、tcp三次握手过程(我把所有的细节参数都说了个遍)
4、输入url整个过程是怎么样的(把dns整个细节以及tcp、ARP协议、http都说了细节)
5、状态码401,403
6、spring生命周期(servlet生命周期以及bean都说的很细)
7、输入url到spring后端整个流程是怎么样的?
8、java锁机制,乐观锁和同步锁,cas原理,volatile原理。
9、写个算法吧快排(10分钟写好)
10、数据库查询语句,多表查询
11、数据库mysql索引最左匹配原则(他写了一个sql语句问这样索引有没有效。
12spring和springboot区别
13再写个算法吧,判断是否是二叉搜索树(第一遍5分钟用递归写出来了,他说有一种情况不能满足,好吧,我用中序非递归中判断是否有序再写一遍。一遍过了)
14你的项目具体描述一下,使用了什么架构,分布式用了哪些技术,数据库用了什么,主要业务实现了什么功能。
总的来说一面我都答得很详细,很多问题他只是提了一下,我把很多衍生出的东西也说了,然后他再没问过我相似的问题。(总之一面时间不到一小时两道算法,还有数据库操作的题目,聊了聊项目和一些基础问题。都是很常见的问题却也算是中规中矩了。)
2面
一面完5分钟后直接二面
我不知道二面面试官是不是看得到一面的记录,上来就问我算法
1、写个算法吧,打家劫舍(leetcode原题,相邻的村庄不能一起抢劫)想了想,写了个状态转移方程,然后他说可以,直接写代码吧,一遍写过哈,我心想是不是二面能看到一面的记录啊,怎么上来要求这么高,别人的面经都说会引导,不会很严格。)10分钟后代码写出来了,没问题跑过了。
2继续写个算法吧,什么?我电脑死机了,能听到面试官说话,鼠标动不了,然后和面试官说了一下,重启了一下电脑,继续面。第二道算法比之前的难一点了
第一反应用o(n)空间o(n)时间hashmap做出来,后面他说不行加上了时间复杂度和空间复杂度。后面我用长度为k的hashmap做出来了,他说还不是最优,然后我说那我回去再想想。
3、再做个数据库的题目吧,设计一个表实现今日头条点赞功能。我不得不说掉陷阱了,以后是个数据库的题目,加外健什么的。他也没说什么,也没提示我,最后一起说你这样设计,完全不好,然后我才反应过来他的意思,我说用redis做缓存,再用MQ做削峰,异步,他说你怎么不早说呢?我?what?
4时间还有,再写一道算法吧,收到礼物最大值(应该是剑指offer原题)好了10分钟写完
面试官说今天的面试到这里吧。,我说我有些问题要问你(我心想面试流程不都是会说你有什么要问我的嘛?)也不管那么多了,我问他第二个算法题你的最优解是怎么样的?他说你回去自己网上搜吧,很多的......(这么不友好的嘛?我只是想表现的比较虚心想交流一下而已)那我还有一个问题,你对我的评价如何,有什么建议给我嘛?我问他我感觉我数据库设计表现的不好,我是不是表现的很菜(我心想谦虚一点让人家给点意见)他说还好吧,也没多说什么,然后我问他三面什么时候,我还有三面嘛?他说三面要看情况,看三面面试官有没有时间,然后看综合的评价再做决定。(回去后找内推的同学问了状态,他说我还在面试中应该还有戏)本来想着面完能好好放松一下,结果又给了点希望,那就再等等吧,结果第二天收到了拒信。
二面我的感受是,二面一点基础没有问,全程都是实操题目,看我算法写的快一直出题目,最后我想说,程序员还是少点戏吧,人家都不耐烦要走了,我还留着他让他看我演戏,结果死于话多,哎。我也是看剑指offer人家说提问该怎么问的啊,心塞。我是数据平台后端岗位,两轮面试写了5道算法,我算是写了4道半吧。第一面感觉很好,很均衡,二面完全不按照正常套路来,一点基础和别的都没问,你哪怕直接问我redis,Zookeeper,分布式算法也行啊,我准备了一个半月朝着头条常有的模式去准备,然后和想象中完全不一样,以后字节跳动看算法,算法写得好就可以了。最后hr帮我问的结果是
好吧,我算法还是很菜........
#字节跳动##Java工程师##面经##校招#