写点什么

怎样准备技术面试,为何优秀的程序员也会被刷掉?

  • 2019-11-18
  • 本文字数:2018 字

    阅读完需:约 7 分钟

怎样准备技术面试,为何优秀的程序员也会被刷掉?

去年,作为技术 Leader 和主程序员,我面试了超过 100 位的软件工程师职位候选人。


在这篇文章中,我将和你分享候选人在面试中最容易犯的那些错误。我还会和你分享怎样准备这些面试,好让你最大可能通过这些面试。另外,我还会给到一些额外的技巧,它们将帮助你应对这些令人畏惧的技术面试。


首先,我想澄清一下,相比于做程序员,进行面试可以说是另一种技能。你可以是一名优秀的软件工程师,但可能是一名糟糕的面试者。逻辑上来讲,你越擅长软件开发,你就越有可能通过技术面试。但是,这并不能打包票保证你一定能通过绝大数的程序员岗位面试。


在我看来,以下这些是技术面试中,程序员最容易犯的错误:


  1. 由于害怕失败而变得紧张。我们倾向于认为我们的生活或者职业生涯都押注在了这次面试上,押注在这次工作机会上。但事实并非如此!面试不通过也没关系,但是我们不能因为害怕通不过面试就不去面试,也不要把机会都押注在这一次面试上。每次你去面试,你都能学到很多东西。所以,放轻松,不要慌张!实际上,通常只有 10%的机会能够通过面试,所以不要期望太高。提前做好准备,尽力就好,敞开双臂接受任何结果。

  2. 没有为你所申请的公司做准备工作。每个公司都是不一样的,并且各自有其特有的面试流程。我们应当尽可能多的调研这家公司、其创始人、员工、商业模式、产品或者服务、以及它使用的技术等等。确保总是准备好了一系列问题,以此来证明你对这家公司的好奇与兴趣。

  3. 在经历上过分夸大或者撒谎。我们应当对此非常谨慎。正常来讲,面试流程中的所有面试官都会对候选人的信息做前后对比和交叉验证。如果他们发现前后不一致的地方,你将会直接被拒,再不会有其他机会了。所以,不要把自己置身于这个险境。突出一些你成功的地方是可以的,但绝不要撒谎。在你所有的面试中,都要保持真诚、诚实和一致。

  4. 对于非预期的问题随机应变。例如,想象一下你正在面试一个开发者职位,你被问及一个关于系统的问题,你可以通过 3 种方式回应:

  5. 被动式:你可能会说你不了解这个,并且也不解释为何不了解这个,也不说明你所了解的有哪些。这种回答是不会对你有所帮助的。

  6. 激进式:你可能会说这不是你所期望被问及的问题,因为你申请的是软件开发者职位,还暗示面试官换一个问题提问。你这就有些激进了,更糟糕的是,没有人想要和太激进的人一起工作。

  7. 独断式:你可能会说你不了解这个,因为你通常不会做这方面的工作,你有一个系统团队会为你做这方面的工作。但你可以说你很乐意学习这些技能,如果需要从事相关任务的话。

  8. 说前任领导或者前任同事的坏话。这是一个阴暗地带,并且当面试官直接问及时,你很容易就陷入这个阴暗地带。面试中绝不要说起任何人不好的一面,哪怕是你的公司,也不要说起不好的一面。试着尽可能做到客观,找到有建设性的场景。更进一步,可以谈谈积极的一面,如果你离开了他(它)们,你将会错过什么。


以下这些是我个人认为最好的小技巧,它们会最大程度增加你通过技术面试的几率:


  1. 第一条建议相当简单:阅读我的博客,观看我的每周视频。我会分享过去 15 年作为软件工程师、技术 Leader 和技术经理所学到的所有东西。

  2. 第二条建议对于成功真的很关键,特别是当你坐在电脑前,进行现场在线编程或者结对编程面试时特别管用。听着:不要使用鼠标!使用Vim或者 Emacs 编辑器。专业的程序员只使用键盘和这些编辑器。记住这两条,你将会给面试官留下深刻印象。如果你还没有用过 Vim,记得要去练习使用 Vim,因为它很容易上手。

  3. 在白板编程或者结对编程面试中,要和你的面试官交流互动,询问他们,把你的想法告诉他们等等,这很重要。有时候,他们想看到的是你如何思考和推理,你怎样分析问题,以及你怎样和他们一起合作来找到答案。通常,找到答案的这个过程甚至比答案本身更重要。

  4. 意识到面试是一个双向的过程。即便你是被面试的人,你也应该通过某种方式了解你的面试官,了解更多你可能未来要一起工作的团队和公司。你要确保你真的适合那个团队,并且你的价值观和这家公司的价值观是一致的。展示你对这个机构的好奇和兴趣。可以问一些技术上的问题,也可以问一些不那么技术性的问题。

  5. 准备好回答一些基于行为的问题。正如我上篇文章里提到的,当今的公司不希望雇佣聪明的书呆子。这就是为什么这些“文化适配”的面试在大部分初创公司里很常见。他们想知道你过去怎样应对各种不同的工作情形。本质上,他们想要确定你的职业观是否和他们的一致。想想你过去做过的相关场景,正面的(例如:关于影响力)和不那么正面的(例如,关于失败)。带着具体的例子来回答是很重要的,尽可能多的包含细节,而不要泛泛而谈,泛泛而谈的东西不会给面试官提供任何信息。


综上,我想强调的是,参加面试,就像其他任何技能一样,需要准备和练习。你练习得越多,你通过面试的可能性就越大。


让我用我的一句座右铭来总结:


“对于软件工程师来讲,最重要的能力是他们开发出软技能的能力。”

原文链接

How to prepare a technical interview (and why good programmers also fail)


2019-11-18 10:496417
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 388.6 次阅读, 收获喜欢 1980 次。

关注

评论

发布
暂无评论
发现更多内容

与前端训练营的日子 -- Week18

SamGo

学习

世界上最好的排序算法是什么?

Nick

数据结构 算法 快速排序

小喜量化交易系统开发|小喜APP软件开发

系统开发

云边协同

lenka

云计算 产品经理 3月日更

Dubbo SPI 使用源码分析

Yangjing

dubbo spi ProxyFactory 服务暴露 ExtensionFactory

正则表达式.03 - 分组

insight

正则表达式 3月日更

工作日志3-2-3

技术骨干

10 个解放双手超实用在线工具,有些代码真的不用手写

程序员小富

Java

(28DW-S8-Day16) 在线教育体验课

mtfelix

28天写作

Python基础之:函数

程序那些事

Python 数据分析 Python3 程序那些事

列表推导式与字典推导式,滚雪球学 Python

梦想橡皮擦

28天写作 3月日更

知识+AI融合创新探索,华为云论文被AI顶级学术期刊IEEE TPAMI接受

华为云开发者联盟

AI 模型 华为云 卷积神经网络 IEEE TPAMI论文

「架构师训练营 4 期」 第九周 - 001&2

凯迪

架构师训练营 4 期

Python 语言基础之 变量和常量

HoneyMoose

《精通比特币》学习笔记(第四章)

棉花糖

区块链 读书笔记 3月日更

实现一个全链路监控平台很难吗?Pinpoint、SkyWalking、Zipkin,哪个实现比较好?

xcbeyond

架构 技术方案 链路监控 3月日更

BI掌柜量化交易系统开发|BI掌柜炒币机器人软件APP开发

系统开发

MT马特量化交易系统开发|MT马特量化交易软件APP开发

系统开发

5分钟介绍AI人工智能,机器学习和深度学习,John 易筋 ARTS 打卡 Week 40

John(易筋)

ARTS 打卡计划 arts

大括号之谜:C++的列表初始化语法解析

华为云开发者联盟

c++ 函数 语法 元素 std::array

阿里P8大佬亲自讲解!万字Android技术类校招面试题汇总,已拿offer

欢喜学安卓

android 程序员 面试 移动开发

阿里P8大牛亲自讲解!难道Android真的凉了?3面直接拿到offer

欢喜学安卓

android 程序员 面试 移动开发

【笔记】第六周 - 第 2 课

Geek_娴子

拖延症这个毛病「Day 16」

道伟

28天写作

上线 Python 应用仅需一条命令的开源框架:Zappa(详细教程)

HelloGitHub

Python Serverless 无服务器云函数

面试现场:小伙伴的美团一面分享和分析[含答案]

小傅哥

Java 面试 小傅哥

快速排序算法实现及优化

Silently9527

Java 排序算法 快速排序

二维码高端路线养成计

happlyfox

学习 技能 28天写作 3月日更

IDEA 常用插件与配置

TroyLiu

Java vim ide idea插件 IntelliJ IDEA

数据分析师

Nydia

女神节·走近又美又飒的程序媛

华为云开发者联盟

华为 程序媛 IT 工程师 汉服

怎样准备技术面试,为何优秀的程序员也会被刷掉?_文化 & 方法_Rafa Paez_InfoQ精选文章