面试复盘|字节跳动三轮面试总结

面试复盘|字节跳动三轮面试总结

双非本科艰难求职,昨天终于面完了三面,晚上hr说我过了,写一篇总结一下三轮面试,摘要一些难点。
最近也会把我秋招的复习笔记整理出来,都是面试中遇到的问题。
因为项目每个人写的都不一样,所以我不描述自己的项目相关问题了。

一面20210722

  1. 分库分表?
    这是今年比较常考的问题,他这个时候问我我还不会呢,不过每家都问,我也不能一直不会。
    简单说一下:垂直拆分,按照列拆分。水平拆分,根据id取模,时间,地点分表。
    xdm可以在评论区补充一下这个问题。
  2. time_wait过多怎么办,可不可以不要time_wait。
    我觉得面试官想要的可能是这个答案:timewait快速回收和重用。快速回收:通过修改参数启用快速回收,此时timewait只有一个rto的时间。重用有两个条件,1.新连接的初始序列号比TW老连接的末序列号大。2.如果使用了时间戳,那么新到来的连接的时间戳比老连接的时间戳大。并且同一个ip和端口号的才能重用。
  3. redis的持久化策略。
    这个很常考。我主要从这几个方面说,rdb和aof都是什么,都有哪些策略,是否阻塞主进程,aof的重写,实际使用时怎么用(aof和rdb混合使用)。
  4. 先递增再递减的数组,查出不重复数字的个数。

一面面经,https://www.nowcoder.com/discuss/689084。

二面20210806

  1. 你知道synchronized吗,介绍一下他的原理。
    我就喜欢这样宽泛的问题,这样我就可以源源不断的扯了。首先说个锁升级,这中间就涉及到自旋锁,markword这些东西;然后带出来reentrantlock,说一下reentrantlock的构成和两者的对比,深入到aqs源码级别;然后时两者的wait和notify机制的不同和具体的实现,对于aqs就说一下condition的实现。整个一套组合拳打完,五分钟没问题。
  2. 线程池。
    从线程池的调度入手,解释七个参数分别对应着什么。这个因为我的项目中用到了,所以几乎每一家都会问,背烂了。
  3. 进程和线程的区别,进程间通信方式。
    常考问题。
  4. hashmap的原理,红黑树按照什么排序的?
    主要说一下第二个问题,如果key实现了compareable接口,那可以利用compare排序;如果没有实现接口,根据类名字排序;类名字一样就按照hashcode排序。
  5. 算法:k个一组反转链表,但是要求从后向前k个一组的反转。

二面面经:https://www.nowcoder.com/discuss/699799。

三面20210824

  1. c和Java的区别?
    我自己主动提出了内存泄漏,c语言很容易内存泄漏,Java并不会,因为垃圾收集了,但是也会存在这种情况,比如threadlocal。
    但是我根本不理解c语言的内存泄漏是什么,我只好说一下threadlocal为什么内存泄漏。
  2. 归并排序的空间复杂度为什么On,为什么稳定?
    对于空间复杂度,我说因为每次只开辟一个新的临时数组,用完就释放了,所以最后是On。
    面试官:那你这么说,这个空间复杂度和你使用的语言有关,Java和c还不一样?
    我:。。。。
    对于稳定性,我觉得和写的归并算法有关,然后描述了一遍代码逻辑。
  3. 智力题,nim博弈。算法:90°旋转二维数组。

三面面经:https://www.nowcoder.com/discuss/718027

总结提问

  1. 归并排序的空间复杂度到底怎么说?
    我上极客时间查了一下,原文是这样的:

    实际上,递归代码的空间复杂度并不能像时间复杂度那样累加。刚刚我们忘记了最重要的一点,那就是,尽管每次合并操作都需要申请额外的内存空间,但在合并完成之后,临时开辟的内存空间就被释放掉了。在任意时刻,CPU 只会有一个函数在执行,也就只会有一个临时的内存空间在使用。临时内存空间最大也不会超过 n 个数据的大小,所以空间复杂度是 O(n)。

    确实是释放了,我知道Java自动收集了,但是c语言难道需要主动释放?应该也不是吧?

  2. 分库分表怎么答好一些,实际操作中需要注意哪些点?
    这个我只能零散说几句,这套组合拳怎么打

#面试复盘##面经##字节跳动##校招##Java工程师#
全部评论
真简单
4 回复
分享
发布于 2021-08-25 08:54
大佬,太强了
3 回复
分享
发布于 2021-08-25 08:35
博乐游戏
校招火热招聘中
官网直投
恭喜同学加入字节大家庭~感谢干货分享哦
3 回复
分享
发布于 2021-08-25 14:58
我二面被怼了两个小时怼傻了。感觉楼主问的好简单啊😆
2 回复
分享
发布于 2021-08-25 10:13
归并需要申请一个额外的大小为n的数组辅助所以On
点赞 回复
分享
发布于 2021-08-25 09:32
lz,哪个部门,可以说一下吗
点赞 回复
分享
发布于 2021-08-25 09:40
面试过了啥时候拿offer啊
点赞 回复
分享
发布于 2021-08-25 11:23
感谢分享
点赞 回复
分享
发布于 2021-08-25 11:23
C语言需要主动释放,malloc申请,free释放
点赞 回复
分享
发布于 2021-08-25 11:32
沾沾喜气
点赞 回复
分享
发布于 2021-08-25 11:51
沾沾喜气~ 
点赞 回复
分享
发布于 2021-08-25 14:58
C语言要释放内存,比如一个长度为10的字符数组,转换为长度为5的字符数组的时候,剩下的五个单位的内存空间需要手动释放,不然就会导致内存泄露,同理长度变为15的时候,如果不申请空间,就会导致内存溢出,C全部都需要手动进行内存的释放和申请
点赞 回复
分享
发布于 2021-08-25 15:08
楼主想听听你synchronized那一套组合拳,感觉自己回答的很单薄
点赞 回复
分享
发布于 2021-08-25 17:08
好厉害啊,冲冲冲
点赞 回复
分享
发布于 2021-08-25 18:12
tql
点赞 回复
分享
发布于 2021-08-25 18:16
恭喜,😂
点赞 回复
分享
发布于 2021-08-25 18:51
这个太专业了..
点赞 回复
分享
发布于 2021-08-25 19:46
恭喜大佬,希望我也可以拿到一份offer
点赞 回复
分享
发布于 2021-08-25 20:59
沾沾喜气,19号三面结束,许愿意向书
点赞 回复
分享
发布于 2021-08-25 21:11

相关推荐

41 277 评论
分享
牛客网
牛客企业服务