首页 > 面试复盘|字节跳动三轮面试总结
头像
peonyX
编辑于 2021-08-25 18:29
+ 关注

面试复盘|字节跳动三轮面试总结 内部员工回复

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

双非本科艰难求职,昨天终于面完了三面,晚上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. 分库分表怎么答好一些,实际操作中需要注意哪些点?
    这个我只能零散说几句,这套组合拳怎么打

更多模拟面试

全部评论

(34) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐