技术方面 | 可以说的亮点 |
Java集合对象 | 1 能根据项目的需求选用合适的集合对象,比如知道ArrayList和LinkedList的差异,并能合理选用。 2 能在合适的场合选用WeakHashMap。 3 可以适当讲一些集合的JDK底层实现代码。 |
异常处理方面 | 能在finally从句里写释放资源的代码 |
JDBC方面 | 1 能通过PreparedStatement的预处理方法来防止SQL注入。 2 能通过批处理来提升操作性能。 3 能通过实例讲述事务隔离级别的含义 |
多线程方面 | 1 会使用线程池 2 能通过锁或信号量等手段正确地处理多线程并发时的数据一致性。 |
在下表里,我们列了些在数据库方面可以准备的亮点。
技术方面 | 可以说的亮点 |
建表 | 建表时需要根据项目的数据情况,考虑是采用三范式或是反范式。 |
SQL调优 | 1 可以通过查看日志等方式看哪些SQL需要调优。 2 可以通过执行计划查看SQL的所消耗的代价,并据此调优。 3 可以通过建索引,建分区等手段来优化SQL性能。 |
事务 | 1 可以说下JDBC或Spring里是如何管理事务的。 2 可以说下Spring里的声明式事务的做法和优点。 3 可以举例说明事务隔离级别和事务传播机制的用法。 |
分布式数据库 | 1 可以通过水平或竖直等方式的方式来拆分数据库,从而减轻对单表访问所需要的代价。 2 可以通过集群等方式来承担对数据库的过量的访问请求。 |
NoSQL和Hadoop | 这两个本身就是个亮点,如果大家用过,可以结合项目来说明。 |
在下表10.8里,我们也归纳出在这方面大家可以准备的亮点。
技术方面 | 可以说的亮点 |
Spring MVC架构 | 1 可以说下Spring的IOC和AOP是如何优化项目结构的。 2 可以说下拦截器等Spring组件对项目的帮助。 |
ORM,比如Hibernte或Mybatis | 使用这种ORM技术时,如何优化访问和操作数据库的性能。 |
Spring和Mybatis等的整合 | 可以讲下整合框架的细节,并可以举例说明整合后的框架能很好地适应需求的变更。 |
此外,大家还可以在Linux使用技能以及项目管理软件的使用经验方面展示自己的亮点。这里请注意,一定找合适的机会“顺带”地说,如果没机会宁可别说,更不能仗着有所准备就直接自说自话地说。否则的话,反倒可能会得到“表达能力不清晰”或“叙述条理混乱”等的不良评价。
2 事先练习展示责任心和团队协作能力的方式
面试官只有当确认候选人在责任心和团队协作能力方面没问题,才敢把他招进公司。有些面试官会通过问问题来确认这两点,但有些有经验的面试官甚至可以通过候选人回答问题的方式和说话的语气上来确认。
所以大家在面试前,首先可以按如下的要点,在平时的生活和工作中练熟良好交流方式。
第一,谈吐清晰,语速不急不缓,至少让面试官能听懂你说的话。而且力求说话果断,别吞吞吐吐的,这样能显示出你有足够的担当。
第二,交流时尽量目视面试官,语气不亢不卑,别太僵硬,说话别过于强势。脸部可以适当微笑,面试官在说话时可以适当点头互动,总之得让面试官感觉和你交流不吃力,最好还让面试官感觉乐意和你交流。
第三,应积极主动回答面试官的提问,如果没听明白问题,别僵持着等面试官进一步解释,应当主动询问。如果感觉面试官没完全理解自己的回答,或者理解有误,应当进一步主动解释,以展示积极沟通的姿态。
第四,即使不认同面试官的观点,也应当心平气和地交流,不能急躁,别轻易打断面试官的话,可以倾听完面试官的话后耐心地与之交流。有些面试官可能会故意刁难候选人,美其名曰“压力测试”,在这种情况下,候选人更应当心平气和,不能起争执。
在面试过程中,再有经验的面试官可能也无法通过实例来验证候选人的“团队协作能力”(因为在短时间内无法协作),但如果大家能给面试官留下“沟通表达没问题”、“为人和善”和“遇到难点能积极主动协调沟通”的良好印象,那么面试官一般也能认可候选人的团队协作能力。
此外,大家还可以准备如下的说辞,一旦能找合适的机会说出来,面试官更会认可大家的责任心和团队协作能力。
说辞1:(在介绍项目时)这个项目做到一半时,客户方变更了一些需求点,这给我们项目组造成了比较大的压力。在项目经理的带领下,我们都被分配了更多的任务,在这种情况下,我通过加班按时按质完成了任务,而且在做的过程中,一旦出现需求或技术方面的问题,我也会主动找同事或项目经理确认。
总之,在出现问题时,你不是退缩,而能通过加班等方式积极面对和解决问题,而且一旦有问题,你不是得过且过,而会主动确认。
说辞2:(介绍自己在项目中的角色)在这个项目组里,除了本职的开发工作外,我还会积极主动地和测试人员沟通,一方面告诉他们该怎么测,另一方面,一旦发现问题,我会和他们一起重现问题,完成修改后我也会主动告诉测试人员,让他们尽快确认。
总之,在项目里,你不仅能完成本职工作,而且还能和团队其它人员一起协作。
说辞3:(介绍项目的亮点)在项目里,我遇到一个需求点,这需要多个团队一起开发,这时我会和相关人员一起开会,确定各自的任务点和工期,完成功能点后我们会一起联调。
说辞4:(如果面试官问你,遇到自己无法解决的问题该怎么办?)我不会推掉任务,我先会查阅资料,如果不行,我会问项目经理,在他们给出的解决方案基础上,我会细化成具体的实现代码,最后我会把实现好的功能点和项目经理确认,以求没有理解上的偏差。
在责任心和团队协作能力这两方面,不建议直接说“我有”,因为这相当于自我表扬,可信度不高,大家可以采用上述“用具体事实证明”的方式,这样面试官听了后就自然能认可大家的相关能力。
3 准备提问环节的问题,以求给自己加分
当技术面试官问完所有问题后,一般都会说:“我没问题了,你有什么问题?”
这时大家可以在这个环节里通过提问进一步展示自己和这个职位的匹配度,这些问题也可以事先准备。下面列些可以提问的要点,在具体操作中大家可以酌情选用。
要点一,展示自己技能和要做项目的匹配度。具体而言,大家可以看下职位介绍里列的技能点,这些技能点应该在之前的面试里都已经聊过。这时你可以问,接来下我会进哪个项目组?做哪个项目?其中会用到哪些框架和技术?
当面试官解释好之后,你就可以“顺口”说,xx技术或框架(这可以是之前没充分展示的)我之前在项目里用过,我做了xx(一定是亮点),可以再介绍下优化后的效果,再说下体会。
要点二,展示自己吃苦耐劳的能力,同时也可以展示下责任心。比如可以问,你们加班多不多?会不会到客户现场?会不会出差?
不论面试官如何回答,你也可以“随口”说,其实在项目比较紧的情况下,首先得保证进度和质量,在之前的项目里,有段时间确实进度比较紧,我就去和项目经理多申请了些任务,然后通过加班,按时按质完成了任务。
要点三,展示自己学习能力。比如可以问,_在这项目里,会不会“调研新技术”?_如果项目经理说没,那就别继续说了。如果有,那么你就可以说,在之前的项目里,我们需要用到__xx__技术,但谁也没太多的经验,在项目经理的带领下,我用了一些时间做了调研,最后项目组根据我的调研后写的代码,成功地把这技术应用到项目里。
要点四,展示自己的职业发展规划和这个项目的需求是一致的,同时展示自己的稳定性。比如可以问,如果我在这个项目里做得好,我可以得到哪些提升的机会?
当面试官说完后,你也可以“随口”一说,这也是我期望的发展方向。或者也可以说,如果我有幸面试成功,我也打算沉浸到这个项目里,好好几年,如果有机会,我也打算向高级开发或架构师发展(请注意,这个发展方向最好和项目组的期望一致)。
要点五,进一步展示自己沟通交流和团队协作的能力,之前面试官一定考察过,这里可以再强调一下。比如可以问,这个项目组有哪些成员?一般是怎么构成的?
这时面试官就会和你介绍,这个项目有一位项目经理,一位架构师,x位后端开发,x位前端开发,x位测试。这时你就可以说,这和我之前的公司很相似,在之前的项目里,我做的是后端,我的体会是,在项目组里一定得多交流多沟通才能把项目做好,靠一个人是不行的,比如有需求或进度上的问题,我会及时和项目经理交流,如果发现__bug_,我也会及时和测试人员交流。_
再次强调,出于诚信的原则,这阶段大家介绍的情况一定得是真实的。
在这个阶段,大家也可以问些比较关心的问题,比如后继的面试流程,但别什么都不问,这样面试官可能会感觉你没准备过,也不在乎这个岗位。也别问些能轻易从网上能找到的资料,比如这个公司主营业务是什么,这样会让招聘方感觉你之前因为不在乎这个机会,所以没了解过这个公司的情况。也最好别问工资(或和应聘者切身福利有关)的事,一方面技术面试官(或后继的项目经理)未必能做主,另一方面会给他们留下比较功利的印象,关于这些可以等到通过面试后和人事具体地谈。
4 准备用英文回答问题,以求以备无患
一般来说,国内公司会要求候选人有“读英语文档”的能力,而外企则会要求候选人能在纯英语环境下工作,即不仅能看英文文档,能用英文邮件交流,而且还能用英语和国外的同事开会交流。
面试的时间有限,一般不会让候选人当场翻译英文文档,而是会考察英语的口头交流能力。
有些公司会全程用英语面试,这要求就高了,一般的公司(包括一些外企),则是大部分用中文面试,中间夹杂着一些英文问题。这里给出些常见的英语问题点。
1 用英语介绍最近的项目。2 用英文做自我介绍。3 用英语介绍自己的兴趣爱好。4 用英语介绍你自己最擅长的技术点。5 用英语介绍下你的优缺点。6 用英语介绍上家公司,并叙述离职原因。这些都可以事先准备,面试时,发音可以稍微不标准,但力求流利,而且说得量需要适当。
准备时,大家可以根据问题点先把要回答的英语句子写下来,多练习几遍,这样在面试时就能有信心地展示准备好的成果。
讲个我们听说过的笑话,小A被临时抽调去为一个日本项目组面试,其中需要考察候选人的日语,但问题是小A不懂日语,时间又比较紧,又找不到其它面试官。在日本项目组的允许下,小A采用如下的面试方式,让候选人用日语介绍自己,并介绍上个项目。
虽然小A听不懂,但如果候选人说不上或不说,日语评定是“不及格”,如果能说得上,但磕磕巴巴,而且说得量又少,属于及格,如果发音标准而且流利,那么就属于良好或优秀了。
从这个笑话里大家可以得到如下的启示:
第一,说不说有着本质的差别,不说一定是不及格。
第二,内容尽量符合要求,不求措辞精美,用比较简单的表达方式即可。因为面试官考察重点不是内容,而是发音(至少能保证听懂)、流利程度(有信心流利地说,尽量别磕磕巴巴)和说的语句的数量(别太少,也别太啰嗦)。
第三,说的时候可以目视面试官,并用手势等方式互动,以此来展示自己说英语非常有信心。而别低着头或用其它方式暴露出自己信心不足。
5 准备些常见刁钻问题的回答,别现场想
最后
看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面
小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>
针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
668398)]
全都是一丢一丢的收集整理纯手打出来的
更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~
[外链图片转存中…(img-fo5BpRJE-1721170668399)]
[外链图片转存中…(img-QvbKhQAa-1721170668399)]