分享下菜鸡的Java春招历程,附面经
背景
本人21届双非本,菜鸡一枚,学习Java也有一年多了,之前零零散散的学习,看书,做项目,二月份开始
抱着试一试的态度准备春招,开始复习投简历,基础知识慢慢积累,再加上看牛友面经,现在也还算可以。
算法leetcode的Top 250刷了两遍,剑指刷了3遍,感觉有时面试还是对算法题发怵哈🤣
好在有好多公司给了面试机会。虽然offer没拿到啥,一场又一场的面试也让我有所成长哈!在此非常感谢所有给我面试机会的公司,抱拳了🤔首先我还要特别感谢阿里,提前批面了好多次,🤣让自己恶补了很多知识点。先后面了cvte(两轮技术面+一轮hr面,hr面完告诉我不合适, 可能觉得我家离广州太远了点吧),跟谁学(两轮技术面,已经发了我offer),蘑菇街(两轮技术面,二面挂),腾讯(一面挂),阿里(三面挂),美团(二面挂),作业帮(两轮技术面+一轮hr,hr说hr面过了在部门审核,说基本上过几天就oc了),京东(两轮技术面,在流程中),百度(嚯!一下午面了三轮,备胎池中,在此许愿求个oc吧🤣)。
由于今年疫情,感觉好多厂都hc大减啊,竞争有点大的还是,哎,春招的成绩很不理想,用东北话说就是完犊子,啥也不是(在此给自己俩大嘴巴子🙄),自己也有时心态崩溃,颓废学不下去,可是回头想想这样的状态太不应该了,春招已经过去了,现在要做的就是调整好自己的心态了。
发个自己的面经(可能有的问题已经忘记了哈),希望和我处境相同的牛友不要放弃哈,一起加油!
阿里一面(80分钟)
3-30号笔试,3-31号接到熟悉的0571-号码🤣,约了4.1晚8点一面
刚开始自我介绍后开始简单介绍第一个项目,延申到dubbo,一些机制及通信方式,zookepper的使用,
问了nginx怎么使用的,以及负载均衡的策略。
之后谈了谈第二个项目,设计了一些场景题,印象最深刻的就是redis挂了怎么办(不能用了)
说了一些限流算法,对比优缺点固定窗口、滑动窗口、漏桶
有分析过CPU情况吗,或者JVM一些优化
Java基础--------------------------
说一下HashMap、1.7和1.8,hash方法为什么高16异或低16
为什么1.8引入红黑树,为什么阈值是8,红黑树的特点,时间复杂度,与其他数据结构的比较,为什么每次扩容二倍
线程安全的CurconrentHashMap,1.7与1.8,中间因为说了volitale,又转到volitale,底层怎么实现的,解决什么问题
volitail不能解决什么问题,产生脏数据问题,用什么解决(CAS、加锁、还有吗(想不到))
sychronized、jdk1.6的优化,重量级锁自旋次数设置的参数
与ReenTrantLock区别,有sychronized、为什么引入ReenTrantLock
创建线程的方式,callable返回值作用
线程池,参数、流程,拒绝策略,如果让你自己定义一个拒绝策略呢
数据库MySQL--------------------------
索引,数据结构,锁,隔离级别,MVCC,如何解决串行化,间隙锁,创建索引注意事项,(面试官基本上都会在回答后再问为什么😓)
联合索引,怎么建
一面后两个多小时约的4.2号二面(一个小时15分钟)
阿里二面(60分钟)
首先二面和一面没有重复问题,二面也是基础居多
自我介绍后开始说项目,因为项目用到了nginx,让说下nginx与LVS区别,具体点,再具体点,这块没怎么深入了解过,答得不好
对项目提出了一些问题,分布式锁,分布式事务,
消息队列怎么用的,rabbitmq、rocketmq、kafka对比
消息丢失怎么办
网络----------------------------
介绍网络常用协议
http与https区别
https为什么安全呢,详细介绍握手过程
操作系统-------------------------------
linux如何定位线程
cpu飙升如何排查
cpu负载和cpu使用率,负载很高,但使用率很低有什么什么场景
数据结构------------------------------------
问了各种树吧,为什么,就都解决什么问题,什么场景使用
扯到了ES的倒排索引,由于ES不太会,没太深入
问了mysql实现乐观锁与悲观锁
有问笔试什么情况🤣
最后问了下,大公司的系统怎么做的,想到哪些面都说一下
问现在在学习什么技术,不会没关系,说一说
反问环节
二面感觉答得还可以,二面后就没消息了。。。。
cvte一面(75分钟)
一面80分钟,主要问了很多基础
Java内存模型
JVM垃圾回收算法
介绍G1和CMS回收器,比较
full GC 会怎样,什么时候产生full GC
引用计数法与可达性算法的区别和问题
举例你实际应用中的多态
HashMap、ConCurrentHashMap
Sychronized,AQS,底层
volatile底层,
线程池参数工作流程
mysql索引,间隙锁
redis底层数据结构,跳表说一下
过期策略,内存淘汰策略
AOF与RDB区别
Spring中加载流程
循环依赖怎么解决
Jdk与Cglib区别
cvte二面(60分钟)
二面问的项目,面试官很nice,会引导我
假设了项目很多的问题让我解决
mysql挂了怎么后续处理
redis挂了怎么处理
消息队列如何保证顺序性,可靠性
分布式锁如何实现
redis穿透,雪崩,解决方式
热key问题
手撕了sql,
还有一道力扣medium209
cvte Hr面(30分钟)
问了很多问题,感觉cvte的hr时最难的
对前两面进行评分
说说自己的不足
有女朋友吗,咋打算的,未来规划
家里和女朋友对你未来工作地点有要求吗
家里干什么的
为什么不考研
经历的最大挫折
说下你的弱点
期望毕业薪资
还有好多,忘记了,都是挺难答的问题
蘑菇街一面(65分钟)
上来扣项目,让我介绍,之后对我的某个逻辑设场景题,让我想办法解决,
问了redis并发相关的场景,还有提高响应速度,我说了些用消息队列解耦之类的。
之后引申到消息队列消息丢失之类的,因为我用的rabbitmq利用confirm机制+磁盘持久化+消费应答。
http内部字段,怎么保持长连接,如果客户端挂了,服务器怎么办(我答的就是保活计时器+探测报文),
浏览器输入www.baidu.com后发生的过程(包括域名解析过程)
项目缓存雪崩,缓存穿透,
慢sql怎么处理(explain或者慢查询日志,加索引啥的),
abcd四个字段,你如何建联合索引(使用频率最高优先),
还问了java基础,记不清了,挺简单
spring加载过程(底层源码方法),如何处理循环引用bean(利用三级缓存),
linux中发现cpu使用过高,你怎么办(我不太会linux,只说了ps查进程,之后top分析cpu使用率)
总的来说场景题还是多一些的,有两个想不起来了
问了redis并发相关的场景,还有提高响应速度,我说了些用消息队列解耦之类的。
之后引申到消息队列消息丢失之类的,因为我用的rabbitmq利用confirm机制+磁盘持久化+消费应答。
http内部字段,怎么保持长连接,如果客户端挂了,服务器怎么办(我答的就是保活计时器+探测报文),
浏览器输入www.baidu.com后发生的过程(包括域名解析过程)
项目缓存雪崩,缓存穿透,
慢sql怎么处理(explain或者慢查询日志,加索引啥的),
abcd四个字段,你如何建联合索引(使用频率最高优先),
还问了java基础,记不清了,挺简单
spring加载过程(底层源码方法),如何处理循环引用bean(利用三级缓存),
linux中发现cpu使用过高,你怎么办(我不太会linux,只说了ps查进程,之后top分析cpu使用率)
总的来说场景题还是多一些的,有两个想不起来了
蘑菇街二面(20分钟)
面试官是个leader,很严肃
就是全程问了项目,包括说对一些名词的理解
webService和http区别
20分钟就结束了,凉凉
跟谁学一面(50分钟)
主要问了Java基础比较多,有些记不清了
int和Integer 出了个代码题,是关于IntegerCache的
mysql索引优化
出了个组合索引语句,问哪个字段可以用到,最左匹配原则
隔离级别,如何解决的不可重复读,MVCC+间隙锁解决幻读
说了MVCC底层原理
Spring的IOC和AOP,
SpringBoot的流程
快排
链表反转
跟谁学二面(60分钟)
先问了项目,巴拉巴拉
印象深刻的是
AQS底层
读写锁底层,挖的挺深的,差点扛不住
如果sleep(0)会怎样(降低优先级)
算法:很多个数找到top10(我用的优先队列)
腾讯一面(60分钟)
一个.java到.class文件再执行的过程
Spring的事务传播
TCP和UDP区别
虚拟内存
之后就是出了四道算法题
1.删除链表中重复元素
2.岛屿问题
3.最长连续子序列
没办法我菜,前俩秒,第三个这么经典的问题竟然卡了太久太久,之后就结束了
作业帮一面(80分钟)
问了项目,单点登录实现,
nginx+LVS高可用
如何解决分布式session
redis集群怎么做的,主从复制流程
RDB和AOF,如果AOF文件很大怎么办,AOF重做,还是特别大怎么办,分片复制
TCP三次握手四次挥手
三次挥手行不行,为什么
状态码301与302的区别
Linux找到文件夹下包含某个字符的所有记录
分页查询页数很大效率低怎么办,join 连接主键优化
聚簇索引和非聚簇索引
索引覆盖
算法:下一个排列
作业帮二面(70分钟)
solr怎么用的,zookeeper怎么用的
如何保证solr与数据库一致性
DNS递归和迭代
CAS原理,ABA问题,解决方法
Dubbo原理
注册中心宕机怎么办
RPC分为哪几部分
Linux常用命令,让我按要求查日志,就是grep,cut,啥的
ES倒排索引
算法:
1.一个字符串数组,按长度大小,相同长度按字典顺序
2.EXCEL数字转字母
作业帮hr面(20分钟)
说说生活中你是怎样的人
举个例子
了解作业帮吗
说说你的缺点
说说你觉得经历过比较困难的时间
有看非技术的书吗,推荐下,
介绍下*本书讲了什么
对未来的规划
想来北京发展吗等等
美团一面(80分钟)
主要就是基础+项目
Java并发的相关基本上都说了
Sychronized、AQS、volatile、线程池
HashMap1.7,1.8
ConCurrentHashMap1.7与1.8
JVM问的也比较多,JVM调优
介绍各种树
网络Http1.0,1.1,2.0
问了分布式事务实现
讲了限流算法
项目问了很多,
就是问为什么用某某技术,解决了什么问题
写了个快排
最后一面面试官表示了对我非常肯定的态度,
美团二面(50分钟)
一面很顺利,可惜二面凉的透透的
因为软件工程专业,被疯狂怼,属实怼懵比了
问我软件工程是什么,
软件工程概论是什么
这个课讲了什么
怎么理解软件工程
UML图代表什么,干什么的
哎,这些真的不知道啊
最后来了个算法
三个线程交替打印10次A,B,C
京东一面(30分钟)
全是基础。。。忽略吧
京东二面(35分钟)
全程问的项目,限流怎么做,临界问题
redis挂了怎么办
消息队列作用
有百万个请求,如何保证消息队列不挂掉
抢过票吧,抢票怎么做的,抢不到会怎样,排队中怎么做
漏桶算法
分布式事务:2pc,3pc,TCC,本地消息表
redis事务与mysql事务的区别
线程与进程区别,
保证消息队列不挂掉没答好
面试官很和蔼哈,只不过现在还是复试中的状态
许愿hr面🙂
4.25百度下午一口气面到了三面(有些问题不记得了)
一面(50分钟)
先是聊了聊项目
ArrayList与LinkedList
CopyOnWriteArrayList
HashMap1.7与1.8
为什么高16与低16异或
线程池个数如何设置
线程可以被无限创建吗,与哪部分内存什么有关
Integer缓存
select * from A join B on A.a=B.b;
select * from A left join B on A.a=B.b;
select * from A right join B on A.a=B.b;
这仨语句怎么建索引(不会)
Spring的IOC,自己实现呢
Spring的bean初始化流程,源码都有什么接口
三级缓存解决循环依赖
算法:
俩栈实现一个队列
A,B俩无序数组中,找A中有B中没有的,不能用set,map,别暴力法
感谢一面面试官给我过了
半小时后二面(50分钟)
二面小哥全程笑脸,哈哈
聊项目,,
redis我想现在不停服务加集群集器怎么做
redis底层数据结构(说了SDS,dict,跳表啥的)
为什么redis快,Io多路复用是啥
浏览器上输入网址后的流程
提到百度你想的第一个词是什么,我说搜索吧,小哥笑了说,还好不是广告??
之后说了lucene 倒排索引
假设你是供应商,请提供一个排序的api,比如用户可以选择快排,堆排,归并啥的
感觉主要是看代码的面向对象的设计吧
问了让你实现现在咱俩共享代码这个功能,你的思路是
最后小哥给我过了
20分钟后三面(40分钟)
挑个你在做项目中的困难
问了为什么不想考研
考虑再北京发展吗,
期间掺杂着几个技术问题
Solr和ES的区别,没答好
及现在在看什么书,学什么呢
自己评价下自己是个怎样的人
为什么选择Java后端
许愿一下百度吧