回馈牛友(字节一面、二面、三面、hr面,已oc)
本来打算抱着投一投的想法,结果字节把我这个废物看上了,真是运气爆炸了。(第一次发帖,牛友不喜勿喷)
部门:后端开发实习生-电商商家与运营(暑假实习),应该要转go
学历:四非本,211硕
base:北京
一面(03.04,50分钟左右)
自我介绍(有点紧张):尽量放慢语速,然把字吐清楚
多级缓存保证缓存一致性:
保证mysql 和 redis 一致性(讲了讲事务性消息,以及消息重复,以及各种宕机的情况分析)
事务性消息怎么做的(两阶段检测,其实没啥问题,讲了讲怎么用的)
操作系统的进程通信(有点瞎说,尴尬了,没准备好):信号量,消息队列,共享内存,socket
讲一讲虚拟内存
内存淘汰策略:交换空间的淘汰策略
线程安全的HashMap(concurentHashMap:这个没讲好,他可能想听 CAS 那一块)
Java 的内存模型(内存区域):元空间搞错了(就是单独的空间,忘掉了)
事务(ACID),然后自己讲一讲事务(***了)
单例模式(需要加volatile 的双重检测)
最长公共字符串(暴力了,没用dp)
总结:
- 操作系统把我害得死死的,完全没办法搞,然后jvm 又答错了一部分,ConcurrentHashMap 又答的逻辑不清晰,属实不好搞
- 写题,能够暴力就暴力吧,对于复杂度没有具体要求。
二面(03.11,50分钟左右)
- 最左匹配原则:具体构建B+树是什么样子的(辅助索引),拿个两字段举例
- 讲一下联合索引怎么结构,节点存放的什么,怎么构建的(结构:叶子结点存的内容)(最好拿到)
- 间隙锁(讲间隙锁作用 + 分情况讨论,命中,不命中,聚集,非聚集,范围)
- 接雨水(middle)+ 讲解思路
- 排序算法的稳定性(讲了一下稳定性)
- redis(底层结构)
- 缓存穿透,缓存雪崩
- 分布式锁(讲解,互斥信号量 + 中央缓存)
- 场景题:redis 集群情况下,A 加分布式锁,但是当主节点master突然挂掉(然后没有同步成功),B 节点加分布式锁任然能够成功(应该怎解决这个问题)
三面(03.16,50分钟左右)
- 讲一讲自己项目中最突出的点,最难的点,然后怎么解决的(这块突然不知道怎么说,就是说了一下自己算法比较多的项目,然后讲了讲怎么复现,怎么设计的,但是没get到面试官的点)
- 然后面试官说讲讲自己的学得最好的部分(我说了MySQL)
- 讲一讲聚集索引和非聚集索引
- 问题加深(默认的mysql 都是按照,主键递增插入,那假设不按照递增插入,例如 1 7 9 3 6 5)这种为什么会影响性能(我从叶子几点加载到内存,然后插入中间会导致位置的移动 和 b+ 树的分裂来进行回答(面试官说是由于分裂造成,后面一想确实是分裂了,因为中间的满叶子节点,必然会分裂))
- 讲一讲事务的隔离级别(四个隔离级别,然后讲了将锁的设计)
- 讲一讲 B + 树, B 树, 红黑树的区别(红黑树,直接说不会,B+树 和B 树,就从引擎层面答)
- 顺带自己讲了将间隙锁的各种情况
- 讲一讲网络的在链路上是以什么形式组装的(就是还是七层 还是 一层结构,就是 七层结构的报文)
- 题目:矩阵转置
hr面 (03.17,10分钟左右)
- 问一下未来打算
- 问一下是不是打算实习转正
- 问一下实习时长,到岗时间
- 问一下导师是不是放实习等
- 然后就口头offer了