4月27日完成了朴朴的四轮面试(三轮技术面+一轮HR面),最终成功拿到了offer。下面分享一下面试中我被问到的问题吧。
第一轮(1小时)
1.自我介绍,项目介绍
2.可以说说注册中心的原理吗
3.你是怎么用redis的,用到了哪些数据类型
4.你是怎么考虑某个数据是否需要加过期时间的
5.说说redis的内存淘汰策略
6.假如现在有个需求,网络爬虫需要判断某个URL是否被爬过,你会使用哪个数据类型
7.因为redis内存有限,URL可能很多,你有没有更好的方式判断是否被爬过(这里因为前一个问题我回答了用set,所以面试官追问了我这个问题)
8.那你能说说布隆过滤器的实现方式吗
9.说说布隆过滤器的优缺点
10.再说说布隆过滤器的容错率是如何实现的
11.在项目中,你使用redis是什么架构
12.redis主从有缺点,你能说说缺点吗
13.那你有什么方式能够解决这些缺点
14.读写并发的时候,会出现缓存与数据库不一致的场景,你怎么解决的
15.能说说分布式事务的实现方案吗
16.基于RocketMQ实现分布式事务,能有一个具体的应用场景说一下吗
17.比如说有个场景,有可能会对消息进行重复消费,你怎么解决的
18.可以再说说RocketMQ实现分布式事务的优缺点吗
19.你刚才说的RocketMQ的使用场景。那现在有一个需求就是,服务A调用服务B,服务A执行成功了,这时候服务B执行失败了。你有什么其它方法保证数据一致性(当时脑子犯浑了答到别的方式去了。这个就两个服务的调用,对于服务B调用失败,直接用spring的事务机制就可以保证一致了)
20.你对消息中间件是如何选型的
21.你对哪个数据库比较熟悉
22.可以说说Mysql的存储引擎有哪些,以及它们之间的区别吗
23.在设计索引上,你会怎么考虑
24.假如现在有一条慢查询,你会怎么进行排查
25.说说你在项目中使用到的设计模式
26.可以说一下策略模式吗
27.可以说一下JUC吗
28.你有什么想问我的吗
第二轮(15分钟)-HR面
1.你为什么从上家公司离职
2.上次听你说你面试阿里第四轮失败了,有考虑为什么失败吗
3.当时为什么考虑阿里
4.除了阿里,还有考虑别的公司吗
5.你的期望薪资
6.你对朴朴了解多少
7.HR进行朴朴的介绍(非常详细)
第三轮(1小时20分钟)-技术组长面
1.自我介绍,项目介绍
2.项目中遇到的问题,怎么解决的
3.说说Eureka作为注册中心,怎么判断服务是否可用
4.假如服务A调用服务B,服务B可能宕机了,或者网络故障,这时候你会怎么解决
5.服务A调用服务B,怎么保证它们之间的数据一致性
6.zuul作为网关,你是怎么使用的,实现了哪些功能
7.说说redis,你是怎么使用的
8.你说到了布隆过滤器,可以具体的再说说吗,怎么实现的
9.布隆过滤器有哪些缺点
10.说说redis的集群
11.知道redis的批处理操作吗
12.针对这些批处理的操作,比如pipeline,mget,在redis的集群场景中会出现什么情况
13.那你有什么方法可以解决批处理的这个问题
14.对二进制的一些运算熟悉吗
15.有一个需求,int有32位,有什么方法可以判断这个int中有多少位是1
16.你也用过消息中间件,那你在使用的过程中怎么保证消息的不丢失。顺便可以举一个具体的业务场景吗
17.JDK中有一个内置锁吗,你能说说它的原理吗
18.JDK也提供了一些其它的锁,你可以说说吗
19.那你可以说说,Synchronized和JDK中的锁的区别吗
20.说说ConcurrentLinkedQueue
21.说说阻塞队列
22.CompletableFuture和Future的区别
23.再说说你的项目吧,为什么这样分层,架构为什么这样设计
24.最近在看什么书(我回答了netty)
25.那你能说说netty的工作原理吗
26.一道算法题:假如内存中有100亿的int型数据,你怎么找到top10数据(除了排序,求思路)
27.你有什么想问我的吗
第四轮(15分钟)-总监面
1.自我介绍,项目介绍
2.说说项目中你负责的模块
3.可以具体介绍一下其中一个模块吗
4.项目的团队有多少个人
5.能说说redis中数据类型的底层数据结构吗(zset,跳跃表)
6.说说排序
7.可以说一下堆排序吗
8.可以说说归并排序的思路吗
9.说说递归的特点和缺点
总结
1.从我阿里和朴朴的面试经历来看,如果能和面试官聊得来,每轮技术面试的时间大致都是在1小时左右。技术面试流程大致可以看成是从 技术的深度 到 技术的广度,最后结合项目聊一些分布式或微服务架构下的解决方案。多方面的对应聘者的能力进行考察。
2.基础很重要,这里说的基础主要是指深入到原理或者源码。
3.对于常见的算法问题,一定要掌握。出去面试不能抱有侥幸心理。
4.项目经历真的很重要。尤其是大数据量的分布式或者微服务的系统,毕竟现在整个互联网的大环境是这样子的,不管是出去面试,还是实际工作中。不会分布式,微服务,能叫做一个合格的JAVA工程师吗?如果你还在做一些纯CRUD工作,那么就真的需要考虑一下将来的职业发展了。
知其然,知其所以然
网友评论