首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >以Java工程师为例,技术面试应该怎么准备?

以Java工程师为例,技术面试应该怎么准备?

作者头像
Java帮帮
发布于 2019-06-23 12:13:30
发布于 2019-06-23 12:13:30
8130
举报

1如何准备一份「工程师范儿」的简历?

定制简历

我自己的经验是,每个岗位的具体要求都不同,因此大家不要用一个通用的简历去应付所有的岗位,最好是根据特定公司的特定岗位来定制简历。当然这并不是让大家编故事,而是突出与目标岗位匹配的经验和能力。大家去应聘一个开发或者测试工程师,和去应聘一个 Team Leader 或者技术经理的角色是完全不一样的。比如,如果我要去应聘一个有管理性质的岗位,我就会在简历里适当突出我曾经从 0 组建了一个 10 人的技术团队,里边有多少资深 Java 开发工程师,多少数据库工程师等等,这样就会更有说服力;同理,不同的技术岗位的需求也是有区别的。大家写简历的第一个目标,就是让简历在筛选阶段生存下来。因为往往一个岗位会收到大批简历,如果简历不能写得很清晰,让 HR 觉得很适合,很有可能在开始就被刷掉了,没有机会去面试。

突出亮点

我见过很多简历都会写自己既会 Java,又会 JavaScript,还会 Python,一下写十几行。这个本身没有错,但最好能突出自己的核心技能,比如,“我有 8 年 Java 开发经验,很擅长 Java 并发或者 Java 安全”。但要注意的是,我们在突出亮点的时候,也不要过分浮夸,因为有时候当我们发现一个简历有太多“精通”、“深度掌握”这类词,第一感觉是怀疑,而不是觉得这个人很牛,所以要适当的把握程度,事实是基础。另外,项目经验上,我建议按时间顺序由近到远排序,最好体现目标岗位的匹配度,突出自身项目的难度和价值,以及自己在项目中的作用。这样就能进一步帮助面试官判断候选人的能力和在团队中的位置。

用事实和数据说话

对于工程师,定量比定性更重要,因此要让面试官和 HR 体会到大家的经历或亮点是可度量的事实。比如在简历中强调“我非常善于快速学习”固然有帮助,但如果配上一句“我在两个星期之内就学会了 Clojure 语言,做了一个撮合系统”,更能体现出“快速学习”能力。还有很多人会表述比较含糊,比如在简历中写“我大幅度提高了系统性能”,但作为面试官,我可能不清楚这个“大幅度”到底是什么概念。因此大家最好写的明确一些,比如“我在一个四核 8G 的配置上,把吞吐量从 2000 QPS 提高到 8000 QPS,平均的请求是 100K bytes 等等”,这样就会非常有说服力。

公开成果很加分

比如是开源项目的贡献者,有一个很有内容的博客,在 Github 上提供了很多被采纳的 PR,发表过哪些技术论文,在 QCon 或者 ArchSummit 上做过分享,或者写过哪些著作等等。像这些公开可见的成果,远比自己评价自己更有效果。

简历形式

在形式上,最好参考一些优秀简历,借鉴它们的模版。要注意的是,中国人和外国人的习惯不一样,如果是去应聘欧美公司,最好去 Google 上查英文简历模板,而不要把直接把中文简历翻译成英文。

简历篇幅

最好控制在 1~2 页,既不要显得单薄,也不要显得过于冗长,段落之间要条理清晰。

2如何在面试中体现代码能力

有的面试者,平时很认真工作,但面试前没有时间准备充分,就会比较吃亏,因为很多面试时考察的算法和数据结构在平时工作中未必用得到,面试时如果有点生疏,就会给面试官留下不好的印象。所以大家在准备技术面试时,在代码方面一定要事先做个热身,至少让自己对基础知识的掌握处于一个良好的状态。

还有,在面试编码的时候,面试官会逐步深入,考察面试者是否对算法的理解达到了预期的深度,是否能够很好的沟通,是否能够理解面试官的主要目的,以及是否能够把不清晰的东西通过探讨逐渐清晰化。具体到代码的编写,至少要体现出良好的编码的习惯,让面试官觉得你是一个能够思考全面,写出高质量代码的人。包括在命名和结构上,最好参考业界比较好的实践,因为这些小的地方,恰恰也是代码质量的体现。

另外,很多时候面试者都需要在白板上编写代码。这一点,我发现很多人并不是很适应,例如 Java 开发者,绝大部分是用 Eclipse 或者 IDEA 这些 IDE 去进行开发,以至于有的面试者,甚至连 main 函数的一些细节都不确定,这个是很可怕的。因此,大家要记住比如主要的 API 结构等等。

最后,关于刷题,我觉得仁者见仁,智者见智。我自己没有刷过,但必须承认刷题网站是有效的,所以,我并不反对求职者去类似 LeeCode 这样的刷题网站学习一下,当然,区分刷题高手是面试官的能力。

3Face to Face 面试必考 Java 知识点

首先,大家要仔细阅读招聘需求。因为招聘需求往往就体现出了面试官对我们的期望和未来工作的主要范围。比如,一个普通的 Java 后端工程师岗位,可能会写明需要应聘者懂高并发、懂 JVM 基础、熟悉 Spring 或者 Netty 这些开源框架,大家就可以有针对性的去做准备,因为谁也不能保证自己还能清楚的记得一、两年前做的项目用到的知识点。

关于 Java 面试核心知识点,大家可以参考我在极客时间推出的《Java 核心技术 36 讲》专栏,这个专栏的设计,就是针对的这方面的需求。极客时间团队在内容和选题上充分参考了主流互联网大厂在 Java 面试中的问题域,选取了其中的典型问题,一定会对大家有帮助。在专栏中,内容设计的目的都是为了让大家对 Java 语言的核心基础特性可以非常的熟悉,掌握主要的知识点。比如,并发的容器和基础的容器,最常见的 ConcurrentHashMap 或者 HashMap,各种并发的基础元素,Synchronized 底层机制,或者 ReentrantLock、线程池等等,都是 Java 面试中的长期热点。还有 JVM,它是一个很庞大的范围,它分为 Runtime、GC、编译器等模块,包括所谓的 Serviceability 的一些特性,这每一个方面实际上都有可能被面试官刨根问底,虽然可能我们整个中国做 JVM 开发的团队连一只手都不到,但是不妨碍 Java 面试中会去考 JVM,大家还是要在这些知识点上面深入了解。

另外,现在 Java 开发越来越广泛的应用到各种开源框架,包括像微服务这种新的软件架构形式,所以大家对主流的开源框架也要有充分的认识。比如,做普通业务开发时,Spring 或 Mybatis 这类框架可能是业务开发的一个标配,那对 Spring 里的一些机制,比如 Bean 的生命周期、AOP 等基础概念,就要有深入的认识。如果大家应聘的岗位是大数据,那对 HadoopSpark 这类开源框架就必须要有深入的理解。

关注热点也非常重要,我们技术人也要时常抬头看这个世界。比如曾经有段时间,面试就会被问哈希碰撞之类,就是因为当时有些大厂发生了这种攻击。再比如前两年,非常多的人在面试中被问到类似抢购、秒杀这样的场景等等。如果大家完全没有关注这些热点,等面试中被问到才去思考,时间有限加上紧张,很难考虑的充分。这两年,微服务似乎变成了一个必考的题目,比如对用 Dubbo 还是用 Spring Cloud,就需要有基础性的理解,以免被问到的时候没有准备。除了热点,特定领域都有特定的专业知识,例如,深度学习、推荐算法等,只有准备充分才能保证大家在面试时的表现完美。

4大厂面试实例分析

下面,我就以自身的经验来介绍一下作为面试官,我在面试中会考察哪些方面,有哪些侧重点。不同的公司、不同团队,面试风格会有区别。我听到个别朋友说过,在一些公司面试完了,感觉经历很痛苦,我的团队不会这么苛刻的对待候选人。因为本质上,我们面试的目的并不是要表现面试官自己有多厉害,而是为了找出合格的候选人。有时我在面试中,也会刨根问底,但目的绝不是为了为难面试者,而是想看一下对方深度到底是在哪里,以及遇到挑战的时候,会有什么样的反应。

其次,就是考察面试者是否“适合”,对于不同的岗位,“适合”的定义是很不同的。

比如说像 JDK 团队,因为是一个非常基础的、底层的软件,最在乎的是性能、质量、可靠性等,所以对底层和基础技术的把握程度很重要。候选者可能是一个很棒的业务开发工程师,但是经验和技能可能不适合。

为了公平起见,我们也不会特别随意的问候选人各种问题,当然也会即兴发挥,但总体上是有固定的套路和节奏的,因为只有用同一标准去考察不同面试者,才能保证候选人的判断没有太多主观因素。

再有,面试者的兴趣和态度也非常重要,如果面试者对编程语言没有什么兴趣,那以我们的工作,他可能会做的非常痛苦。对于我们团队来说,我们招人的标准就比较特别,我们甚至不要求候选人精通 Java,只要你敢说自己很擅长某种编程语言。比如,我们这有个很资深的工程师,他在加入 Java 团队之前是不懂 Java 的,基本完全没有用过 Java,但是我们团队有足够的耐心,去让他发挥他的能力,构建自己的强项。不是每个团队都会这样,我觉得这也没有对错,得看具体的需求。

我们也会很在乎候选人过去的背景,如果跳槽过于频繁,就会有所疑虑。因为太频繁的跳槽可能意味着你的耐心和态度有一点问题(当然也可能是一些被动原因),这样的话,招聘成本就会很高。因此,这里也有一个建议,如果大家有选择,尽量不要过于频繁的跳槽。同样,我们也会看面试者在过去岗位中的表现,一个基本的判断就是,如果一个人在前一个岗位非常优秀,那他在下一个岗位继续优秀的可能性也会非常大。

具体流程

下面,我介绍一些具体的流程。一般来说,开始的时候我不会直接问特别严肃的问题,会让面试者做一下自我介绍,或者从轻松的话题开始,比如像前两天西二旗这边发大水了等等,让面试者先放松下来。

然后,我一般会问的一个问题是“谈谈你做过的最有挑战的项目”,例如,难度很大、在这个项目中起到的作用比较大、能力表现最充分的项目。从答案里,我就可以看到很多方面,一方面是面试者是不是对自己的项目了解的很透彻,因为如果一个项目做了几年,还对它了解不很透彻,就会反映出一定的问题;另一方面就是面试者能不能清晰的表达出他所做的东西。因为在工作中,我们彼此之间交流的场景会非常多,尤其是像 JDK,有相当一部分要进行互相交互的 Review,或者在开源社区进行讨论。能不能清楚的表达问题,就决定了能不能完成任务。在介绍过程中,我也会选择性的问一些项目的细节,看下面试者对细节的态度,也防止面试者在讲故事。我会侧重考察面试者做事情的态度,解决问题的思路和能力,以及在遇到难点的时候采取什么方法,这些角度都很有参考价值。

这之后,对于 Java 工程师岗位来说,我就会考一些算法和数据结构的基础知识,因为好的基础是成功的一半。我一般会从很基础的题目开始,甚至如类似链表之类的数据结构。考察简单的数据结构,可以看出面试者写程序是否很 hands-on。如果上来就问一个很难的题目,很多时候,即使是很资深的工程师也未必写的出来,这样就会很尴尬,甚至导致谈不下去了。然后,就会考一些相对深入的问题,类似把简单的数据结构进行组合达到一个新的功能,或者在一个常规的算法上面进一步优化,计算算法复杂度等等。这时候通过面试者给出的思路,我再来看他是不是能够体会到一些常见的,比如空间换时间这些变通的思路和方法。在面试过程中,我也会观察面试者和我之间的交流是否流畅、准确、完整,也能体现出我们之间是不是可以很好的合作。因此,建议面试者即使遇到比较难的题目,也要尽量表现出积极沟通的态度。

最后,我在面试时并不会去死抠特别复杂的算法,或者特定的知识点,也不会选择刷题网站上的那种题目,以免招聘到面试高手,真实的业务能力未必和刷题能力相关。知识点和能力可能是两码事,考住一个人很容易,准确判断他的能力才是重点。其实我们工作中解决的绝大部分问题,只要有好的基础和好的态度,基本上就能做得到,毕竟我们不是在解决过于艰深的科学问题,也不是在做原子弹。以上这些,就是我在面试中比较看重的一些方面。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
工程师的招聘与面试
因为项目和团队的需要,过去我花了很多时间在招聘和面试的工作上,曾经一度被误以为转行了 HR,不论在朋友圈、微博上,你也许看过我发的招聘广告。除招聘广告外,主动寻找,认识新的小伙伴也是我招聘的常规手段,期间也面试了不过朋友,我认为招聘是一件很高成本的事情,无论是在物色人才还是在筛选人才上。
Avenir
2020/03/27
1.2K0
工程师的招聘与面试
面试Java高级开发岗位,只需准备这几点,让面试官折服!
这几天,我密集面试了若干位Java后端的候选人,工作经验在5年左右。我的标准其实不复杂:
Java架构
2019/03/06
7970
面试Java高级开发岗位,只需准备这几点,让面试官折服!
Java面试官:给Java面试者的八点建议
www.cnblogs.com/JavaArchitect/p/10011253.html
JavaFish
2019/10/17
6610
我面试了300多个程序员,教你如何在求职面试中脱颖而出
在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。 第一印象就不好了,至少会感觉该候选人表述能力不强。 一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候选人所介绍的项目背景来问,候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全交给面试官了。 面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,所以本文将从“介绍”和“引导”两大层面告诉大家如何准备面试时的项目介绍。 好了,如下是正文内容。 1、在面试前准备项目描述,别害怕,因为面试官什么都不知道。 面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的(一般公司会到录用后,用背景调查的方式来核实)。 更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。 如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)。
谭庆波
2018/09/03
1.3K0
我面试了300多个程序员,教你如何在求职面试中脱颖而出
面试题剖析|面试官问项目经验重点是想听到什么?
答主工作岗位测试开发工程师,属于技术序列。本文共三部分,分别介绍项目重点考察什么以及如何更好地介绍自己参与项目。
互联网金融打杂
2022/08/01
4660
一个后端朋友面试一个月的经验总结
朋友坐标北京,裸辞在家找工作。线上面试一共58场,投递公司包含a轮-c轮、上市公司或者知名互联网公司,除了中途放弃面试或者谈薪阶段放弃之外,基本做到面试一路绿灯,最后拿到了包括阿里、字节等offer。
全菜工程师小辉
2021/09/10
1.5K0
站在面试官角度拆解面试20人的体会
大家好,我是雁卿,之前由于职业发展规划,面试了10多家公司,分享了一些面试题目和作为求职者的面试经验。
程序媛淼淼
2022/09/01
6580
站在面试官角度拆解面试20人的体会
2020年社招面试技巧总结!
最近刚跳槽刚结束,也拿到了几家一线大厂的核心的 offer,总结一下经验希望能帮到其他同学。
Datawhale
2021/03/11
9260
如何做一个坏面试官?
大家好,我是 ConardLi。 “这么简单的问题你都不会?” "写个红黑树吧。" “这就是你最终的答案?我们进入下一个问题吧。” “只会 Vue?说说 React 异步渲染的实现原理吧。” “回去等通知吧。” 不知道大家面试的时候有没有遇到过这种回答呢😄?今天跟大家来聊一个有意思的话题:“怎么做一个坏面试官”,当然不是真的教大家去做一个坏面试官,而是从这些很 “坏” 的面试习惯里分析出最好的面试方式。 我聪明,你笨 “这么简单的问题你都不会?” 据我了解,很多面试官面试时都必须表现出一种居高临下的心态,
ConardLi
2023/01/09
3900
如何做一个坏面试官?
说说我最近筛简历和面试的感受。。
最近我们公司在招开发,实习社招都有。我收到的简历很多,但认真投递的、符合要求的却寥寥无几,而且都是我自己看简历、选人、回复、面试,让本就饱和的工作量更加雪上加霜,到最后真的是身心俱疲了。
程序员鱼皮
2023/09/06
9480
说说我最近筛简历和面试的感受。。
如何准备Java初级和高级的技术面试
本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只
Spark学习技巧
2018/06/22
1.1K0
程序员跳槽时,如何高效地准备面试?
今天和大家分享的主题是「程序员跳槽时,如何高效地准备面试?」,但其实今天主要涉及到的是 HR 在面试时有哪些套路,这样可以见招拆招,斩获 offer!
技术zhai
2019/02/15
1.1K0
在做技术面试官时,我是这样甄别大忽悠的——如果面试时你有这样的表现,估计悬
记得我刚做技术面试官的时候,还比较单纯,别人说什么就信什么。这本来也没多大的错,虽然有些候选人会夸张自己的技能,但毕竟大多数候选人都是比较诚实的,相信绝大多数的技术面试官也像我这样,会以君子之心度人的。
java进阶架构师
2018/10/18
2.9K0
在做技术面试官时,我是这样甄别大忽悠的——如果面试时你有这样的表现,估计悬
8年经验面试官详解 Java 面试秘诀
本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。
全栈程序员站长
2022/09/01
1.3K0
从十个角度解析面试全流程!附互联网公司Offer难度系数分析
▌作者:ELon Z,已授权!链接:https://imageslr.com/2021/autumn-recruit.html
拓跋阿秀
2021/08/20
2.4K0
从十个角度解析面试全流程!附互联网公司Offer难度系数分析
如何去面试软件测试工程师
之前写过从应聘者的角度来分析面试,今天王豆豆想以面试官来分析如何去做面试。 以前王豆豆在培训机构时也会帮助学员做模拟面试,刚好今年公司招聘软件测试工程师时,有幸去做过几场面试,因为有了实际的招聘需求,
王豆豆
2018/06/08
1.8K0
技术面试中,什么样的问题才是好问题?
其实很久以前就想谈一谈这个话题了,但是最近才有了足够的动机。因为从最近参加的很多 debrief 来看,我认为身边大多数的软件工程师面试中,在通过技术问题来考察候选人这方面,很多都做得不够好。比方说,我看到对于一些经验丰富的软件工程师候选人的面试,一些面试官依然是草率地扔出一道算法题让做了事,并且认为能不能够比较清晰完整地将代码写出来,是工程师级别裁定的最重要的标准。而这样的做法我认为是非常不妥的。
四火
2022/07/19
4350
Java工程师职业发展路径(面试宝典分享)
一般来说,技术人员对职业发展有两个发展方向,一个是技术方向,另外一个是管理方向,这两条路径侧重的能力点不同,需要根据自己的兴趣、能力优势有侧重的进行能力培养,成长路径如下图所示。
马拉松程序员
2022/04/26
1K0
Java工程师职业发展路径(面试宝典分享)
Android面经:面试前,这样准备提高专业技能,赢offer的胜算提高一倍!
笔者不在HR岗位上,但在工作中有6年的招聘经验。我发现,很多求职者在面试前都没有做好充分的准备,即便有机会参加面试,也很难赢得offer。在这篇文章里,我会跟大家分享,程序员求职者在面试前要怎样做准备。
Android技术干货分享
2021/06/07
7110
Android面经:面试前,这样准备提高专业技能,赢offer的胜算提高一倍!
IT类技术面试:从小白到高手的进阶指南
IT技术面试对于求职者来说是一场充满挑战的考验。无论是对新入职的毕业生还是寻求更好职业发展的资深工程师,面试是踏入理想职位的关键一步。本文将分享一系列宝贵建议,帮助读者在IT类技术面试中取得成功。从全面复习基础知识、展示项目经验、提升编程能力,到实践项目和开源贡献,以及关注最新技术动态等方面,详细探讨了如何准备、如何表现以及如何自我评估。此外,还提供了一些常见的面试问题示例,帮助读者更好地理解面试过程。通过掌握这些关键技巧,希望每一位面试者都能在竞争激烈的IT技术面试中脱颖而出,实现职业梦想。
猫头虎
2024/04/08
1.3K0
IT类技术面试:从小白到高手的进阶指南
推荐阅读
相关推荐
工程师的招聘与面试
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档