博主背景:92年生,渣本毕业,java岗,经验接近6年,base上海
本文宗旨:本文旨在将博主最近的面试经历分享给大家,并作些总结,尽量为在准备面试的同学缩小面试准备的范围,或者至少让同学们知道现在企业都问些啥,以及一些面试的注意事项,希望对你有参考作用
本次面试情况:2020年7月中开始,持续3周多时间,面了13家,2家没过,1家意外,10家通过,如下:
1)拍拍贷,业务岗资深技术专家+基础架构部资深技术专家,技术五面(这家经历比较特殊,两个岗位都通过了,所以技术面了5轮)
2)平安普惠金融,职级C2,技术三面(通过)
3)微众银行,技术两面(通过),是博主现在的东家…(最近东家在扩张,请允许我发两个招聘链接,内推呦)
社招链接:http://webanknew.cheng95.com/position/searchbole_id=1392781&channel=1
校招链接:http://webanknew.cheng95.com/position/searchbole_id=1392781&channel=2
4)北京什么值得买,架构师岗(一面没过)
5)soul,高级java,技术三面(通过)
6)多点small,技术三面(通过)
7)萨摩耶数科,技术三面(通过)
8)中国电信,云计算部门,技术三面(挂在技术三面)
9)哈罗单车,技术两面(通过)
10)蚂蚁金服,国际事业群(就是出了意外的那家…技术一面+做题,当场面试官反馈通过,第二天出了幺蛾子,说是我们公司算他们资方,不能招,我当然认为是扯淡,后续跟猎头了解到,蚂蚁对资方企业的员工简历有几个月的冷冻期,非常遗憾,没见识到蚂蚁面试官的厉害…)
11)饿了么,风控部门,职级P7(饿了么P7只能对标阿里P6,P6+),技术三面(通过)
12)2345,架构师岗,技术三面(通过)
13)普洛斯,技术二面(通过)
我从面试题风格的角度出发,把面过的公司分分类,同时会附上遇到的技术题,大部分问题会附上一些线索,如果你感兴趣,希望可以自行去寻找答案。我会标注出一些高频题,这种题都是博主面试过程中多次遇到的,希望引起你的重视。另外,我会根据面试主题推荐一些相关的书籍、视频、专栏等资料,都是我看过并觉得不错的、并且对面试直接有用的学习资料,你可以根据自己的兴趣选择
文章最后,会给出一些技术题之外的注意事项,也很重要呦…
上面试题
>>问题有点刁钻的:2345一面
一面面试官的开场白是这样的:我们正在招一个高P的,实力够硬的架构师,来做我们中台的建设
说实话,博主自认达不到"高P"的水平,当时心里还是有点虚的,没办法只能硬着头皮上了,问题如下:
1.什么情况下hashMap会导致oom(除了一直put的情况):呃…这是什么套路,问问1.7和1.8的区别不是挺好吗,我已经背好了啊(呃…是理解),这才是第一题呀,为什么这么不友好
这题跳过,后面也懒得去查了,忘了它!
2.解释下DDD聚合根、聚合的含义:这是唯一一家问了DDD(领域驱动设计)的公司,博主对DDD的了解也仅限于理论的学习,当时给出的答案只能算勉强。国内使用DDD的公司并不多,可能是学习成本比较高的缘故,并且要想推行DDD,对团队成员要求都比较高,一旦碰到了使用DDD的公司,说明他们的技术要求挺高。如果你想学习DDD,不要上来就啃**《领域驱动设计》和《实现领域驱动设计》这两本书,内容过于抽象,助眠效果甚好…可以先看看极客时间的《DDD实战课》**,通了后再考虑要不要去啃那两本书,关于DDD的学习,我得引用下王争老师在极客时间的专栏《设计模式之美》第11讲中的一段话:不过,我个人觉得,领域驱动设计有点儿类似敏捷开发、SOA、PAAS等概念,听起来很高大上,但实际上只值"五分钱。做好领域驱动设计的关键是看你对自己所做业务的熟悉程度,而不是你对领域驱动设计这个概念本身的掌握程度,即便你对领域驱动搞得再清楚,但是对业务不熟悉,也并不一定能做出合理的领域设计",所以不要花太多时间去研究它,但注意不是不研究,DDD作为一种架构设计方法论,比之于传统的架构设计方法还是有很大不同的,你需要去了解这种新的思路,最起码面试问到了,正好你又会这一块内容,你就比较有优势
3.mysql的binlog redolog undolog含义,如何配合保证一致性:这个在丁奇的**《mysql实战45讲》**中有详细说明,无论是DBA还是开发人员,这本"书"绝对不容错过,因为是专栏形式,每篇文章后都有答疑,你会发现有些答疑甚至比正文还要精彩,作者非常耐心的对每个提问作了回复,引导读者去思考,可谓谆谆善诱
4.mvcc存在的意义,事务中mvcc如何协调读和写的:**高频题!**这个在我的博文"隔离级别与mvcc的那些事"中有详细说明
5.ConcurrentHashMap如何做到在foreach时的线程安全
6.tcp的四次挥手过程,TIME_WAIT状态的意义、带来的问题、TCP的哪几个参数可以解决TIME_WAIT状态带来的问题:**高频题!**tcp的问题中,四次挥手比三次握手高频很多,问到四次挥手,TIME_WAIT肯定少不了;tcp常见的面试题不是很多,大概分为这几块:TCP四元组,三次握手、四次握手到底是在干啥、tcp如何保证可靠性、流控怎么做的,TIME_WAIT状态的含义及解决方案
7.netty的FastThreadLocal为啥比jdk的ThreadLocal快:因为技术栈里写了熟悉netty源码,所以问到,答案是数据结构不一样,前者为数组,后者为使用线性探测法的hashMap,感兴趣的童鞋可以看下源码
8.zk的一致性级别
9.redis cluster集群新增节点后,集群如何将slot迁移到新的节点,描述下这个过程:这个在**《redis设计与实现》的17.4节中有说明,由于看书时间过去了很久,答得不太好;《redis设计与实现》加上《redis深度历险》,这两本redis经典书籍**,即使你现在没时间看,后面也最好抽时间看看,看完再遇到redis面试题,一点不虚
10.设计一个redis热点key的处理方案,怎么实时检测出热点key,检测出之后怎么响应
11.设计一个最短响应时间负载均衡策略,算是笔试题,让我在第二天10点前把答案微信发给他:下面是我给出的第一版方案:
当时面试官用委婉的方式表达了对方案的不满意:
您都这样问了,我还敢说是嘛
既然是开卷,一定是允许查资料的,随后了解到dubbo里就有一个最短响应时间负载均衡策略,当然了,如果我直接把dubbo的这套策略搬出去,很明显是在怀疑面试官的智商,在看过这块的源码后,我又给出了一版方案:
一面最终是过了,面试官这样评价
我觉得大概是最后一题救了我的小命,挺喜欢面试官这种引导面试者思考的方式,可惜并不多见
二面大多是项目问题,技术问题只记住了这样几个:
1.看你写的熟悉mybatis源码,你说说mybatis的二级缓存怎么实现的:直接说不会,因为这块没看过
面试官接着问那你熟悉mybatis哪块,我就跟他讲了讲mybatis的整体架构,以及查询的工作流程,核心组件如何协作…
2.spring中bean的生命周期
3.spring怎么解决循环依赖的
(这三道题恰巧都是**高频题,**因为mybatis比较小巧、网上资料很多,上手难度不高,建议你看下这块的源码;spring源码就太多了,暂时没有碰到直接问spring某一块源码的,2/3两题是spring中最高频的问题,第2题因为spring中bean生命周期的每个节点都涉及到一个扩展点,如果你写过通用功能,一般都会接触到相关的扩展点类,所以面试官比较钟爱;至于第3题,搞不懂为啥是网红题,大概是没啥好问的了吧… )
第3题网上的答案大多看起来比较费劲,我给你简化下,你可以这样回答:
spring是采用三级缓存解决这个问题的(表明你看过源码了),三级缓存搞的比较复杂,但本质上是因为对象的构造和初始化两步可以独立开(先new,再set,没人不知道吧?),A依赖B(要注入B),B又依赖A(要注入A),spring在new完A后将其放到容器map中,A.setB时发现B不在map中,接着去new B,也放入map中,然后B.setA,发现map中可以取到,B.setA完了再接着A.setB,结束
>>底层问题较多的:拍拍贷基础架构岗
在拍拍贷的面试经历比较独特,开始面的是业务部的技术专家岗,问题基本上都是围绕项目来的,没啥可说的,三面boss面时,提到我写了个rpc框架后,面试官大腿一拍,说正好他们基础架构部在招人,然后换基础架构部的面试官来面,问题如下:
1.进程上下文切换原理,切的是什么:我的博文"深入理解上下文切换"正好就是关于上下文切换原理的,所以这题答得不错,关于操作系统原理,想要学习的同学可以看看B站的视频**“操作系统_清华大学(向勇、陈渝)”,**这是我看过唯一一个不需要倍速的视频教程,香的很
2.java类加载过程,说到双亲委托机制时,又问什么时候需要打破双亲委托机制:举了个SPI的例子,然后说明了下SPI如何利用中的线程上下文类加载器加载扩展类
3.try with resource为啥能关闭资源:因为资源对象都实现了java.io.Closeable接口…
4.我写的rpc协议为啥用定制的tcp,而不是http,这个问题不仅只局限于rpc框架,但凡是涉及到定制tcp协议和http选型时,都可以拿来问:用http和自定义tcp协议的本质目的不同,前者为了普适和通用,后者为了性能;http的使用非常广泛,不管是手机、浏览器、还是现在的物联网设备,都可以非常方便的接入http,所以说用http协议可以非常方便的支持各类终端,可以算作普通话;自定义的TCP协议只能用作内部交流,不具有普适性,算作内部黑话,由于tcp属于http下的一层,性能上会更好,但其实对于rpc协议来说,往往并不是性能极度敏感的场景,http协议的性能已经能满足了,不需要定制化的去提高性能,这是一个开放的时代,互联互通的世界,保证基本性能的前提下,通用和兼容性才是最重要的事情
5.rpc的心跳机制怎么做的,为啥不用tcp自带的keepalive:说了下netty的IdleHandler,基于它实现keepalive机制的原理
6.堆外内存为何存在,使用场景是? 如何释放堆外内存:**高频题!**我的博文"read write、mmap、directBuffer、sendfile傻傻分不清楚?"中对java的堆外内存directBuffer概念有作说明
7.相对于BIO,NIO本质上带来了什么好处,为何:NIO毫无疑问是**高频题!**吞吐量更高,NIO模型下,用户线程需要阻塞的时间更短(因为不需要用户线程轮训网络对端的数据是否就绪,由专门的selector线程去做),也就是说同样数量的线程,NIO模式下的阻塞时间更短,吞吐量自然更高
8.redis的数据分片集群中:cluster集群和基于proxy的集群,各自利弊,如何选型:1)性能:proxy模式多一层网络开销,对于性能敏感的场景,这一点要慎重考虑;2)客户端复杂度:使用proxy方式,客户端与原来处理单机redis方式一样,不用变化;cluster方式就要复杂很多了,客户端需要连接所有cluster节点,还需要维护key与节点的关系,cluster中还存在move和ask两种重定向问题,都需要客户端去处理;3)运维复杂度:为了实现去中心化,cluster集群内置了复杂的raft和Gossip协议,存在大量需要调优的参数,如果出现问题,往往很难下手;
9.redis cluster集群有多少个slot,用什么算法将key映射到slot:slot数量答出来了,什么算法不知道,猜了个一致性hash,但是不对
10.一致性hash用于解决什么问题:接着上一问,用于解决hash算法负载均衡时,节点数量发生变化后对负载均衡的结果变动过大的问题,高频题!
11.用过哪些设计模式,什么场景、怎么用的:**高频题!**设计模式的重要性不用我多说了吧,23种设计模式,常用的就那么些,工厂模式/模板方法模式/代理模式/适配器模式/观察者模式/策略模式/责任链模式,只看概念感觉很好理解,但重要的是要去写!多在平时编码过程中用一用这些设计模式,才能深刻理解,面试官不傻,不会简单的问下概念就了事…
12.如何设置合理的线程数?为啥有阻塞,线程数需要多一点:**高频题!**我的博文"透过rocketMq探究netty源码以及netty的通用生产实践原则"中第一节就说明了这个问题
13.我们项目用的哪种垃圾收集器,简单说一说:高频题!现在市面上企业用CMS的最多,我就大致说了下CMS的特性和原理,并将其与G1作了比较,关于GC的知识,极客时间的《java核心技术36讲》的27/28两讲说的比较清楚,建议你去看一看,值得注意的是,这门课程是专为面试准备的同学准备的,java基础中常见的面试题都有涉及,所以建议你全部看一遍,博主看下来觉得有些地方说的不太明确(尤其是前面几节),如果你也遇到不太明白的地方,应该及时查询资料,解决疑惑;还有些地方需要读者自己啃一啃源码,才能更好的理解
>>java基础覆盖最全面的:soul 技术一面二面
虽然是家不太知名的公司,但是问的可真全,而且两位面试官都很年轻!
可是…为什么回忆不起来他们都问些啥了…
好吧,事实是这家面完有事耽搁了几天,没及时记下题目,后面再整理时只回忆起了几道题:
1.ReetrantLock如何实现?aqs的原理,公平锁非公平锁
2.countDownLatch和CycleBarrier的使用场景有何区别
…
前面都是java基础类问题,还有很多其他的题,大多在上述的**《java核心技术36讲》**中都有提到,再次建议各位读一读
3.怎么提高redis批量操作效率,说说pipeline的原理:《redis深度历险》一书的"深入理解管道本质"一节中有提到,加上前面提到的《redis设计与实现》,这两本redis经典书籍,即使你现在没时间看,后面也最好抽时间看看,看完再遇到redis面试题,一点不虚
4.springboot解决了什么问题,原理:解决的就是使用spring时pom依赖管理、以及注入各种spring自带的bean这两个麻烦,解决依赖管理很简单,bean的自动装配就需要读者撸一撸代码了,**高频题!**可以说是springboot的必考题了
5.spring的生命周期:前面说了,高频题!
6.redis缓存一致性问题如何解决:高频题!
7.redis中zset的底层数据结构,为何这样设计:开始是压缩表,达到一定容量后转为跳表,设计上是基于空间时间的取舍,在**《redis深度历险》**中有提到
8.挑一个你用的频率最高的设计模式说一说:设计模式,前面说了,高频题!
>>阿里系的:
不得不说,阿里系的面试官挺nice,不需要自我介绍(有点烦上来就让自我介绍的,我的经历简历上你不会看?我说了你还不是得问问题,直接问不好嘛!),态度很好,问问题时一直往你会的点上引,尽量让你充分发挥,这样招人的策略就很好,面试者发挥的越好,面试官也能判断的越精准。关键是**不卡学历!**这点对我等渣本生算是非常友好了,话说上海的其他大厂博主能投的都投了,一点反应没有…同学们多找找可以内推的机会(脉脉好像有?没试过,还有些网站上活跃着各个大厂内推的帖子,你也可以找找,机会要比自己投的大得多)
>>>>哈罗单车一面:
哈罗一面可以说覆盖的点最全了(项目、架构、压测、性能、基础、分布式、你擅长的点)
1.先问项目
2.怎么画架构图,画了几类架构图,用什么工具画的
3.项目的一些性能参数(多少机器,什么配置,日活,平均TPS,峰值TPS这些你都得心里有数)
4.压测压到什么程度(用户数、并发数、tps)、关注哪些指标
5.性能优化关注哪些点,优化前后效果对比
项目问了接近一小时,然后问技术点,先问我哪块源码看的比较多,我说netty,就问了一些netty的问题
6.netty启动过程
7.netty的线程模型,有几种线程池
8.说到boss线程和work线程时,问了netty新连接接入的过程,怎么从boss线程转到word线程
9.pipeline的组成元素,主要组件,IO事件传播顺序
10.netty如何解决粘包拆包问题
如果你的技术栈里没有netty,请忽略,如果有,或对netty感兴趣,**《netty实战》**是强烈建议你看的,我的博文"透过rocketMq探究netty源码以及netty的通用生产实践原则"和"netty源码分析_带你搞懂ChannelHandler事件传播顺序"中介绍了一些netty的原理,你也可以看看
11.springboot源码看过嘛?能大概说说么,上面已经说了,**高频题!**读者可以翻回去看看具体要怎么准备
12.线上频繁fullGC怎么解决
13.mysql的索引结构,索引常见的优化原则,**高频题!**基本上问到mysql的都会问这两题
14.分布式事务解决方:说了下2PC,3PC,各自的优劣势,由于对基于分布式事务消息的最终一致性解决方案比较熟悉,我详细的说了下这块,我的博文"rocketMq事务消息原理与二阶段提交"介绍了rocketMq实现分布式事务消息的原理,你有兴趣也可以看看
15.分布式ID生成方案:说了下雪花算法
16.zookeeper的选举过程是怎样的,这个在**《从Paxos到Zookeeper 分布式一致性原理与实践》**一书的7.6节有详细的说明,这本书是zookeeper入门好书,还附带介绍了写分布式基础知识,建议一读
…
>>>>饿了么:
1.前两面都做了笔试题,第一道考得是对ThreadPoolExecutor的线程池以及原子变量的理解,第二道是将一个可能满足double的字符串,转换成double类型输出,不能使用高级API(这题在soul三面也遇到了…)
2.spring中事务的传播特性,并结合实际使用场景问事务的执行情况
3.事务的隔离级别,mysql中的事务隔离级别,是否存在幻读
4.springboot源码,再次出现,高频题!
5.七层网络协议
6.四层网络协议,网络层解决什么问题,传输层解决什么问题
7.tcp四元组包括哪些、tcp如何做到可靠送达,高频题!
8.数据库高可用方案
9.mysql主从延时问题如何解决,高频题!
10.会关注时下流行的技术么?
11.谈谈对云原生的理解
>>>>蚂蚁金服:
1.笔试题:分布式场景下,A系统调B系统的s服务,写下调用逻辑,考虑超时、异常处理,这题考得是幂等控制,分布式接口调用,超时异常问题无法避免,如何正确处理,是分布式系统开发时必须要考虑的问题
2.rocketMq延时队列原理:我的博文"RocketMq消费失败处理逻辑"中说明了提到了延时队列,你可以看一看
其他也没啥特殊的问题了,基本都包含在前面列的问题中,总体来说,蚂蚁一面问题比较常规,没给我留下什么深刻的印象,直到…hr说我被拒绝了,原因文章开头已经说了…
>>面试体验差的:中国电信技术三面
岗位是云计算部门(云存储方向),跟博主的经历是不太匹配的,投简历时看办公地点离我只有一公里,没想啥就投了,居然让我去面试…
一面问题过于简单(Object类中有哪些方法、wait和sleep有啥区别),就不提了,二面:
1.java的内存模型,说一说volatile、happen before:这个我认为也算**高频题!不过本次面试只有这一家问到,看不看读者请自行斟酌,《深入理解java虚拟机》**一书中的第12章就是关于java内存模型与线程的,赶时间可以单看这一章
2.如何用两个线程交替执行某个动作
3.死锁怎么解决:前面提到的B站视频"操作系统_清华大学(向勇、陈渝)"的第11章就是关于死锁问题的,其中基本说明了死锁问题的所有解决方案
4.hashmap为啥用红黑树来树化链表,为啥不是B+树?
5.如果让你设计一个数组结构,数组怎么扩容
6.redis的字符串底层结构,为何这样设计:**《redis设计与实现》**中开始就提到了这块内容
二面结束后,并不是直接三面技术,而是hr,hr跟我说了很多,最后在问了我的薪资要求后,说"等你晚上面了我们部门的总监"后我们再接着谈,这…又是什么新套路?
三面是晚上八点开始的(视频面),面试官大概迟到了10来分钟,来了之后让我一边自我介绍,他一边深深的靠在椅子上、伸懒腰、脱眼镜、揉眼睛、打哈欠…一顿操作那是行云流水,相当无我,您这么累,要不先睡会?
随后让我介绍了下项目,最后让我设计一个电梯调度系统!说实话,我还真不会!想了一会儿,给了个方案,被挑了个漏洞,又想…然后又有漏洞…然后就结束了,之后面试官问了我当前薪资和薪资要求,就没有然后了…
为什么面试体验差还拿出来单独说下呢,一来是觉着这套路有点像给不起工资,二来是提醒各位读者,如果遇到这种面试官,大可以怼上两句然后强势结束面试;你需要人,我需要工作,大家平等,没什么高下之分,基本礼貌做不好的面试官,要嘛是演,要嘛真的是没品,不管哪样,如果是你以后的领导,应该都好不到哪去,直接拜拜,节省时间;为啥我没直接结束面试?因为我傻,反应慢…希望各位不要像我一样
>>最后说说我现在的东家,微众银行:
一面两个面试官(也就是我现在的导师和直属上司),各问了几十分钟,题如下:
1.分布式限流模块怎么做的(比如限制某个产品号10s最大3000tps):设计了两版,都是基于redis,初版用zset设计了个滑动窗口,这个在《redis深度历险》一书中也有提及,滑动窗口有几个明显缺陷,窗口越大(比如从限制10s最大1000tps变成10s最大5000tps)就需要在zset中维持更多的元素,内存占用越大,zset的遍历也会耗时越久;第二版直接在lua脚本中实现令牌桶,然后在redis上执行;随后问了些限流tps、redis负载的问题
2.redis的数据分片集群中:cluster集群和基于proxy的集群,各自利弊,如何选型
3.我写的rpc协议为啥用定制的tcp,而不是http
2/3两个问题上面已经说明过了
4.rpc调用的超时机制如何做的:我的博文"透过rocketMq探究netty源码以及netty的通用生产实践原则"中的第4小节对超时处理有详细说明
5.rocketMq的负载均衡如何做的:rocketMq的负载均衡分为producer生产消息负载均衡,以及consumer均衡分摊消息,具体原理可以参考我的博文"rocketMq原理_客户端与namesrv及broker的交互"
6.rocketMq的offset如何管理的:这块是rocketMq中比较重要的内容,但是博主没看过这块源码…所以答得不太好,面试官也是很直接,说"看来这块内容你不太清楚,就不要强撑着装懂了"
所以说大家遇到不太清楚的,直接跳过比较好,毕竟没有人啥都会,把时间留给会的题成功率会更高
7.http长连接短连接问题,浏览器中发出5个http请求,会使用几个tcp连接,如果都使用一个连接,发出去的多个请求和回来的多个响应如何一一对应
8.开闭原则如何理解
9.里氏代换原则如何理解
10.悲观锁和乐观锁的适用场景问题
11.ThreadPoolExecutor有哪几个参数,如何协调:高频题!
12.在问到我的职业规划时,博主提到如果可以做基础架构方面(说白了就是写中间件)的工作,也是可以的(博主之前的观念是基础架构可以写更nb的代码,自然也就更nb),面试官(我现在的直属上司)面露不解神色,“为什么,技术不是为业务服务的吗?”,博主当时觉得这句话挺有道理啊,支支吾吾了一会这个问题就算过了。但是这件事不能就这样结束了,我得搞清楚为啥面试官会表示不解啊,难道我以前的观念是错的?之后我咨询了好些朋友,有资深架构师,也有做过基础架构的,他们都一致的表示"不看好基础架构",理由如下:1.方向比较局限,未来方向就局限在中间件了;2.市场需求比较少,基本上有基础架构部的企业,业务开发人员至少是基础架构人员的10倍,甚至更多;3.趋势是基础的技术在不断下沉,需要做的基础架构开发工作会逐渐变少;4.基础架构杂事儿比较多,因为开发的东西是给业务部门用的,沟通会占用很大一部分的时间,尤其是跟技术比较挫的业务开发人员对接,说减寿都不为过啊…5.赚钱的永远是业务部门,其他都是为业务服务的,也就是我直属上司的观念。不过也有同学表示刚毕业时做两年基础架构工作,对基本功的锻炼有好处,基础架构工作比较单纯,相对来说更轻松点;我列出这些,并不是劝退,也有做基础架构工作做的很厉害的,技术活,终究还是看你钻的有多深。如果你有做基础架构的想法,这些你至少得知道…
哎不对啊,为啥大家都知道,我好像知道的有点晚?我突然回想起面试拍拍贷时,hr问我想做基础架构还是业务开发,我说基础架构,hr抑制不住自己的笑容,同时一脸惊讶"啊!我以为你会选业务开发",所以hr小姐姐,你这个笑容是觉得我傻咯?
二面面试官是个女boss(也就是我们部门的总经理),一般来说最后一轮技术面挂人的概率不高,因为大boss很少问细节问题,大多是看看眼缘走个过场,但是博主险些就跪在这一面,虽然都是些项目问题,但问的太细了!其中一个问题想了好一会才理顺,要是没想通,怕是就跪了,技术boss中女的不多,但能上去的一般都很强,如果你也遇到了女boss,一定要谨慎呀骚年
之后问到了项目中遇到过什么难题,怎么发现的,怎么解决的:这题是高频题!(文末总结处会再作下说明),回答好了可以加不少分,通过了解面试者解决难题的思路,比起一般的面试题,确实可以更清晰的判断面试者的能力,博主遇到过几次问题,并且都解决的还不错,所以这道题算是我的加分项了
技术题到这里就说完了,最后补充几点注意事项:
1.项目问题我基本都略过了,但不代表不重要,相反项目非常重要,基本上前面的面试官上来都会先问项目,再问技术,后面的boss面,更偏向于问项目,所以大家一定要对自己做的东西知根知底,不然很可能在某个细节上就跪了;比如…你的项目是做什么的,你的职责是什么,项目架构图怎样的,集群规模怎样,tps多少,这个点这样设计的理由是什么,有什么好处,为什么选用这个技术,而不是那个技术,你觉得项目中还有哪些地方需要优化的
2.做项目时遇到过什么难题,怎么解决的?这是个**高频题!**boss面都喜欢问这个问题(博主遇到过不下四次),你有遇到过那是最好,没有最好也造一个…
3.简历里写的每一个技术栈,请你慎重,最起码基本原理你得懂,才好写到简历上,面试官都会按简历上的技术栈来问,如果你只是用过,建议不要写上去;换句话说,你要想多写点技术栈,建议把原理搞搞清楚,能选几个去深入那是最好了
4.如果你对技术追求比较高,面试过程中你同样要注意考察面试官的技术水平,如果技术问题寥寥无几或者占比很低,说明公司对技术这块并不太重视,技术实力应该也是平平,选择时就要谨慎(如果你打算去扛把子,请忽略…);有些面试官虽然一直在问技术问题,但是你会发现每道题问完没有任何深入,就开始问下一题了,这种情况,要嘛是你答得不对路,要嘛是面试官在水!
5.最好有一个深入了解的技术栈,并在简历里突出一下,在面试过程中尽量引导面试官问你这方面的问题,深入的了解可以让你说的更透彻,关键是可以说很长时间…可以大大提高面试成功率;楼主对netty了解的比较多,业余时间还写了个rpc,好几场面试都靠netty和rpc耗了不少时间,所以觉得在深入一个技术栈方面花时间,性价比还是蛮高的
6.为啥离职,**高频题!boss和hr面都喜欢问:**不要说得过于简单,比如你答是为了更好的技术平台、为了更好的待遇,虽然跳槽大多是这两个原因,但不加修饰的说出来会显得你不太有人情味,那么多面试者,能到这个环节的也有不少,多准备点内容,让人觉得你是经过认真考虑、想好了才要离职的,当然就更偏向于你啦;比如"我对自己的要求一直挺高,这几年表现得也还不错,领导和同事都很认可,但是行业/公司这两年效益不太好,工资涨幅不太如意,加上我平时业余时间也积累的蛮多,所以希望找一个大点的平台,更好的发挥自己的实力…",你可以结合自己的实际情况,多准备点措辞
7.职业规划,高频题!boss和hr面都喜欢问:和上面这题类似,不要说得过于简单,我再举个例子,“我工作了X年了,这些年大大小小的项目都做过,团队带过,最近也一直在做架构设计,未来如果可以继续做架构设计、或者有机会做上团队leader,我觉得都符合我的预期”
8.兴趣爱好里如果写了爱看书,有些领导或者hr会问你最近都在看些什么书,别露馅了
9.你觉得你有哪些优点:要注意的是,一般这个问题问完会接着让你举个例子说明下为啥具备这个优点,所以你在准备时,不要想当然,一个优点要对应一个案例,有理有据才能让人信服…
10.你觉得你有哪些缺点:这个答不好就是送命题了,比如你说"我觉得我有点内向,不善于沟通"
别真的说自己的缺点就好…
11.多找找内推渠道!比你自己乱投机会大得多,前面已经说了,各位读者自己去找找吧…
另外,因为已经加过上面一些公司的hr,如果你感兴趣,并且你的base也在上海,可以私信我,咱们试试内推…
暂时就写这么多了,祝各位好运…