其实公司肯花时间让你去面试,前提条件必定是经过你的简历,必定发现了你和公司的匹配点,也就是说,必定是有录用意向的。java
在技术面试的时间段里(最长1个小时),你若是能展示你的优点那是最好的,但若是你作不到这点,简单点,让面试官感受你达到了最低标准便可。这比如在大学里考试,有些同窗对某门课的知识点彻底不懂,但也有可能经过考前突击和刷题来经过考试(不做弊),并且还有可能考高分。nginx
至于经过技术面试后,项目经理或人事的面试通常是过滤特别差的,好比考察些团队协做能力和沟通表达能力等,这对你们来讲应该不是问题。因此在本文里,就以Java后端高级开发为例,讲述下面试的准备点。方法是通用的,其它方向的同窗也能够以此类推。面试
1、至少定出2天的准备时间redis
面试的准备时间通常别低于2天,若是能够,再延长些,但别太长。算法
好比是去现场面试,能够找的借口就比较多,好比项目忙,会多,时间间隔别超过5个工做日。好比周二收到通知,就尽可能约到周五,若是是是周三周四,那么别超过下周二。spring
电话面试的话,借口很少,通常能够约到两天后。数据库
但不建议今天接到通知,明天就直接电话面或现场面了,一方面公司会认为你当前很闲,另外一方面,你真就没太多的准备时间了。后端
2、必定得再次阅读公司的职位要求设计模式
就比如是考试,先得审题,大方向错了,准备就白作了。缓存
好比,有以下的职位描述。
咱们能从中挖掘出以下的技能需求点:
3年经验,熟悉经常使用类库
熟悉Spring和Mybatis框架
熟悉分布式中间件(好比消息,缓存等中间件)
熟悉数据库,最好是NoSQL
最好有大数据经验
而关于非技能的要求以下:
有责任心,有主动性
须要有团队合做的能力
须要有良好的编码习惯,学习能力要强。
其实,在投简历前,就能够根据上述要求微调简历,这样得到该岗位的面试机会能更大。不过在本文里,就将以上述需求为例,讲述面试前的准备。
3、在刷题前,先准备项目描述的说辞
我见到很多候选人,在面试前,就会着重刷题,好比看算法题,基础题等,这个是必要的。
不过在面试里,第一个环节通常都是项目介绍,也就是说,若是面试官经过项目,看到你的技能和职位不匹配,你甚至没有机会被问其余问题。
这里介绍些项目描述的要点:
1. 业务需求能够一笔带过,用寥寥几句话介绍项目的背景,大体作了什么,工期和人数便可,别讲太多,由于面试官不关心。下面给出一个说辞的案例。
我上个项目是作电信系统的计费软件,客户是xxx,工期是xxx个月,有5我的一块儿作,我在里面作的是开发。
2. 结合项目实际需求,介绍项目用到的技术,好比在上述职位描述里,要求有spring mvc,消息中间件,数据库等需求,下面一样给出各说辞的案例。
在这个项目里,咱们用到了Spring MVC(或Spring Boot或Spring Cloud)框架,数据库是用Oracle,ORM组件是用Mytabis,在项目里,咱们在是经过消息queue来发送计费成功的消息,消息中间件咱们使用Kafka,为了下降数据库访问次数,咱们会把客户信息放在redis缓存中。此外,咱们在网关层接入了nginx作负载均衡。
你们能看到,在上述说辞里,咱们结合了案例,说出了招聘方须要的技术点,不过请注意,这里仅仅是介绍项目,结合功能点说出技术便可,别过多展开,由于一旦过分展开,就会让面试官感受你思路不清晰,或者凭借准备有恃无恐。
3. 再结合项目,说些招聘方须要的非技术的要求。
在这个项目里,咱们用到了xx设计模式,并且,咱们会按期review代码,以求保证代码的质量,并且,当项目工期比较紧的时候,我还会客串配置管理的角色。在这个项目里,我一有问题,立刻会和经理或测试或其它组的人沟通。
4. 若是有,说下你在项目里的亮点,好比用到了一些比较好的技术。
这个项目对数据库性能和内存性能要求比较高,因此我用到了Oracle调优技术和JVM内存优化技术,此外,咱们还用到了大数据分析的工具对计费模式作了优化。
你们看到,上述说辞不复杂,准备好之后,提及来估计也就2,3分钟 但就经过上述说辞,亮出了你的基本信息,并且能给面试官留下思路清晰,技术匹配的印象。
这里请注意,若是你们在项目里的技术和要求的不匹配,不建议做假,但能够经过以下的方式来作到匹配。
1. 若是你的ORM用的不是Mytabis,而是itabis或干脆hibernate,就直说用到这些,由于ORM是相通的。
2. 若是这个技术,好比Redis,在项目里用到,但你没作,你能够在了解的基础上说出来,好比说:“这个项目还用到了Reids...,redis是用在xx模块上,功能是xxx”,请注意,这里你说是项目用到了,而不是你用到了,这里,若是在后继的回答中,你对redis的用法和技能问题都能回答上,那么面试官不会介意这点。
3. 某个技术你在这个项目里没用到,但你比较熟悉,你也能够经过以下的说辞说下。
我在其它项目里还用到了nginx(模糊回答,没刻意说这个项目),具体的应用场景是xxx(结合功能点说),用到了其中的xx配置项(经过些关节点来印证你用过)
这里请务必注意,在准备项目说辞的时候,能够尽可能和职位要求靠,但别太离谱。由于你说的每一个技术点,在后面,面试官均可能提问。若是某个技术点你没掌握,其实问题不大,面试官原本就没要求你十全十美,但若是你说你用过某个技术,但经过后面的问题,面试官发现你其实没用过,或者掌握程度没像你说得那样好,那么这个性质就不同了。
4、必定得准备项目描述里提到的技术
在介绍项目时,就比如是钓鱼,吸引面试官把注意力集中到你提到的技术点上。
因此在准备面试的时候,必定得先准备你项目里提到的技术(大多也是招聘要求的技术)。准备时能够按照以下的思路。
第一:必定得结合项目背景,好比你们要准备分布式缓存redis,先说在哪一个项目的哪一个场景里用到,好比在刚才提到的电信系统里。这样就会让面试官感受到这个技术你实际用过,而不是简单地只有学习经验。
第二:有很多关键点,你用到之后必定是知道的,好比redis的基本数据结构,如何读和写,缓存若是击穿了怎么办?这些问题点必定得准备,所谓吹牛要打草稿。好比你能够说,在配置redis时,用到了xx配置文件的xx属性,它是干吗的。这话不用多,但说出来之后,面试官一听就知道你真的用过。
第三:能够准备些这个技术的高级问题,好比Redis集群如何搭建,集群里一台机器失效了怎么热备转移。一样,能够讲些如何配置以及如何使用的关键点。或者,你们能够准备redis分布式锁的底层实现。
请记住,须要对你项目里提到的任何技术都按上述要求作准备,虽然有些技术你未必会被问到。
这里,若是你们在项目里仅仅是用到了基本的功能,好比redis就用了基本的读和写,但你能够适当看些高级知识点和面试题。
5、必定得准备亮点话题,并想办法往这方面绕,并且亮点话题多多益善
对于java高级开发而言,能够准备以下的话题,你们也能以此为参考,准备些其它的话题:
虚拟机内存优化
数据库性能调优
分布式高并发架构
一些热门组件,好比redis,nginx等
大数据方向的用法
java core(好比集合或多线程)方面的底层实现代码
Spring系列(好比IOC, AOP, MVC,Spring Boot, Spring Cloud)方面的底层实现代码。
要准备到什么程度:
最好结合项目实际说出真的用过这些技术。
最好往性能调优方面靠。
下面就以虚拟机为例,说下如何在面试中引出该话题,以及面试时该怎么说。其它亮点话题也能够照此准备。
第一:在简历的最近项目介绍里加上相似这样描述,“这个项目的内存要求比较高,虽然在项目里分配的对象很多,但这个项目只被分配了1G内存,因此在这个项目里,我实践了一些定位排查内存问题的技能,也作了些调优的工做“,这样面试官见到简历的描述,就会天然而然地提问了。
第二:在面试中总会有“项目介绍”这个环节,面试官会让候选人介绍最近的(或最拿得出手)的一个项目,这样你们就能够顺势说出刚才已经给出的描述。
第三:你们能够在回答数据库或集合等方面的问题时引出这个话题,好比回答完JDBC问题后,你们能够说一句,“用好的Connection对象咱们会及时关闭,不然它所占用的内存对象没法被GC回收”,或者在谈及List等集合类型时,同时多说一句,“用好的集合对象咱们会及时clear掉,不然这个集合也会对一些对象产生强引用,这样就会延迟对象的回收时间”。
第四:在自我总结时,能够说,有虚拟机调优的经验。
那么,在面试时,该怎么说呢?
你们能够先从堆的结构入手,进而详细说明垃圾回收的流程。
再进一步说明如何写出高性能的代码。好比物理对象(好比Connectio或IO)用好以后得及时close。大的对象用好后应当及时设置成null,以撤销强引用。集合对象用好后应当及时clear。尽可能别频繁地使用String(或其它不变类)对象,这样容易产生内存碎片。
还展现监控、定位和调优方面的综合能力。这里能够说下,好比经过Jprofiler+jmeter进行JVM性能调优的方法。
你们甚至能够看些虚拟机的底层实现细节,在面试中说下,这样能大大提高本身的专业素养。
6、时间多,再去刷题
当你们在准备好项目描述,并且当项目里的技术也都准备好说辞之后,也按了上述要求准备好了亮点,这时候再去刷题。
请记住,刷题的时候,技术的优先,算法的看些基本的,好比排序等便可,而智力题,除非是校招,不然通常不怎么会问。
在面试时,你们能够经过上文中给出的方法,经过多抛出技术点,把面试引入准备好的范围。也就是说,若是面试官发现候选人技术能够,其它的技术问题就不会怎么问了。
在面试时,必定得经过准备主导面试官提问,不然,一旦面试官开始天马行空地问问题,你们薄弱点被暴露的机会就有可能大大增长。
7、面试题,经过准备让面试官感受你软实力也行
面试官只有当确认候选人在责任心和团队协做能力方面没问题,才敢把他招进公司。有些面试官会经过问问题来确认这两点,但有些有经验的面试官甚至能够经过候选人回答问题的方式和说话的语气上来确认。
因此你们在面试前,首先能够按以下的要点,在平时的生活和工做中练熟良好交流方式。
第一:谈吐清晰,语速不急不缓,至少让面试官能听懂你说的话。并且力求说话果断,别吞吞吐吐的,这样能显示出你有足够的担当。
第二:交流时尽可能目视面试官,语气不亢不卑,别太僵硬,说话别过于强势。脸部能够适当微笑,面试官在说话时能够适当点头互动,总之得让面试官感受和你交流不吃力,最好还让面试官感受乐意和你交流。
第三:应积极主动回答面试官的提问,若是没听明白问题,别僵持着等面试官进一步解释,应当主动询问。若是感受面试官没彻底理解本身的回答,或者理解有误,应当进一步主动解释,以展现积极沟通的姿态。
第四:即便不认同面试官的观点,也应小心平气和地交流,不能急躁,别轻易打断面试官的话,能够倾听完面试官的话后耐心地与之交流。有些面试官可能会故意刁难候选人,美其名曰“压力测试”,在这种状况下,候选人更应小心平气和,不能起争执。
在面试过程当中,再有经验的面试官可能也没法经过实例来验证候选人的“团队协做能力”(由于在短期内没法协做),但若是你们能给面试官留下“沟通表达没问题”、“为人和蔼”和“遇到难点能积极主动协调沟通”的良好印象,那么面试官通常也能承认候选人的团队协做能力。
此外,你们还能够准备以下的说辞,一旦能找合适的机会说出来,面试官更会承认你们的责任心和团队协做能力。
说辞1:(在介绍项目时)这个项目作到一半时,客户方变动了一些需求点,这给咱们项目组形成了比较大的压力。在项目经理的带领下,咱们都被分配了更多的任务,在这种状况下,我经过加班按时按质完成了任务,并且在作的过程当中,一旦出现需求或技术方面的问题,我也会主动找同事或项目经理确认。
总之,在出现问题时,你不是退缩,而能经过加班等方式积极面对和解决问题,并且一旦有问题,你不是得过且过,而会主动确认。
说辞2:(介绍本身在项目中的角色)在这个项目组里,除了本职的开发工做外,我还会积极主动地和测试人员沟通,一方面告诉他们该怎么测,另外一方面,一旦发现问题,我会和他们一块儿重现问题,完成修改后我也会主动告诉测试人员,让他们尽快确认。
总之,在项目里,你不只能完成本职工做,并且还能和团队其它人员一块儿协做。
说辞3:(介绍项目的亮点)在项目里,我遇到一个需求点,这须要多个团队一块儿开发,这时我会和相关人员一块儿开会,肯定各自的任务 点和工期,完成功能点后咱们会一块儿联调。
说辞4:(若是面试官问你,遇到本身没法解决的问题该怎么办?)我不会推掉任务,我先会查阅资料,若是不行,我会问项目经理,在他们给出的解决方案基础上,我会细化成具体的实现代码,最后我会把实现好的功能点和项目经理确认,以求没有理解上的误差。
在责任心和团队协做能力这两方面,不建议直接说“我有”,由于这至关于自我表扬,可信度不高,你们能够采用上述“用具体事实证实”的方式,这样面试官听了后就天然能承认你们的相关能力。