写点什么

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

  • 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:496808
用户头像
小智 让所有人认同的文字称不上表达

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

关注

评论

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

SpringWeb服务构建轻量级Web技术体系:SpringHATEOAS

Java你猿哥

Java spring RESTful Web ssm

LDAP性能测试脚本开发

测吧(北京)科技有限公司

测试

开源赋能 普惠未来|OpenNJet诚邀您参与2023开放原子全球开源峰会

开放原子开源基金会

为什么 HashMap 会死循环?

javacn.site

AIGC产业研究报告2023——分子发现与电路设计篇

易观分析

产业 AIGC

面试官:你能和我说一下 CMS 垃圾回收器吗?

Java你猿哥

Java 算法 CMS 垃圾回收器 垃圾收集器

Java开发分析用什么软件好?

真大的脸盆

Mac JAVA开发 Mac 软件 Java开发分析工具

2023年Java学习步骤及路线(超详细)

Java你猿哥

Java 微服务 Spring Boot JVM java面试

人工智能将如何改变敏捷项目管理?

敏捷开发

人工智能 项目管理 AI 敏捷开发 Scrum Master

名侦探白洞(一):智能家居灵异事件

白洞计划

AI

PoseiSwap:为何青睐 Layer3?又为何选择 Celestia 作为技术伙伴?

股市老人

C/C++项目构建指南:如何使用Makefile提高开发效率

小万哥

c++ 程序员 面试 后端 开发

记一次redis主从切换导致的数据丢失与陷入只读状态故障

Java你猿哥

redis sentinel ssm 高可用架构

TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案

vivo互联网技术

TLS 加速 Intel QAT

软件测试 | FTP性能测试脚本开发(2)

测吧(北京)科技有限公司

测试

百万级数据导出优化方案

iOS MachineLearning 系列(17)—— 几个常用的对象识别 CoreML 模型

珲少

软件测试 | FTP性能测试脚本开发(1)

测吧(北京)科技有限公司

测试

逆流而上!整合阿里高频考点2023Java岗面试突击指南手册首次亮相

Java你猿哥

Java MySQL redis ssm java面试

如何使用Go实现原型设计模式

Jack

golang 设计模式 架构设计 golang 面试

PoseiSwap:为何青睐 Layer3?又为何选择 Celestia 作为技术伙伴?

西柚子

JavaScript作用域深度剖析:动态作用域

沉浸式趣谈

DDD在前端应用中的一些思考

阿里技术

前端 DDD

2023-05-22:给定一个长度为 n 的字符串 s ,其中 s[i] 是: D 意味着减少; I 意味着增加。 有效排列 是对有 n + 1 个在 [0, n] 范围内的整数的一个排列 perm

福大大架构师每日一题

Go 算法 rust 福大大

开源模式新探索!卡奥斯工业互联网开源开放社区再升级

Openlab_cosmoplat

开源 工业互联网 天工开物

单机 T 级流量转发吞吐提升 5 倍,可编程负载均衡网关 1.0 上线

百度Geek说

云计算 负载均衡 企业号 5 月 PK 榜

上海国家会计学院刘梅玲:事项法会计可以有力地促进业财融合

用友BIP

业财融合 事项法会计

文档图像智能分析与处理:CCIG技术论坛的思考与展望

海拥(haiyong.site)

大模型 文档图像智能处理 OCR技术

绕不过的并发编程——synchronized原理

Java你猿哥

Java 并发编程 ssm synchronized

救命稻草!阿里P8耗时5月打造的架构师速成手册,千金难求

Java你猿哥

程序员 ssm 软件架构 架构设计 架构师

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