面试的结构
=====
一般技术面试都会分为四个部分:项目介绍/自我介绍、技术能力问答、综合能力问答、反向提问环节。而其中前三个部分对面试的成败影响最大。首先,面试一般都会以项目介绍/自我介绍来进行切入,其实技术面试的自我介绍主要也是介绍自己的项目经验。然后会穿插着对技术能力和综合能力的评估,一般这一步都会由之前的项目介绍引申出来。
一般来说,面试官在每个环节希望了解的主要是:
1、项目介绍——基本背景、擅长的业务领域、解决问题的能力、技术层级
2、技术能力问答——技术深度、分析能力、抽象能力、学习能力
3、综合能力问答——工作素养、协作能力、学习素养
虽然看上去眼花缭乱的非常多,其实核心关注的就是几点:技术好、好合作、主动性强。
对于大部分面试官来说,一般也不会做太多事前准备和细密的事后分析,大多都是靠一个大概的印象来做出判断的。所以面试的一个诀窍就是:突出亮点。一旦面试中有让人印象深刻的亮点,其他方面只要不是太差一般面试就十拿九稳了。
单点突破
====
但是很多读者应该和我以前一样,觉得自己好像也没什么亮点啊,总感觉没什么特别的可说。但是通过总结和准备,我相信每一个人都可以有自己的亮点,而且是很多个亮点。
首先,我们可以通过总结来得到一份优秀的项目介绍。关键点就在于不能光介绍项目完成的需求,因为这些对于面试官来说并没有什么价值,毕竟我们面的是开发岗位不是产品岗位:)在项目介绍中,我们应该明确描述我们在项目中解决的问题,包括技术难题和业务难题。如何表述可以参考一下现在流行的STAR法则,即在什么情况下(Situation),面临一项什么样的任务(Task),采取了什么样的行动(Action),达到了怎样的结果(Result)。这样的表述可以很好地展示自己的解决问题能力,充分显示了自己在工作中的主动性。
然后,我们还可以通过准备来深挖几个在工作中比较重要的技术点作为“技术亮点”展示,这指的不是仅仅通过“面试宝典”来准备的肤浅的理论知识,而应该是能做到真正的言之有物、切中工作要点的实践性的深入知识点。这一步是本文所有面试准备技巧中唯一对技术水平有要求而且是要求很高的步骤,技术水平不够的朋友可能发愁怎么准备,技术水平比较高的朋友可能又会疑惑到底什么是实践性的深入知识点。
实践性的深入知识点的最大特点就是:工作中会使用且可以层层深入形成问题链条。关系型数据库是后端开发离不开的技术,而数据库索引又是程序中的SQL语句执行效率的关键,大家可以通过我之前编写的一系列数据库索引相关的文章来了解一个实践性的深入知识点到底长什么样。后续我也会不断更新更多浅显易懂的高阶技术,有兴趣的朋友可以持续关注一下。下面的文章主要以知识点讲解为主,需要具体的一系列相关面试题的朋友可以在文后留言,如果人数比较多我会考虑另外写一篇文章讲解具体的面试题并链接到对应的知识点。
连点成面
====
但是有了准备之后,我们怎么能防止面试官问出很多超出我们准备范围的“奇怪”的问题呢?这就需要我们有效地引导和填充整个面试的过程。一般一场技术面试会在40分钟到60分钟,如何完成好一场技术面试的关键就在于如何用亮点来充满这40到60分钟。
一般一个技术亮点会包含一系列层层递进的内容,所以可以问出大概三到五个问题。如果发现面试官不知道应该如何追问,那么你可以简短一些地把后续知识点一次性介绍完。一般这些问题都说完时间就过去了十到十五分钟,而项目介绍和相关的问答会占用大概10分钟。如果我们准备了两个技术亮点,加上前后的一些非技术性问题和反向提问,那么基本上一场面试就圆满地结束了。
那么如何让面试官问出自己想问的问题呢?这就需要我们准备好一个“剧本”了。
首先,面试的开场一定是项目介绍,可以将我们准备好的技术亮点与项目介绍中解决的技术难题结合起来,这样面试官基本都会根据这个点继续往下追问。
其次,我们还可以对简历内容进行特意的编排来诱导面试官主动提出我们准备好的问题。例如在简历中把擅长的技术放在更靠上的位置突出显示,并且增加更多的深入解释。这样不仅可以引起面试官的注意,还能使简历显得更有技术含量,更容易通过筛选。
最后,还可以厚着脸皮主动提出自己对某一个领域比较了解,尝试询问面试官对这一部分有没有兴趣。
通过上述这三点,基本上80%以上的面试就能够顺顺利利地圆满完成了。
问题总结
====
在掌握了面试的技巧之后,我们再来看看之前小黄和老王到底犯了什么错误,我们也能避免踩坑。
初级开发小黄的问题:
1、惜字如金,没有充分回答问题;
对于面试官提出的“是否用过”“是否了解”这样的问题,应该补充上能够证明自己是内行的解释。
2、等着面试官提问,没有主动地引导。
我们应该主动将问题引导向自己擅长的方面。
资深开发老王的问题:
1、项目经历没有准备;
只讲了项目的功能,而不讲过程中遇到的业务难点和技术难点。
2、过分纠结细节,但是表述又不流畅;
3、问题抓不住重点,从细节开始推敲,反反复复。
表述复杂问题时应该从宏观到微观。先从比较高的层次入手,划分大的模块,确定模块间的交互,然后再逐个模块地细化细节。这样不仅自己能够更容易地解决问题,而且面试官也更容易理解,避免发生即使回答了正确答案但是面试官也不认同的情况。
如果你对软实力这块没啥概念,那么不妨来看看下面阿里内部对于程序员面试软实力的一些总结(篇幅限制,就给大家展示一下部分内容了~文末可以免费领取):
目录大纲
====
基础篇
===
多线程 &并发篇
========
Spring 篇
========
MyBatis 篇
=========
Nginx 篇
=======
分布式篇
====
SpringCloud 篇
=============
Dubbo 篇
=======
Nginx 篇
=======
最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们
目录:
Java面试核心知识点
一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!
Java面试核心知识点
已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了
最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们
目录:
[外链图片转存中…(img-8BFJIyDo-1714713853399)]
Java面试核心知识点
一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!
[外链图片转存中…(img-TEmRdLBk-1714713853400)]
Java面试核心知识点
已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了
[外链图片转存中…(img-CUyDx5y0-1714713853400)]