早就想分享一下面试之路的一些技巧和遇到的一些困难以及面试的一些常见问题总结,今天终于有时间来总结一下了。
    经过2周14轮的面试,我感受颇深,也学到了一些经验,并且在面试过程中,也学到了很多知识,也遇到过各种各样的面试官。所以我今天想针对如下几个方面进行一下总结,希望这篇文章能对正在面试以及将要跳槽的java程序员小伙伴能提供一些参考性的建议或者通过这篇文章能学到一些技巧。下面从以下几个方面对面试进行总结。首先是面试需要带的东西,第二点就是礼仪,第三就是面试题,第四面试交谈技巧,第五着装打扮。第六跟HR面试的一些技巧。最后离场时的礼貌。
    五年java程序员的面试之路经验总结 - 图1
    首先,先说一下,面试过程中需要带的东西,首先带个一本子,面试结束后用来记录问到的面试题,然后也能通过这个小的举动,给HR和面试官留下好的印象,如果有笔试题,也能在本子上做个运算之类的。然后带一只笔,在面试过程用。如果用不到。也能给面试官留个好印象,也是从侧面告诉面试官,你在做一件事之前,是会做好充分准备的。然后就是带一份简历。有的HR小姐姐可能会给你打印好。虽然是这样,也要自己带一份。留作备用。
    第二,面试当天或者前一天,主动的跟HR确定面试地址以及面试时间,这也是一个给人留下好印象的一个点,说明你很重视这次面试,然后到达面试现场的时候,首先给HR打个电话或者发个消息。告诉她你到了。等待下一步的指示。当看到HR小姐姐的时候,一定要很有礼貌的说一句您好。我是谁,我是来面试的。然后HR小姐姐会给你带到某个小黑屋里让你等一会儿。这个时候,一定要好好的坐着等待面试官的到来。这个时候,把你的手机打静音放在口袋里。把简历还有本子、笔都规整的放在桌子上。静静的等待面试官。
    第三,你的着装打扮一定要得体大方,干净、整洁。发型一定要整齐,不要看起来很邋遢的感觉给人,这样有洁癖的面试官或者HR可能会认为你不重视这次面试以及不尊重他们。所以着装一定要整洁。
    第四,当面试官来的时候,你首先要起立在面试官开口前,先抢先说面试官您好。这个时候一般面试官都会很有风度的回你一句您好,请坐之类的礼貌用语。这个时候,最好等面试官先坐下,然后再坐下。表现出对面试官的尊敬。然后面对微笑的看着面试官就好。
    第五,大部分的面试官可能会让你先进行一个自我介绍,这是给面试官留下好印象的最重要的一环,说话的时候一定要自信,并且大方自然,眼睛目不转睛的看着面试官就好。然后就开始介绍自己,在介绍自己的时候除了一些基本信息之外,一定要说一些,自己的爱好。那么你的爱好最重要的一定是看书以及学习之类的。用很自然的表达方式表现出学习是你的爱好,而不是任务。比如喜欢钻研开源框架,或者底层操作系统的一些知识。然后,如果说你的学历不好,那你在面试的时候压根儿就不要提学历的问题。然后,还要说,你的优势是什么?有一个通用的优势,就是你能很快熟悉别人写的代码以及能很快的学习一门技术并且能应用到生产环境。也就是说你的学习能力强,这个对于公司来说很重要的一点,所以一定要多描述一些。即使是编,也要编的自然一些。不要夸大其词,别让面试官以为你在吹牛逼。五年java程序员的面试之路经验总结 - 图2
    第六,说到第六点这个也是技巧方面的,这个要从你选择招聘网站开始说起,首先你要选对一个好的招聘网站才有可能找到一份理想的工作,不卖关子,笔者用的就是BOSS直聘,别问为什么,很多好公司都去上面发布消息。而且和HR沟通也很方遍。不至于看到一个好公司不能获取到公司信息。所以我选的是这个。当然你也可以选择其他的网站。比如51Job,智联招聘等网站。然后在寻找公司的时候一定要选择一个大公司,那种小公司尽量不要去选择,然后你一定要看公司简介是做外包,还是外派还是自主研发,以及业务,这些都能给带来你想要的信息。反正我找工作的标准就是非外包,非外派,非对日,公司人数大于150人,并且有自主研发的项目。(HR要漂亮,这个看个人需求。哈哈)然后就是简历的编写,要把你最熟悉的几个技能点写到简历的最前面和最后面,中间部分写上你最不擅长的那些,当然也可以不写,但是不写人家会以为你懂得少。所以还是建议写。不要写的很会的样子。不然很难自圆其说。为什么要这样写,因为很多面试官有习惯他也不知道问什么所以从简历开始问。开头和结尾的选择是面试官的习惯,不知道为什么很多面试官都会有这样的习惯,你习惯就好。如果面试官从头开始问你很幸运他上套了。你前面会给他留下非常好的印象,有的面试官可能问完几个你对答如流后面基本不会问了。如果从头问到最后其实也不错,中间那些你答的不好的,会被后面答的好的给掩饰掉一些。这也算是一个小技巧。五年java程序员的面试之路经验总结 - 图3
    第七点,就是我要说的,在跟面试官交谈的时候,如果你会的问题,你一定要答的细一些,尽量的拖延时间,你可以按照你自己的节奏,把面试官牢牢的控制在你的节奏里。比如他问你Spring IOC的生明周期,你就可以从Bean定义说起,不过这部分内容尽量简洁快速的说,然后说主流程一定要细,那这个时候面试官没问你循环依赖的问题,你就可以给他说一下循环依赖,然后说到后面的时候,你就可以赠送他IOC生命周期内的9大后置处理器。把重点都说给他听。如果遇到一般的面试官,你说完这个他可能就不会再问你Spring的问题了。这个时候恭喜你,第一印象分,满分。如果遇到那种(难产)的面试官,他可能会接着问你Spring的其他问题,这个时候,这个面试官多少会觉得你可能在他面前秀技术,或者觉得你在装B,其实都不是,我们是在拖延时间,他不懂你的套路。但是你自己懂,这个时候,面试官继续深问这个话题的话,如果你会,你也不要答出来,你只说5-7成就可以,也不要说完全不会,然后借机,你就夸面试官,你就说,看来我对Spring的理解还是不深刻,能看出来您对Spring的理解比我强很多,很多,很多。然后顺嘴问他一下,能否将您平时学习源码的宝贵经验分享我一些。我还想提升一下。这个时候面试的面子你给足了,你的B也装足了。聊得融洽你后面会很好过的。到面试的最后如果你前面答的都很好,后面的问题即使你会,你也不要全答出来。然后继续夸面试官。这样给足他面子。至少他不会讨厌你。至于一线大厂。我们回答问的方式还是和这个稍微有一些区别的。大厂的问题,你尽量答出面试官想听的。然后再夸面试官。因为大厂毕竟还是技术第一位的。如果最后聊到非技术问题的时候,这个时候,你要表现出自己平时喜欢看开源,玩论坛,写博客之类的兴趣爱好。以及对公司有一定的好感,(技术应用,或是业务发展)至于来不来那是你自己的事儿,先把路铺好再说。最后问你对公司有没有什么想问的时候,你一定要问公司项目所用的技术,这个时候还要借机说你对这个技术很感兴趣。想学习或者说你很熟练,来表现出自己符合公司的技术需求。然后还要问一下,业务发展方向这个完全是为了自己是否选择这家公司的一个重要的指标。如果你很感兴趣或者很喜欢,那一样,还是表现出你很感兴趣或者很擅长这个领域的某个点。这一轮下来。基本面试就差不多了。你给面试官的感觉就是,这小伙子,技术不错,人品不错,情商不错,更主要的是公司的业务他很喜欢,技术也很喜欢,学习能力还强。有个缺点就是喜欢装B,不过他也说了。还要向我多学习,我也能管理。对公司也有好处。这样技术面试基本就能过了,对了,面试结束的礼貌一定不要忽略了。首先,起身的时候微微弯腰说声谢谢,您辛苦了。非常感谢您。这样的客套话一定要说,然后抢先一步去给面试官开个门。你最后在走,走的时候把椅子放回原处。这些细节一定要注意。这样在礼貌上肯定是满分。跳不出毛病,合理,合法,合规。五年java程序员的面试之路经验总结 - 图4
    第七,第七点就是HR面,跟HR谈话的时候,其实在这方面我的经验不是很足。但是一定要表现出谦卑。说话礼貌用语。如果HR让你问她问题的时候一定不要说没有什么想问的。你一定要问,你来到公司以后做什么?什么岗位,然后也要表现出你很适合并且符合这个岗位的需求。然后,一定不要问HR公司加不加班儿,这种愚蠢的问题真的不要问。没有任何意义。然后一定要问一下,之前这个岗位那个人离职的原因,从这个原因你能知道公司的一些缺点在哪里。如果你早就决定来了。那这个问题也不要问了。最后问一下,薪资待遇方面的问题。毕竟来了就是为了这个嘛。这个时候HR就会给你详细的讲解。有的公司套路深,你问他公积金的时候她会说,按照劳动法标准交。这个时候你一定要问仔细。什么叫劳动法标准,4096也是全额也是。但是你不能这样问。你可以说,对不起,我没太懂您的意思。然后就问,贵公司是按照4096的标准吗?还是按照全额工资的百分之25去缴纳。这个时候HR知道你懂行,她自然不会骗你。也会说实话。记得哈,社保和公积金可不是一个标准。也一定要问清楚。大概就是这些吧。最后走的时候你还可以问一下,什么时候可以入职之类的话题,表现出你愿意来这个公司。当然来不来你说了算。走的时候依然不要忘了礼貌的问题。给面试官和HR都留个好印象我是觉得很重要。最后我总结一下,2周14轮面试的面试题。五年java程序员的面试之路经验总结 - 图5
    一:Spring全家桶专区(面试重灾区):
    1:SpringBean的生命周期。
    2:Spring如何解决循环依赖问题
    3:Spring容器启动时,为什么先加载BeanFactoryPostProcess
    4:AOP能做什么?
    5:动态代理和静态代理的区别?
    6:Spring是如何解析Bean定义的?容器启动就将Bean定义加载到内存了么?如何修改Bean定义的?
    7:beanFactory和FactoryBean的区别。
    8:Spring容器启动时可以实现哪些开放式接口(非后置处理器)
    9:你是如何理解SpringIOC的?
    10:BeanFactory 和 ApplicationContext 有什么区别?
    11:解释一下依赖注入?
    12:Spring Bean 的作用域之间有什么区别?
    13:Spring 框架中都用到了哪些设计模式? 举例说明?
    14:熔断和服务降级的区别?
    15:feign和ribbon的区别?
    16:ribbon如何进行通信调用的?
    17:zuul的升级版是什么?
    18:项目中什么地方用到了服务降级?
    19:如何配置config?
    20:Eureka和Console的区别?
    21:Eureka如何实现自我保护机制?


    二:并发专题专区全家桶(面试重灾区):
    1:Sync的实现原理?
    2:Sync和Look的区别?
    3:Volatile的作用?
    4:可重入锁ReentrantLook和Sync的实现区别?
    5:CyclicBarrier 和CountDownLatch的区别?举例说明一下?
    6:信号量是怎么回事儿?
    7:AQS是怎么回事儿?按照你的理解说?
    8:为什么说Sync是悲观锁?实现原理?CAS是怎么回事儿?原理?
    9:创建线程有几种方式?区别?
    10:有哪些线程池?
    11:ThreadLocal用过吗?怎么回事儿?
    12:解释锁的消除以及锁的粗化?
    13:Sync是重量级锁吗?说一下原理?
    14:用过魔术类嘛?简单说一下?
    15:说一说concruuentHashMap和hashMap的区别?
    16: concruuentHashMap可以被代替吗?
    17:concruuentHashMap如何实现线程安全的?


    三:Mysql面试题(面试重灾区)
    1:事务的4种隔离级别 ?
    2:默认采用哪种事务隔离级别?
    3:sql执行计划如何使用?
    4:mysql为什么不用B树而用B+树?
    5:B+树的数据结构?说一下?
    6:什么情况下索引会生效或者不会生效?
    7:举例说明可重复读隔离级别?
    8:事务的传播机制有哪些?
    9:如何实现数据库集群?
    10:如何实现分布式事务?
    11:说一下两种常用Mysql的引擎?以及区别?
    12:Mysql为什么用自增主键?
    13:B+树索引和哈希索引的区别 ?


    四:jvm面试题
    1:垃圾回收算法 有哪些?
    2:解释一下新生代和老年代?
    3:new出来的对象一定存在堆区吗?
    4:什么是双亲委派机制?
    5:说一下java的内存结构?
    6:Java对象创建过程?
    7:JVM的永久代中会发生垃圾回收么?
    8:有哪些调优命令?
    9:Minor GC与Full GC分别在什么时候发生?


    五:MQ和Redis面试题
    1:你用过哪些MQ?区别?
    2:如何确定rabbitMQ如何确定消息被消费了?
    3:redis的数据类型有哪些?
    4:redis有哪些高级应用?
    5:用过芒果DB嘛?
    6:解释一下redis的主从复制?
    7:解释一下缓存击穿和缓存穿透的区别?
    六:分布式相关面试题
    1:如何实现分布式事务?
    2:如何实现分布式锁?项目中哪里应用过?
    3:如何实现分布式Session
    4:zookeeper的选举策略 ?
    五年java程序员的面试之路经验总结 - 图6