共计 5324 个字符,预计需要花费 14 分钟才能阅读完成。
概述
最近换工作,对最近面试的过程进行总结,总结每个公司的面试流程和问到的面试题,记录本人,也供大家参考。
我是一名 Java 开发,工作教训 10 年,所以面试一名高级 Java 开发工程师。
简历投递平台,只应用了 Boss 直聘。
因为生鲜电商裁员,我也是受害者的一员,就任的公司是 * 菜。
2021 年 9 月 8 号开始开始投简历,2021 年 9 月 23 号敞开 Boss 简历。
投递数据
沟通过:200+,面试:20,已投简历 100+
因为有复试起因,最多一天面试 6 家(超级赶,原本约了三家,然而来了 3 家复试,他们都要求最好能面了。给他们看了 Boss 预约信息,都要求插空一个小时)
面试岗位状况
10 年 Java 教训,所以我投递是高级 Java 工程师的岗位。
因为住在顺义,所以面试的个别都是望京四周的公司。
面试状况
为了防止不必要的麻烦,这里把公司抹掉了。
Boss 面试截图
为了防止不必要的麻烦,这里把公司抹掉了,也只晒出了局部截图。
Boss 预约的有 16 家,加起来总面试是 20 家。
面试过程
原本打算每个都写一下面试过程来着,感觉有点流水账的意思了,没什么意思。这里挑几个典型介绍下。
* 送:全程 10 分种多点,面试官全程没有表情。问的问题:Springboot 主动拆卸过程,Springboot 循环依赖,Springboot 自定义 start,hashmap。
遇到过很多这种状况,问的问题也答了,面试官没有反馈,持续问他的问题。个别遇到这种状况,不必可惜也不要怄气,他可能刚遇到啥怄气的事件,或者性情就这样……(只管这样刺激本人,过后也很怄气哈哈)
* 水:面试时长 1 个小时,问的问题:JVM/ArrayList/JMM 内存屏障,往深了问,比如 JMM 内存屏障怎么设计的,为什么要这么做……
根本就是问到你不会为止。
这种状况也比拟多,有些大公司会这么问,这种除了本人怄气,应该要好好看源码哈哈
**r:显著的群面,让我怄气的是,如果过了,你就往下进行就行,HR 说的很费解,就说后面两轮不错, 要不来公司看看……
猜想应该是她给很多人都这么说了,预计面试周期会很长,他们面试基数比拟大,可能是 100 集体里找 2 集体哈哈
** 付:面试流程显著有问题,应该也是群面的。去了 HR 先给我聊了半个多小时,大体问了工作经验,家庭状况,职业规划啥的,看起来是在拖延时间。一会叫来了业务总监,看看了工作经验。没有技术给我面试,最初 HR 说咱们业务总监说你没有领取教训,所以不好意思。你怎么不一开始就问有没有领取教训,那样咱们就都不耽误时间。
就是说这些吧,都是些负面的,心愿大家不要遇到这种公司。
面试后果
这次面试周期 10 天,面试 20 家,offer3 个,拒掉 2 个(间接没谈钱),还有一个再谈。也就是到谈钱的是 6 个。
可能一开始有点慌,没有认真筛选公司,所以面了几个没必要面的。
我这通过了有点低
面试高频
总结下面试高频常识
Java 根底
JVM:个别从 JVM 组成开始介绍,而后独自介绍每一块,而后就会缓缓衍生出垃圾回收形式,垃圾回收器,还能够衍生出 volatile 之类的,你也能够往本人重点把握的去疏导。重点:栈帧 / 堆,垃圾回收形式,垃圾回收器的比照 G1—CMS。unsafe 类 navicat 到 volatile。
汇合类: 个别会问 HashMap 或者 arraylist,有的还会让比对 arraylist 和 linklist。ConcurrentHashMap 等
个别答复初始化过程,组成,底层构造,算法,线程是否平安等,这块肯定要答复认真,要看过源码,或者看些 B 站的源码解说很仔 细,到每一个办法名字,要是汇合类就挂掉了,那就凉凉了……
重点:hashmap 组成,寻找算法,扩容算法,put get 过程,红黑树二叉树 B+ 树的区别。
经典问题:为什么应用红黑树,不应用一般的二叉树。
锁 :AQS 实现,偏心锁 / 非偏心锁,synchronized 和 lock 的区别,synchronized 锁演化过程
个别从 AQS 谈起,这个和 HashMap 一样肯定要通读源码,晓得每一个办法的名字和过程,和汇合类同样重要。
即便没有问你,你最初也能够比照下 synchronized 和 lock 和 LockSupport,显得 JUC 上面都精通。
还有这三个 CountDownLatch_CyclicBarrier_Semaphore,个别会问应用场景,要了然于胸
CAS:通常搭配 volatile 问,我个别在下面几个答复中就带上了,这个利用比拟宽泛了,AQS,汇合等大量应用,源码的时候间接说了就 OK
ThreadLocal:也是要看源码,还能够联合 4 大援用类型,堆内存透露应用,还有应用场景
线程池: 也是要看源码,还能够联合 4 大援用类型,堆内存透露应用,还有应用场景
重点:7 大参数,回绝策略。答复思路,7 大参数,回绝策略介绍完。把线程池扩容场景形容一遍。结合实际应用场景说一下,参数配置,一个是耗 CPU 一个是耗 IO 的,应该就问题不大
大体就写这么多,可能还有 JMM/JUC 上面的很多,就不一一列举了。
总结下:Java 根底是敲门砖,很多都要问源码,所以要十分相熟,个别把这个当作一个开胃菜,答复好了,上面你才会自信,面试官也不 会鄙视你,否则即便往下问了,面试官也基本上给你判了死刑了,想想就晓得多难堪……
当然还有很多厂,一面就问道这里,所以很重要。
Spring 相干
Spring 的问题问的也不少,但也不是很多,总结几个高频吧
IOC/AOP/ 事务: 把它们归为一类吧,比拟常问。个别就从实践谈到源码,而后加一些理论应用,具体方法。
重点:IOC 的实现,也就是注册托管……,AOP 的实现逻辑形式的区别,AOP 的应用 ASpect 的加强办法的程序。事务的传播方式。
Spring 初始化 Bean 的过程: 能够在下面问题一块答复了。也有可能独自问你。这个要看源码,那几个状态,几个办法名字,bean 的 Scope,次要说 sigleton。外面有很多的设计模式也能够说下
Spring 循环依赖: 能够联合下面的一块说。
重点: 三个 map,bean 的状态,scop 形式
SpringBoot 主动拆卸:Springboot 如同就这一个能够问的问题,所以要看源码,具体的哪个 reflsh 办法,要背下来。个别就说从注解说的简略的那种。要是还问,就要从 run 开始说了。我看过几遍,办法太多了,有些记不住呐…………
MySql
数据库是必问的,这里就说 mysql 了。
索引: 个别这一个问题,你就能够把 mysql 的所有问题串一下。先说下 innodb 和 myisam,再说汇集索引 / 非汇集索引,B+ 树,索引笼罩,执行打算 expline,
重点:汇集索引 / 非汇集索引的区别。B+ 树结构,怎么能力不回表。查问优化,笼罩索引。执行打算 expline 的参数。查问优化过程。
最初查问优化还能够加上分库分表,这外面问的就更多了,分库分表形式,怎么能更快的读取,疾速定位。要加上理论场景说,才有说服力……
经典问题: 为什么不实用其余的树应用 B+ 树。这里还会和 hashmap 的红黑树比对。要看树的构造了,所以数据结构很重要。看了 B+ 树的构造就分明了,我的了解 B+ 树叶子节点又加了一个相似数组的串了起来,范畴查问的时候,就不必回树了,提高效率。
非汇集索引怎么能力不回表: 非汇集索引存储的是索引内容 +ID,当索引笼罩就不回表,这里就波及到了联结索引的最左法制……,就说这么多,本人总结吧,太多了,你能够始终串着往下说,这样答复了问题,还进行了扩大,要不面试官也得往下问哈哈
事务: 这个也是必问的,先从 ACID 说,而后用 undolog …保障的,而后隔离级别和呈现的景象。而后再说隔离级别的底层,也就是 mysql 的锁,表锁行锁间隙锁,再到 MVCC
重点:这里那几个隔离级别比拟绕,要认真看下,还有理论利用场景,否则很容易被问住。我这里卡过两个哈哈
集群: 主从复制,分片,分库分表。这里会问道集群搭建啥的,我个别就答一下分库分表相干的,偏运维的我还没有深刻搞过,上面要学习了……
Redis
缓存是必问的了,总结了几个高频
- redis 的数据类型: 5 大罕用 3 个不罕用的,而后联合应用场景都说下。
- 缓存问题和解决方案: 缓存雪崩,缓存击穿,缓存穿透。解决办法,多级缓存,布隆过滤器(黑白名单),万一击穿阻塞。这个是常见问题,能够联合你的我的项目说一下。肯定不能挂,要不就凉凉……
- 淘汰策略: 几种淘汰策略介绍,而后说下 LRU 的算法实现(伪代码),看下 LRU 的算法,好多算法题就是手写 LRU 算法。
长久化:RDB 和 AOF,应用场景,两种都用先用 AOF 复原
- 集群: 主从 / 哨兵 / 分片,重点哨兵的介绍
重点:分布式锁:这个是重点,能够再你的我的项目场景中就说了,分布式的肯定波及到这个问题。
联合下图的 5 个个性说,从 redisson 说到 redlock,重点就是上面五个个性和看门狗的实现,集群下的容错性。
MQ
队列在分布式中利用宽泛,所以这个肯定会问,就算不问,你在说我的项目的时候也要说下利用场景
- MQ 的类型: direct/ topic/ fanout 别离的利用场景说一下
- 分布式下的利用: 说一下排对应用场景,而后围绕高可用进行说,发送端接收端如何保障音讯的可靠性
- 延时队列: 这个被问到好屡次,MQ 的实现是应用死信队列进行实现,两外两种一个是 redis+Springboot 实现,二是工夫轮。这个是重点要好好看下,因为这个场景比拟多,延时多久发信息,延时勾销订单
还有问几个 MQ 的区别的或者问怎么选型的,我没答复太好,因为没有全都用过。
微服务架构
微服务架构这个很重要,个别我都是在介绍我的项目的时候就介绍了,而后对几个框架进行比照
答复技巧: 我个别从微服务的几大组成开始谈,而后比照他们的区别。到每一个技术的时候,说一下具体应用。
比方:sentienl,先说下次要性能,而后联合我的项目怎么实现的,能够提一下 SentinelResource 的 blockHandler,这样让面试官晓得是敲过代码的。而后说限流是依据什么配置的,熔断和降级解决什么理论问题
分布式事务: 分布式事务放到这里说吧,这个致命重要,分布式上面常见场景,我个别放到这里讲。因为我筹备的是 ailbaba 的 seate,大体说下分布式事务的几种形式,2pc 3pc。而后重点介绍本人我的项目应用的 seate,要说到 seate 服务应用表名字,怎么应用全局惟一 ID 和 3 大组件实现的,实现流程具体论述,前置镜像后置镜像。最初说下优缺点,就齐活了…………
算法 / 设计模式 /Vue/ 我的项目教训 / 将来倒退
这些就不说了,算法前端我都比拟菜,算法也没有刷。
设计模式能够筹备一下,个别在 Spring 外面间接说了。要是面试官间接问,比如装璜模式是什么……我就跪了,看来还要全面的看一遍。
至于我的项目教训 / 将来倒退这些都要筹备,因为即便一面不问,前面的面试也会被问到,所以要准备充分。
还有一个题 狼来了,兔子猴子都跑了,代码实现哈哈
总结
作为一名 Java 开发工程师,要学习的货色切实太多了,这里只是从 java 根底 /Spring/Mysql/redis……这些方面总结下这几天被问到的高频面试题,记录本人,供大家参考………………
面经总结
总结下 Java 面试面试总结
集体总结面试须要本人筹备几个方面吧
1、技术根底:java 根底 数据库根底 缓存 中间件等,比方 hashMap 原理,数据库索引构造,redis 类型,mq 等。根底是敲门砖,最起码不能被这些问题给问住,如果超过两个根底你没有答复上来,一首凉凉送给你。
2、算法题: 力扣,牛客,算法题还是要刷的,否则一个二叉树镜像你就挂了……我比拟懒,没有刷这些题,所以遇到就挂了,等工作后肯定要刷个 1k 道题哈哈
3、微相干: 三个微服务框架 netfix,alibaba,dubbo+zk 的这些你都要理解过或者搞过,当初的技术,这些都是罕用的,别说没搞过,要不又是一首凉凉……
4、高大上的技术利用实例: 高大上的技术利用实例,肯定要是通用场景(不便面试官往下问),你不要说一个只有行业才晓得的技术应用场景,那就没得聊了。肯定要是你技术的最高体现,高并发 / 高可用 / 微服务 / 缓存 / 事务这种技术的综合体现。
当然筹备好了是加分,要是没准备充分被问倒了就是减分项。
比如我就是筹备订单秒杀场景:这种场景蕴含下面提到的所有信息。能够聊的货色比拟多。
5、2 分钟内能介绍分明的我的项目: 这个次要是在二面或者三面的时候高级别的面试官,考查你逻辑表白的能力。个别不必太简单,但肯定要是荒诞不经的业务场景,尽量大一点,残缺的业务场景,不要说是某个边边角角。要应用简短的语言,艰深的话语说分明。还要留神一点能够加上本人的我的项目负责人这一点,都说的这么透彻了,再加上负责人,面试官感觉你掌控我的项目没问题哈哈
总结: 总结就下面这几点吧,尽管是我总结的,我也没有做的这么好,有很多一面就挂掉的,所以大家必定比我优良。
如果有什么心得能够一块探讨。
上面就是我这些年面试备战的一些材料以及面试题整顿,大家感兴趣能够看看:
一线大厂面试真题解析
2021 一线名企面试真题
为了不便大家查阅,我把上边的面试材料按技术栈的划分整合成了一个文档,目录如下所示:
如何近期有面试需要的敌人能够拿去看看哈,只须要点赞 + 珍藏,关注我之后增加 vx:gupao100