我的 Java 后端面试日记!
扫描下方海报 试读
本文是公众号读者Pz投稿的面试经历
感谢Pz同学的分享
背景
在老东家五年了,总共工作整七年,经历两家公司。2019-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。
目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。
准备过程
2019-10.31 周四
提了离职已经二十多天了,今天老板签了字,办了离职手续,《某某直聘》上传简历,刷新简历。
《某东供应链部门》打电话问了问我的学历是否统招本科,约我明天下午去面试。不过他也算是大厂吧,没有面试经验咋办,心里很忐忑,没关系,开始加油吧!
咦,有条消息,我一看是我同学给我发的截图,原来他刷到我的简历了,他说帮我内推,内心还是挺激动的。内推公司:《打车》
2019-11-01 周五
早上五点半爬起来了,开始看视频,刷资料,准备面试,一直到12:00,没吃饭。公司太远了,在亦庄,要两个小时才能到,出了地铁口,映入眼帘的便是他们的大楼。找到部门,给了张面试题。
-
HashMap,HashTable,ConcurrentHashMap的共同点和区别?
-
Spring的 init-method,destroy-method的实现方式?
-
说几种实现幂等的方式?
-
说几种分布式锁的实现方式?
-
有一个List集合,多线程计算总和,说出你的思路和使用到的框架。
一个开放题目,数三角形的
做完题目,感觉还比较OK,来了一个面试官,大概三十多左右。
-
自我介绍
-
介绍一下项目
-
JVM内存模型
-
MySQL事务隔离的底层实现?
-
MySQL索引介绍一下?
-
命中索引要注意什么?
List去重,手写代码,考察基础
坐地铁辗转到了公司大楼。你好,来面试的。领到一份面试题,来到三楼休息室,一大堆人跟菜市场似的。我擦,竞争压力这么大啊,看了一眼面试题,好多不会的,来都来了,试试呗。开始做题。
-
String new String 的关系 ==,equals
-
两个链表相交,求交点
-
三个线程顺序打印ABC
-
如果aab,aba相等,给两个字符串,判断是否相等
画一下RPC的架构图
一面:一位说话比较轻柔的技术官。
-
自我介绍
-
String ,new String 这道题为什么这么选?原因?
-
说一下项目
-
手写一个单例
-
JVM内存模型,JAVA 栈能分配对象吗?
-
说一下类加载过程,双亲委派模型源码看过吗?介绍一下
-
什么情况下栈会溢出?
-
栈帧介绍一下?
-
MySQL索引了解吗?画一下?
-
从业务角度出发,如何设计MySQL数据库?有哪些优化点?
-
垃圾回收了解吗?介绍一下?
讲一下AOP的原理?Cglib能代理final方法吗?
面试官对我说:我觉得还OK,你等一下,我们领导开会,让HR通知你改天二面吧
好的,启程回家。
《某某租房》复试。面试官很年轻,比我大两岁,人家已经是研发经理了,看看我。哎。。。。
-
项目为什么不用RPC框架?
-
了解RPC吗?,画一下流程图?
-
RPC和HTTP协议有什么区别?
-
长连接是物理真实存在的吗?
-
介绍一下项目?
MQ 消息丢了怎么办?发消息是原子操作吗?
三面:研发总监
-
锁介绍一下?有哪些?
-
线程阻塞从操作系统的角度介绍一下?
其他的记不清了
下午四面:技术总监
HTTPS的流程
-
你认为你还欠缺什么?
-
如何学习的?
- 瞎扯淡,行了,签字,录用了
《某某优鲜》下午两点,找大楼找了半天。公司好几层,我擦,没见过这阵仗。上楼等一会,没有面试题。
-
你的项目如何拆分的?为什么这么拆?
-
如何保证服务高可用?
-
MySQL挂了怎么办?(挂就挂了,很惭愧,公司没实现数据库高可用。。。。)
-
项目经历有点差啊,就不问你互联网项目问题了
-
说一下 WebSocket协议
- 说一下HTTPS协议
二面:
-
SpringBoot了解吗?和Spring的区别?
-
如果想做定制化开发,怎么做?
-
@Conditional 说一下
-
事务的传播机制?
-
说说MySQL索引?
-
可重入锁的原理?(state ,AQS)
- 拆分服务,服务治理有了解吗?
HR:简单聊了一下,为什么五年不离职?你这样的很少见啊。还有一轮部门老大面试,你先回去吧,电话面。
该来的终于来了,要面对最终BOSS了。不过还好不用坐地铁了,上午看了几个视频,准备了一下,中午12点,洗个澡,收拾收拾。骑车出发,心情很忐忑。
骑车到了地方,公司LOGO映入眼帘,两座大楼。给HR打电话,接待,上楼,等了一会,一个年轻的面试官过来了。
-
设计一个秒杀系统,讲一下你的思路。
-
如何设计限流?
-
库存怎么扣减?decrby 可以吗?
-
库存扣减失败怎么办?
-
画一下项目结构?
-
a,b,c 联合索引, a=1,b=1,c>1 能命中索引吗?a=1,b>1,c=1能命中索引吗?
-
JVM 堆说一下?触发Full GC 的场景有哪些?
-
说说G1垃圾回收器?老年代,年轻代如何分配?
-
Redis 锁出错怎么办?
-
Redis 扣减库存有问题怎么办?
-
设计一个转账系统? A->B转100块,有没有思路?
-
Redis 有哪些持久化方式?
-
Redis 数据会存放到磁盘吗?
-
Redis为什么这么快?
-
Linux 统计top10 IP访问日志,用到哪些命令?(不会)
-
Linux 自己用过哪些命令呢?
-
如何查看Dump日志?怎么产生的?命令有哪些?
-
一个线程池 ,10个核心,100个最大线程数,100个队列,10000个请求打过来,描述一下线程池如何运行?拒绝了怎么办?
- 考察一下基础知识吧,String new String 的区别?(== equals )
二面:(和一面问了好几个重复的问题,害的我又讲了一遍)
-
项目你认为有哪些难点?(活动报名超员,联想到秒杀)
-
秒杀场景如何处理?
可以用Redis decrby 做库存扣减吗?如何做?(可以用 lua保证原子性)
-
lua太重,有别的方案吗?
-
库存如何恢复?
-
防止超卖还不行,未支付的订单如何处理?
-
用户名密码如何防止被盗?(js加密,不行,还是能**,哦,https。。。。)
-
说说https的流程?
-
有了解过哪些非对称加密算法?对称加密算法呢?
-
c,b,a 索引问题,c=1,b=1,a=1 能命中索引吗? c>1,b=1,c=1 能命中索引吗?为什么?
-
评论业务如何区分模块的?(bizId)
-
某个业务打爆数据库了怎么办?(分库,拆分服务,单独部署,还有呢?MQ)
-
了解限流吗?降级?算了,你也没接触过,不问了。(ORZ)
-
Linux 统计top10 IP访问日志,用到哪些命令?(不会)
-
说一说你对HashMap的结构理解,如果Key相同怎么办,链表是前插还是后插?红黑树呢?
-
用过哪些Linux命令?(mkdir,ll,等。。。。linux确实是我的弱项,以后要恶补了。)
-
1 2 2 3 3 4 4 5,如何确定3的索引位置?(计数统计,O(N) O(N),还有更好的方法吗?循环吧。(正确答案二分法,我提到了,但是思路却错了,被批了一顿)
-
GIT 团队开发如何去做?如果有个 feature 不用上线怎么办呢?
-
maven 如果包冲突,不解决会有什么问题?如何解决包冲突问题?
-
设计一下Dubbo的线程池?每次请求50ms 200 QPS,客户端500ms超时,如何设计?直接打入200个请求呢?队列多大?线程池多大?(回答的不好)
-
Integer a1=10000 Integer a2=10000,他俩 == 结果?怎么才能相等呢?(equals,== 比较的引用地址,考察Integer 缓存)
- Integer a1=100 Integer a2=100 呢? 参数可以设置吗?如何设置?
部门老大面:
-
你是某某同学吧?(舍友)
-
说一下以后的打算?
-
技术成长?业务方面有哪些选择?
-
不能光看技术,要熟悉业务
-
如果DB要挂了,用哪些方式去解决?(说了一些我认为的方案,但是明显不是。。毕竟没接触过,所以只能自己理解)
-
如何统计QPS?有没有了解市面上的框架?如何实现,原理呢?
-
他们该问的都问了,聊聊非技术的吧
- 等一下,我让HR找你。
HR面:
-
离职原因?
-
五年怎么离职了呢?
-
期望薪资?
- 周一等消息吧。
面试之前确实要多做准备,不过有实战经验的话更佳,怪不得大厂跳大厂较为容易一些。小公司也不要气馁,一些公司不看项目,看你对高并发项目的理解,哪怕自己没做过,有自己的方案也可以。
另外,基础必须扎实,不要只背理论,深入了解,了解的越深越好,虽说面试造火箭,工作拧螺丝,你有造火箭的能力还怕拧不好螺丝吗?
END
如有收获,请划至底部,点击“在看”,谢谢!
欢迎长按下图关注公众号石杉的架构笔记
BAT架构经验倾囊相授