又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些自己并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了。其实不管是经验不足的初级开发,还是面临更高要求的资深开发,在面试上都会有一样的困扰:如何在掌握的知识有限的情况下,完成好一场高质量的面试呢?

本文最适合以下几种情况的同学参考:

  1. 知识面有限的初学者
  2. 希望首次加入大公司的开发同学
  3. 面临技术深度要求的开发同学

虽然文中主要以后端开发为例介绍技术面试的准备方法,但是和其他岗位的面试也有相似之处,其他朋友也可以作为参考。

两个悲剧的面试故事

小黄去年刚从计算机专业毕业,但是感觉对技术掌握得还不够,就又报名参加了一个培训班,年底刚从培训班毕业,怀揣着精心准备的简历,想到杭州闯一闯。今天上午到了一家装修还不错的公司面试,感觉这家公司窗明桌净,办公桌前都是Mac笔记本加双屏显示器,比昨天面的那家外包公司可好多了,心想一定要好好发挥抓住这个机会。

老王工作五六年了,今年刚从一家不小的公司出来,公司效益不好,年底裁员了,不幸老王在年前的最后一次裁员名单中中奖了。虽然短期内也没什么太大的经济问题,但是之前拿到offer的都是一些没上轨道的小公司,跟之前待过的公司比总感觉是明珠暗投不太甘心。这次面试的公司看上去还满正规的,如果能进去,就算不涨薪,但是心理上落差总是小一点。

小黄按部就班地说完了自己准备的项目介绍,然后面试官就照着简历问了起来。“你熟悉MySQL数据库?”,“对”,“唔...那你能说说MySQL常用的有哪几种存储引擎吗?”,“啊?什么是存储引擎?”。小黄心想,昨天复习了面试宝典里的数据库索引,老师说这个是要点,面试官怎么不按常理出牌呢。“你简历上写了使用过Kafka消息中间件?”,“嗯,对的”,“那你能说说Kafka的拉模型和其他推模型消息中间件的区别吗?”,“...”,“今天面试就到这里,有后续的话HR在一周内会联系你的”。

老王在隔壁的会议室里坐了下来,面试官让老王先介绍一下自己最近比较有代表性的项目,老王大概说了说自己这两年做的一个平台的功能。面试官问:“在这个项目过程中你有碰到什么印象比较深的技术难点或者业务难点吗?”,老王想了一想,感觉一下子有点想不起来。面试官继续问:“刚才你介绍的项目里有说到XXX功能,那在YYY异常情况下如果处理ZZZ问题呢?”。老王心想以前也没考虑过这个,那我就直接现场推敲一下吧,“这里要先这样,对了,那里要那样,不对,这里还有一种情况”。十分钟过去了,老王还在原地兜着圈子,而且丝毫没有停下来的意思。面试官只能打断老王换了一个问题:“那你能介绍一个你有过深入了解的技术吗?”,老王:“我好像这几个都了解一点”。“那关系型数据库中的聚集索引和非聚集索引有什么区别呢?”,“好像这两个的存储方式有点不同,非聚集索引开销会大一点”,“那么为什么非聚集索引开销会比较大呢?”,“这个问题好像要涉及操作系统之类的知识,有点太深了”。40分钟后,老王也结束了面试。

程序员何苦为难程序员?

为什么面试官老是会问一些莫名其妙的问题?我怎么可能了解计算机方面的所有问题呢?为什么他问得这么深,写代码的时候能有什么用?

之前我在一次失败的面试之后总是感觉有点不舒服,我感觉我的水平也是挺不错的,为什么到了面试就总感觉发挥不出,而且老是被“虐”呢?下面我们一起来想想办法。

该怎么办?不打无准备之仗!

如何完成好一场高质量的面试?这是我们在文章一开头提出的问题。首先我们要知道,我们掌握的知识一定是有限的,不管学到了多少,仍然还会有不知道的知识。特别是对技术深度有要求的资深开发岗位,想要面面俱到几乎是一个不可能的任务。但是为什么有些人就能很轻易地拿到offer呢?

首先,我们分析一下一场面试的结构。

面试的结构

一般技术面试都会分为四个部分:项目介绍/自我介绍、技术能力问答、综合能力问答、反向提问环节。而其中前三个部分对面试的成败影响最大。首先,面试一般都会以项目介绍/自我介绍来进行切入,其实技术面试的自我介绍主要也是介绍自己的项目经验。然后会穿插着对技术能力和综合能力的评估,一般这一步都会由之前的项目介绍引申出来。

一般来说,面试官在每个环节希望了解的主要是:

  1. 项目介绍——基本背景、擅长的业务领域、解决问题的能力、技术层级
  2. 技术能力问答——技术深度、分析能力、抽象能力、学习能力
  3. 综合能力问答——工作素养、协作能力、学习素养

虽然看上去眼花缭乱的非常多,其实核心关注的就是几点:技术好、好合作、主动性强

对于大部分面试官来说,一般也不会做太多事前准备和细密的事后分析,大多都是靠一个大概的印象来做出判断的。所以面试的一个诀窍就是:突出亮点。一旦面试中有让人印象深刻的亮点,其他方面只要不是太差一般面试就十拿九稳了。

单点突破

但是很多读者应该和我以前一样,觉得自己好像也没什么亮点啊,总感觉没什么特别的可说。但是通过总结准备,我相信每一个人都可以有自己的亮点,而且是很多个亮点。

首先,我们可以通过总结来得到一份优秀的项目介绍。关键点就在于不能光介绍项目完成的需求,因为这些对于面试官来说并没有什么价值,毕竟我们面的是开发岗位不是产品岗位:)在项目介绍中,我们应该明确描述我们在项目中解决的问题,包括技术难题和业务难题。如何表述可以参考一下现在流行的STAR法则,即在什么情况下(Situation),面临一项什么样的任务(Task),采取了什么样的行动(Action),达到了怎样的结果(Result)。这样的表述可以很好地展示自己的解决问题能力,充分显示了自己在工作中的主动性。

然后,我们还可以通过准备来深挖几个在工作中比较重要的技术点作为“技术亮点”展示,这指的不是仅仅通过“面试宝典”来准备的肤浅的理论知识,而应该是能做到真正的言之有物、切中工作要点的实践性的深入知识点。这一步是本文所有面试准备技巧中唯一对技术水平有要求而且是要求很高的步骤,技术水平不够的朋友可能发愁怎么准备,技术水平比较高的朋友可能又会疑惑到底什么是实践性的深入知识点。大家不用担心,我已经为大家准备好了学习材料或者说是参考样例。通过学习或参考工作经验较丰富者的总结文章我们可以更容易地获得自己的技术亮点。

实践性的深入知识点的最大特点就是:工作中会使用且可以层层深入形成问题链条。关系型数据库是后端开发离不开的技术,而数据库索引又是程序中的SQL语句执行效率的关键,大家可以通过我之前编写的一系列数据库索引相关的文章来了解一个实践性的深入知识点到底长什么样。后续我也会不断更新更多浅显易懂的高阶技术,有兴趣的朋友可以持续关注一下。下面的文章主要以知识点讲解为主,需要具体的一系列相关面试题的朋友可以在文后留言,如果人数比较多我会考虑另外写一篇文章讲解具体的面试题并链接到对应的知识点。

  1. 数据库索引是什么?新华字典来帮你 —— 理解
  2. 数据库索引融会贯通 —— 深入
  3. 20分钟数据库索引设计实战 —— 实战
  4. 数据库索引为什么用B+树实现? —— 扩展

连点成面

但是有了准备之后,我们怎么能防止面试官问出很多超出我们准备范围的“奇怪”的问题呢?这就需要我们有效地引导和填充整个面试的过程。一般一场技术面试会在40分钟到60分钟,如何完成好一场技术面试的关键就在于如何用亮点来充满这40到60分钟。

一般一个技术亮点会包含一系列层层递进的内容,所以可以问出大概三到五个问题。如果发现面试官不知道应该如何追问,那么你可以简短一些地把后续知识点一次性介绍完。一般这些问题都说完时间就过去了十到十五分钟,而项目介绍和相关的问答会占用大概10分钟。如果我们准备了两个技术亮点,加上前后的一些非技术性问题和反向提问,那么基本上一场面试就圆满地结束了。

那么如何让面试官问出自己想问的问题呢?这就需要我们准备好一个“剧本”了。

首先,面试的开场一定是项目介绍,可以将我们准备好的技术亮点与项目介绍中解决的技术难题结合起来,这样面试官基本都会根据这个点继续往下追问。

其次,我们还可以对简历内容进行特意的编排来诱导面试官主动提出我们准备好的问题。例如在简历中把擅长的技术放在更靠上的位置突出显示,并且增加更多的深入解释。这样不仅可以引起面试官的注意,还能使简历显得更有技术含量,更容易通过筛选。

最后,还可以厚着脸皮主动提出自己对某一个领域比较了解,尝试询问面试官对这一部分有没有兴趣。

通过上述这三点,基本上80%以上的面试就能够顺顺利利地圆满完成了。

问题总结

在掌握了面试的技巧之后,我们再来看看之前小黄和老王到底犯了什么错误,我们也能避免踩坑。

初级开发小黄的问题:

  1. 惜字如金,没有充分回答问题;

    • 对于面试官提出的“是否用过”“是否了解”这样的问题,应该补充上能够证明自己是内行的解释。
  2. 等着面试官提问,没有主动地引导。

    • 我们应该主动将问题引导向自己擅长的方面。

资深开发老王的问题:

  1. 项目经历没有准备;

    • 只讲了项目的功能,而不讲过程中遇到的业务难点和技术难点。
  2. 过分纠结细节,但是表述又不流畅;
  3. 问题抓不住重点,从细节开始推敲,反反复复。

    • 表述复杂问题时应该从宏观到微观。先从比较高的层次入手,划分大的模块,确定模块间的交互,然后再逐个模块地细化细节。这样不仅自己能够更容易地解决问题,而且面试官也更容易理解,避免发生即使回答了正确答案但是面试官也不认同的情况。

技术面试老是有劲使不出,该怎么办?相关推荐

  1. 面试系列 | 技术面试老是有劲使不出,该怎么办

    " 阅读本文大概需要 10 分钟 " . 技术面试老是有劲使不出,该怎么办? 又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些 ...

  2. 技术面试老是有劲使不出,该怎么办? 1

    又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些自己并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了.其实不管是经验不 ...

  3. 活久见!技术面试官竟然给我出了一个脑筋急转弯,还问我王者荣耀什么段位?...

    作者 l Hollis 来源 l Hollis(ID:hollischuang) 我叫小志,是一个毕业3年的Java后端开发,在一家传统银行的研发中心负责主要的研发岗位.虽然这份工作并不是很忙,给我的 ...

  4. 从60多场技术面试中,我总结了这份面试经验

    选自 | freecodecamp   作者 | Uduak Obong-Eren 转自 | 机器之心   参与 | Panda 如果你致力于成为一名软件工程师或数据科学家,技术面试往往是求职过程中的 ...

  5. 最全阿里面试题:已拿offer,阿里P8岗位完整阿里技术面试题目,这些面试题你能答出多少

    我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突).如 何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是 影响数据库并发访问性能的一个重要因素 ...

  6. 我从600场技术面试中总结出的5个常见问题

    作者 | William Ian Douglas 译者 | 平川  策划 | 陈思 本文最初发布于 interviewing.io 博客,由 InfoQ 中文站翻译并分享. 1interviewing ...

  7. 技术面试之HR面试题

    一. 个人信息了解 第二十四天 1. 请谈一下你自己的一些情况. [思路]:建议大家用2分钟来自我介绍,面试官较喜欢的自我介绍(1)有亮点,每一小段都有一个亮点,而不是平铺直叙(2)有互动:每一小段都 ...

  8. 超越技术分析_超越技术面试

    超越技术分析 by Jaime J. Rios 由Jaime J. Rios 超越技术面试 (Transcending the Technical Interview) "Wow. What ...

  9. 当技术面试官的一些心得

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ 领导出差,两天之内来了几个应聘人员,我临时充当了一下技术面试官.这次几轮笔试面试下来,倒也积累了一些心得.记得第一次 ...

最新文章

  1. Java学习总结:25
  2. Matplotlib常见图形绘制(折线图、散点图、柱状图、直方图、饼图)
  3. Effective stl---笔记
  4. Java Class 文件格式及其简单 Hack
  5. awk print 的用法
  6. ARM学习书单一提供打包下载地址
  7. 如何用VC++开发读取网卡MAC地址的程序
  8. 死锁的产生、预防和避免
  9. 如何交付机器学习项目:一份机器学习工程开发流程指南
  10. laravel 创建自定义的artisan make命令来新建类文件
  11. Spring Boot学习笔记:Spring Boot的Web功能
  12. (100)详细描述一个你做过的项目, 面试必问(二十四)(第20天)
  13. python selenium 点击 报错v_python菜鸟初学selenium+chromedrive,简单点击出错,请指教...
  14. 扎实基础深入篇(七):函数和类没那么复杂
  15. ENVI5.4新添加功能简介
  16. Redis(RedisTemplate)使用hash哈希
  17. Taobao 的 Linux 内核开源贡献
  18. 批量修改图片格式类型
  19. ROS机器人操作系统——什么是ROS(一)
  20. tlwn726n无线网卡Linux驱动,tl-wn726n无线网卡驱动下载

热门文章

  1. jvm性能调优 - 10白话年轻代数据晋升老年代规则及老年代回收算法
  2. Java-工具类之发送邮件
  3. pythonjson数据解析错误是什么意思_Python中的JSON解析错误
  4. python 插入排序算法
  5. python入门之控制结构顺序与选择结构_Python 入门之控制结构 - 顺序与选择结构——第1关:顺序结构...
  6. python如何使用apriori_python-如何加快基于Apriori框架的速度,以仅生...
  7. python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
  8. mysql分库分区分表怎么做_mysql 分区、分表、分库分表。
  9. activity 启动模式_Intent#FLAG_ACTIVITY_CLEAR_TOP 真的会 clear top 吗
  10. 微信小程序——收起和查看更多功能