字节一二三面,面经(已经 OC)四月底真实面试经历!
一面:
自我介绍,
简单问了下项目实现流程,
算法题 1:然后函数计算 n 以内三的倍数和五的倍数和,开始写了时间复杂度 O(n),面试官说不行,然后优化到了时间空间都是 O(1):
算法题 2:最长无重复子串长度,一遍过力扣原题
算法题 3:SQL,由于我准备面试忘记准备 SQL 了,只会简单查询,这个需要左链接子查询直接放弃
mysql 索引:B+树,哈希索引,聚簇索引,非聚簇索引
集合类:set,list,map,然后到了 HashMap,TreeMap 实现原理,然后到了红黑树实现原理和优点,然后到 ConcurrentHashMap,HashTable
三次握手四次挥手
Mysql 事物隔离级别和脏读幻读不可重复读,以及 MVCC
然后就到了项目细节一点,就是关于项目细节深入挖,现实问了关于 redis 和 mysql 双写一致性,我说使用 RocketMQ 事务型消息,二阶段提交。然后问了如果消息丢失了怎么处理,我讲解了关于 rocketMQ 防止消息丢失原理。然后面试官说这个也不能保证消息完全不丢失,然后我说 rocketMQ 日志记录,出现特殊情况可以根据日志处理,面试官问我能不能在代码层面优化一下我说不能。
然后就是另一个方面,关于超卖少卖问题,我的解决方案就是常规方案,落单前减去库存,失败事务回滚,中间件同步消息,一般这个方案虽然不能完全保证不会出现数据一致性,但是也会小概率出现少卖情况。结果面试官说这个不对,超卖少卖都有可能,我反复讲解为什么不会出现超卖情况,结果面试官说了你有考虑过取消预约情况出现问题的情况吗?
然后后来面试官说了我还挺不错,
二面:
自我介绍
项目介绍了下
算法题:k 个一组翻转链表
算法题:翻转链表中指定区间的链表
全是原题直接 ac 了
继续深挖项目,有部分问题和前面重复不再详细叙述。
Tcp 月 udp 区别,http
主要是手写 RPC 实战项目,整个流程,然后就是项目细节具体包括:
1:cap 原理,zookeeper 是 cp 还是 ap 的,为什么,选举协议,集群搭建消息同步。
2:为什么使用 netty,延伸到 netty 线程模型,linux 五种 io,java 三种 io,零拷贝
3:自定协议原理:如何解决粘包半包问题,json,kryo 序列化比较以及原理
4:特殊情况:如果服务提供端突然挂掉怎么办?我分了两种情况,主动下线和突然失效解决,中间设计钩子和心跳包
Redis:
几种搭建方法
数据类型以及跳表
如何解决雪崩和缓存穿透:
Java:sychornized 和 retreenltock
主要说了 Sychornized:四种锁状态,Retreenltock:AQS
然后就是垃圾回收算法,
cms 过程,浮动垃圾,三色标记法
Java 集合相关,还有多线程创建的七个参数
三面:
自我介绍和项目介绍:
职业规划实习时间
算法题:
SQL 还是不会
烧香问题:两个不均匀香,每个香燃烧完毕一个小时,确定 45 分钟(早就看过了,假装仔细思考,笔画演算,然后说出答案)
Tcp 如何保证可靠性
输入 url 过程:包括 dns 解析以及网络结构每层都发生什么
https:只知道大体的,
如何防止其他网站获得 ca 证书假冒?数字证书保留网站信息,
如何防止篡改?数字签名
数字签名具体原理?不会
虚拟内存的好处:答对了
页面缓存算法?答对了
具体实现细节:LRU 答对了,但是 LFU 忘记了
项目:有些和之前一样,多了一个防止重复支付问题,回答了悲观锁和乐观锁
然后就是 mysql 语句执行过程
Spring IOC,AOP,动态代理
Java 集合几种,重点 map 问了一下
然后 HashMap,为什么查找是 O(1),回答到基于数组实现,数组查找公式是:元素位置=基础位置+k(参数类型占位)面试官才满意然后就是问了一些最近找实习情况,实验室情况,未来规划等等...
希望本文会对大家有帮助,祝大家早日拿到心仪的 offer !作者在这里也为大家准备了不少的面试题资料和文档,已经整理好了!需要的加君羊:114 295 1706 领取!
最后说一句(求关注,别白嫖我)三连支持一下 谢谢!
版权声明: 本文为 InfoQ 作者【Java大蜗牛】的原创文章。
原文链接:【http://xie.infoq.cn/article/b420db42871239417c927d3b3】。未经作者许可,禁止转载。
评论