总结下最近的面试题吧
大家好,我是yes。
上一周大概面了近 10 家公司,有很多小伙伴来找我要面经,趁我还有点记忆,今天整理一下。
我这篇主要是范围类型的汇总,因为范围是确定的,面试题是无限的,抓住范围内的知识基础和重点,面试题基本上是随便问的。
就像我们以前考试,其实书本里面的知识点就那么多,但是出卷老师的题目是千变万化的,更多的还是得看你的理解能力和融会贯通了。
并且随着工作年限的增加,场景题和设计题会更多且重要一些,因为像基础知识,比如 mysql 索引结构之类的认为是必须知道的。
我的工作年限是 5 年,下面的面试汇总仅供大家参考。
鸟瞰
基本上公司会从行业、技术、软实力、沟通、感觉这几个方面来考察候选人。
行业
行业很重要,在大环境不好的情况下更甚之。
简单来说就是业务对口能力,看你之前所任职公司的背景,所做的项目经历是否和公司要求岗位的匹配。
举个很简单的例子:A公司现在要招做支付的开发,如果你之前没做过支付,或者在一些比较不知名的公司做的支付且履历没那么好看,你的简历可能都到不了技术那边,HR这边直接挂了你。
这时候,任你有千般武艺也使不出。
所以行业匹配度非常关键,当然大公司背景可能会有加成。
技术
过了简历那一关之后,就是技术了,这点的重要性毋庸置疑,主要考察两个方面:广度和深度。
广度
就广度而言,有一位面试官从电脑是如何启动到操作系统是如何加载开始问起,然后从网络的物理层直到应用层,中间还问了 ARP 等协议包括路由器相关的问题。
然后问一些基础的数据结构,且一些相对而言不常见的结构比如前缀树等,再延伸到数据库的索引结构,再从索引结构到文件存储的结构区别再到 NoSQL 数据库的 LSM。
然后再者就是是Spring、SpringBoot、SpringCloud、网关、消息队列、分布式链路追踪的原理等等。
总而言之,基本上操作系统、网络、数据库、应用框架及其衍生的框架都问了一遍,然后问了一些云原生的如 Docker、K8S,还有 DDD 相关的。
这几个方向就是我们 Java 技术栈的同学需要去着重学习的,不过大部分公司都不会问这么广,更多的方向是:mysql、redis、Spring全家桶、消息队列、JVM、并发这几块,基本上算是必问基础题。
上面说的这几个,一定要好好准备,几乎必问。
深度
至于深度的话,有从 Kafka 为什么那么快延伸到内存的管理、消息的存储、内核态用户态、scatter-gather DMA等,还有精细地问到 RocketMQ 消息具体存储的字段是怎么设计的、ComsumerQueue的设计再到 tag 是如何过滤的。
不过正常应该不会这么细,估计是看我简历写了很多开源组件的源码所以才这样问的。
所以平日学东西,更多还是从高处俯瞰,然后一步一步往后探究,其实我有一篇文章基本上就是这个思路,从 Dubbo 的一段源码深入到了 CPU的分支预测
当然关于技术还会有项目问题,这个下面再谈。
软实力
软实力这点也挺重要的,在我们这行更偏向于管理经验吧。
基本上每家面试官都会问我平日是怎么带团队的,具体的流程包括人员的调配,有人员工作不饱和怎么办呐,有同事不配合怎么办,绩效的评定,还有跟外部交流怎样等等。
这点的话主要还是看简历了,如果你没带过团队肯定不会这样问,如果你带过团队基本上必问,即使当前的需求只是招一个普通开发岗,毕竟算是人才储备吧,是一个加分项。
沟通
至于沟通这个就不展开了,看你自己的理解能力和 talk 能力了,总之不要急急忙忙说话,要自信。
自信这点很关键。
感觉
还有一点就是感觉,听起来很虚无缥缈,其实在面试中非常重要,因为你觉得你很牛并没有用,你需要让面试官认可你。
如果你的气场和面试官的是相冲的,基本上你就凉了。
有时候对一个人的第一印象就是会莫名其妙,我当面试官的时候,有些应聘者一进来,随便问两句就感觉这个人还不错,但有些应聘者一进来感觉就不太对。
所以很多人说面试很靠运气,这是实话。
相信你们也遇到过很多面试官,有些相谈甚欢,有些话不投机半句多。
技术
上面已经说了几个重要点,关于技术我再扯扯。
纯技术方面的广度和深度是一个门槛,具体场景题又是一个门槛。
有些面试官会抓着你的项目问,一般会问的比较宽泛。
比如你觉得你的项目运行到现在,哪个地方是难点,未来可能会出现什么问题?
这就考察你平日的对项目的思考,包括一些个人的见解。基于这些点,面试官会基于扩展,比如某个功能当下就遇到堆积的问题,你怎么处理之类的。还是会偏实际应用场景。
还有些面试官会拿自己在项目中遇到的实际问题来考你,比如有个面试官问我,他们的 Spring Gateway 项目,正常部署,没做什么改造,在 k8s 上部署之后,内存就缓慢的增加,然后到达阈值报警了,问我是为啥?
再比如有个客户反应部署在他们那边的服务,timewait的连接特别多,是为啥,怎么处理?
等等之类的。
反正会更偏向于项目上的扩展或者是实际的排查场景。
当然,还会有一些纯设计题,比如如何设计分布式链路追踪组件之类的。
总而言之,能提问的实在是太多了,最重要的还是你基础扎实,很多知识点做到融会贯通,以不变应万变。
想要猜场景题,实在有点难。
但是一些基础题,比如 mysql innodb 索引结构这类的,基本上是必问的了,包括一些 sql 调优之类的。
有个面试官问的细些,问我 explain 的结果有哪些字段,分别什么含义等等,这类几乎必问的题目还是要准备的。
最后
从我个人近一个星期的面试来看,其实八股文问的比较少,更多的还是场景题,其中还有几个智力题,有个很有意思,改天我写篇文章分享下。
看到这里有些小伙伴可能会有点失望,这就是你说的面试题汇总?
好吧,这确实是我的汇总了。
第一点是因为我确实不太记得每场面试详细问的题目是哪些了,大部分都是我在公众号写了又写的东西,没什么需要特别拿出来写的。
第二点是因为我想表达一个观点,很多小伙伴可能最近没跳槽的打算,但是有时候面试的需求就是来的就很突然,指不定哪天就毕业了,然后匆匆忙忙找工作,突击看八股文。
八股文确实是要看,但是对于工作年限比较多的小伙伴来说,八股文只是基础,更多的还是需要平日对行业项目的深入,包括对整体链路的理解,还有实际排查问题的能力以及在脑海中建立后端知识图谱的能力。
这类能力不是一蹴而就的,不是花几天看看八股文就能学会的,更多的还是平日的沉淀。
只能说未雨绸缪吧。
大家都说现在越来越卷了,包括环境也越来越不好,此时个人的竞争力就越发的重要。
环境越差,越需要静心沉淀。
我是yes,我们下篇见~
微信扫码关注该文公众号作者