面经分享 | 2年经验,1个月拿下阿里P6 Offer
这些面试题来自于我的老乡读者分享,很厉害,2年经验,面试几个月拿下了N个Offer,包括滴滴、有赞和阿里这些一二线公司。
内容完全来自读者自己,引用部分为读者自身回答描述,感谢分享。阿里的在最后部分。
酷乐家
- redis集群使用,宕机怎么处理
- mysql分库分表,数据怎么做分片
- mysql索引了解和优化经历
- Zk数据同步,崩溃恢复
- docker k8s常用打包命令
- docker和虚拟机的区别
- volatile和synchronize关键字
- hashMap特性
- Zk锁之间的节点同步
兑吧科技
一面
-
业务中redis集群的使用
-
mysql索引,explain命令的结果
-
场景问题:生产日志每天打10个G,怎么防止日志打满磁盘。
-
场景问题:设计不同用户角色的菜单和功能权限。
-
本地内存的了解。场景题:怎么实现更新所有集群中的机器中的本地内存。
我回答了rocketMQ的广播模式
二面
-
场景问题:大量的http请求怎么识别客户的身份
根据IP和用户行为做用户标签。
和电信移动等营业商合作,根据手机号码直接获取用户信息
-
日志区别生产和线上
标志识别(时间戳或者ip)
-
reactor模型的了解,它和面向结构编程的本质区别
-
JVM的调优经历和垃圾回收
-
synchronized锁和concurrent包下面的常见工具类的了解。
-
场景问题:怎么设计一个高并发的应用,从单体演变为分布式系统的过程。
同花顺
一面
- 项目经验
- redis数据分片机制
- 看的书籍,介绍印象深刻的
- 用list手写一个线程安全的队列。
二面
-
介绍一下项目亮点,痛点和解决的过程。
-
怎么解决分布式事务,用rocketmq是否存在消息丢失的场合,怎么做补偿
-
业务中数据模型,设计的时候怎么抽象表结构的。
-
分布式锁对扣减库存的性能影响,并发量大用乐观锁将压力转移到mysql是否合理
-
日常怎么处理微服务之间的链路追踪,traceId和大数据日志采集的实现原理
-
redis的缓存穿透、击穿、雪崩怎么处理,布隆过滤器
-
redis单线程效率高的原因
redis多路复用
-
netty的reactor模型
-
限流策略,sentinel的了解
-
在工作中的不足,怎么弥补?
顺丰科技
一面
-
项目复杂度的体现和用到的设计模式,下游服务的认知,订单系统拆单逻辑。
-
分布式锁,查库存和扣减库存原子性
-
分布式事务,订单和库存的事务一致性
-
多个系统之间数据同步, 发布订阅,初始化数据,增量binglog同步。
-
增量数据除了binglog怎么同步?
通过version版本号,每次主动拉取更新数据查询version比自己大的数据,进行更新。
-
Spring IOC,AOP
-
AOP是在什么时候加载的,容器怎么加载bean
-
Spring三级缓存怎么解决循环依赖
-
mybatis拦截器动态代理底层怎么找到XML,怎么执行sql
-
快递订单中,有收件人和寄件人,怎么查询某个用户的快递订单(这个用户有可能是收件人也可能是寄件人)
查询:where 收件人=xx or 寄件人 =xx
用union 或者union all查询,建立组合索引
-
敏捷开发的了解
-
最近看什么书,辞职理由
二面
-
项目架构的描述、数据库表结构的设计
-
网关层怎么做限流
漏斗、令牌桶、滑动窗口(sentinel)
-
RMQ保证事务一致性
-
redis集群
-
算法:有一棵树,每个节点可能有多个子节点,描述这种数据结构并且遍历
第一种思路:子节点属性用集合描述:List<Node> childen;递归遍历
第二种思路:当作变形的二叉树,左子树是一个单一节点的部分,右子树是一颗大树,遍历也要递归,复杂度很高。
有赞
一面
- 项目经验
- 垃圾回收算法,对CMS的了解
- 初始标记和并发标记的区别
- Spring相关
- redis MySQL RMQ
- 分库分表的运用
- JVM锁
- hashmap1.7和1.8的特效,1.8是否线程安全
- chm
- epoll poll select的区别 文件描述符
二面
- 业务场景
- redis分布式锁
- 分布式事务
- rocketmq
乌鸫科技
一面
- sentinel结合dubbo做限流
- 怎么实现单例,怎么破坏单例
二面
- 线程池
- 类加载机制,分别加载了哪些对象
- tomcat加载了哪个类加载器
- jvm内存模型
- 垃圾回收算法,CMS,三色标记法
- JVM调优
- 分布式ID生成算法
- 秒杀场景设计,解决超卖的设计
- MySQL索引设计,
select * from table where a=1,b= 1 and c>2 and d=3 order by e
怎么索引建立 - redis分布式锁怎么实现
阿里集团
一面
- 分布式锁的多种设计
- mysql分库分表
- 秒杀的设计
- DDD领域设计
- 分布式事务常见的解决方案
- redis集群
- hashMap、chm
- 事务的特性
二面
- 业务场景50分钟,深挖业务的设计,数据库模型的设计,设计的缺陷和替代的设计方案。
- mysql索引的优化、隔离级别、mvcc、redo和binglog写入时机,同步机制。
- JVM优化经历
- rocketmq的深入
- volatile和synchronize
- dubbo的流程,对称加密和非对称加密、spi、负载均衡算法
- 算法leetcode随机抽一题,不需要运算通过,基本不卡人
三面
纯业务的理解和行业领域的认识50分钟
四面
-
项目的价值,在工作中的职责,做了哪些事情
-
开源框架的了解,netty的了解,怎么实现一个聊天客户端
-
设计一个rpc框架,dubbo怎么用线程实现同步调用,具体需要几个线程
答不出
-
看的书籍,收获、个人职业规划等
总结
image2年的话感觉问的东西不是很难,把你那些我要进大厂的东西看一看,是一个知识概览。然后大厂对于每个知识会问的比较深入,看的话要平时多看书,也可以看看极客时间的各个文章。
项目经验很重要,一般在各个中台的核心业务,例如交易 商品 营销 支付,做过这些东西并且能总结出项目的内容和难点大厂一般都要。