如果能多了解一些面试的基本知识,可以帮助你在面试中对自身有更准确的定位,并且能提升你的面试技巧。

由于不知道面试官对面试者的衡量标准,许多我曾面试过的候选人在面试中表现得差强人意。虽然不同的面试官有自己不同的衡量标准,但这些标准间也存在一些共通之处。如果能多了解一些面试的基本知识,可以帮助你在面试中对自身有更准确的定位,并且能提升你的面试技巧。

我在interviewing.io(译者注:美国一个在线技术面试平台)上会根据三个方面来评价面试候选人的表现。我认为这三方面基本代表了各家公司对你的评价的依据。即便这三方面的能力没有在面试中直接被考察,它们也会影响面试官对你的总体评估。

技术能力、问题解决能力,沟通能力虽然我需要对以上每一种能力分别评分,但这三个方面的能力其实是紧密地联系在一起的。如果一个候选人缺乏其中的一项能力,他往往也会欠缺另外两方面的能力。让我们一起看看每种能力都有什么独有的特征。

技术能力

我对应聘者的技术能力主要考量两个方面。第一是你在编码习惯用法和知识方面的经验,你是否知道什么是可能实现的,以及如何对其进行编码?第二是具体的语言能力,当你明白了你想做的事情后,你能用你使用的编程语言把它实现得多好。

第一方面是关于你的一般编码知识。你是否了解数据结构,程序流程以及编程语言能够执行的所有操作?这些知识就像是你的工具箱,会影响你解决问题的能力,而你的编程设计是否有效,则取决于这些工具是否可用。

我在这里会根据应聘者的犹豫程度或是否快速回应来评估他们。但我并不是在评价速度本身,而是会将速度作为候选人对自己工具的熟练程度的指标。我同样会听你的表达方式,看看你的声音是信心十足,还是带着疑问需要向我寻求肯定。

第二方面是考察你对具体编程语言的语法和语义的了解,这与第一方面联系极为紧密。因为我是主要通过观察你是如何在代码中表达自身想法,从而了解你对一般编码知识的掌握。如果你需要费尽心机才能编写出一个循环,那么我需要确认这是因为你不懂编程语言,还是你不确定循环应当如何应用于这个问题。

我会考量你是否有能力将你的想法顺畅地转化成代码。以我的纸牌游戏问题为例,有一个阶段是处理发牌,在这一阶段中你必须将纸牌分成两叠,每个玩家一叠。无论你是选择使用循环,还是高级拆分功能,你都应该能够顺畅地编写出这段代码。如果你编写了错误的代码、忘记了循环的工作原理,或是使用了错误的拆分语法,都会导致面试官对你产生负面的评价。

我不会因为一个人犯错而惩罚一个应聘者,因为错误总是会发生。但是,若是出现相似的错误,或重复出现同样的错误,会让我认为你缺乏相应的知识。如果我发现了一个错误,我可能会忽略它,也可能会就这一代码错误向你提问。如果你能够认出自己的错误,会让面试官对你的能力做出正面评价。

编程语言有很多特性,而我会考量你是否能够恰当的使用它们。例如你是否在使用枚举和常量?你是否能够创建一个结构来封装值?你是否通过值或引用正确地传递了变量?你是否使用了标准错误机制?

我不期望应聘者能够了解所有与编程相关的知识,但我希望他们可以了解所有的基本知识。对于自称对使用某编程语言有经验的应聘者,我会考察他们一些常用的习惯用法。例如,在Python语言中,我会考察他们对列表解析(list comprehension)和字典的使用。在C ++语言中,我会考察他们对智能指针和(可能)lambda函数的了解。如果一位应聘者的代码中没有任何常用的编程语言习惯用法,那么他很可能并没有使用该编程语言的经验。

沟通能力

正确地把你的想法表达出来能确保我对你做出准确的评价。有的应聘者做不到这一点,他的表现就会劣于其他候选人。表达流畅能提升我对你的沟通能力的评价,同时也确保面试进行得更加顺利,并有助于你准时写完代码。

如果你在面试中写的代码中有些错误,良好的沟通也能为这种错误起到缓冲作用。如果你仅仅写完代码,那我就只能通过代码来衡量你的能力。如果你与我沟通自己是如何写这段代码的,即便这段代码写错了,我也能理解你的思路。

但你的沟通方式如果是仅仅把所写的代码念给我听,那将毫无裨益。我自己也能看代码。你应该把沟通的重点放在代码中无法体现出来的,编程者在代码背后的思考。有许多应聘者知道在面试时应该多沟通交流,但我觉得他们不知道应该说些什么。因此他们最终选择直接再念一遍自己所写的代码。你要学会和他人分享你写代码时的思路,但这需要多加练习。

注意使用编程术语。你应该知道如何使用行业术语来谈论软件。你的编程术语会透露出你的经验是否充足,也会表现出你对细节的关注程度。我想要听到具体的东西,比如实例变量、常量值和使用参数调用函数。我想听到你说“从堆栈中取出数据和枚举一个Map中的所有元素”,而不是听到“用这个东西做这个”之类的话。

我也不想听到你在面试中使用时髦术语。也不要使用一些你不懂的专业术语,或对一些专业术语不懂装懂。不诚实是面试中的一大危险信号,不要以为你能侥幸逃脱不被面试官看出来。我和那些在人力资源部门工作的大多数人以及做过大量招聘工作的许多程序员一样,都很擅长发现胡话连篇的人。

你不需要担心自己有很多不懂的东西。我会根据你的经验和水平来调整对你的预期。初级程序员没有接触过很多概念是很正常的。你需要保持开放的心态,做个诚实的人,并保有好奇之心。然而,我对一个有十年以上工作经验的面试者的心理预期会更高。

面试是一个互动过程,良好的沟通可以让我们处在同一频道上。不良的沟通往往会导致我对你解决问题的能力和编程能力产生误解。我越了解你的想法,就越能帮助你解决问题。

问题解决能力

问题解决能力是从代码编写中体现出的一种抽象的能力。我想了解你编写代码的整个过程,而非仅仅是一个结果。这就要求你知道问题是什么,以及对何种有效的解决方案会被我认可有着清晰的认识。解决问题的关键很大部分在于定义约束条件,找到模糊或不确定的地方,并加以解决。

不同问题设置的挑战也不尽相同。例如我的纸牌游戏问题2要求你编写一个小型的仿真游戏。我想看到的是你如何解决问题,我还想看到的是你会提出问题。例如“纸牌”到底是什么,你又会用什么代表它?“发牌”又具体是什么意思?

解决问题的关键在于接收到高层次的需求并将其转化为具体的步骤。如果你正在做一个项目,那么问题解决的阶段就是你编写用户故事和用户旅程的阶段。你不一定要在面试中很刻意地体现这个阶段,但我想知道你是否对要求有所了解。你得告诉我你的想法并写下其中的重点。

你需要展示出解决问题的时候你的输入和输出内容分别是什么。你需要说明你是在转换数据还是实施一个流程。你还需要描述你是如何将大问题分解为较小的问题的。就一个算法问题来说,你需要指出所应用的相关算法,并告诉我如何让它们适用这种新情况。

你要明确你识别出了哪些部分,以及它们与你之前所做的有何相似之处。如果有一块白板,请你在上面勾画出流程、数据集和你想到的任何其他内容。尤其当你遇到难题的时候,我想知道你是如何解决这一难题的,永远不要只是沉默而茫然地盯着我。我在这里是为了向你提供帮助,但是如果我无法理解你的思考过程,那么我将无法帮助你。

另外,绝对不要将解决问题视为一个阶段。我并不指望你在面试开始时就能提出完美的解决方案。但我想看到的是,你产生了一个想法并将其付诸实践,这其中可能会产生问题,需要纠正。我甚至会更改对你的提出的需求,或者批评你的方法,但我希望你能接受这些改变并适应它们。

结束语

一般来说,缺乏沟通技巧或解决问题的能力会导致应聘者的面试失败。我想不到有什么公司会想要雇佣一个缺乏这两种能力的人。当然在某些特定情形中,也许会聘用一些缺乏这两种能力但具备某些冷门技术的人。但即便如此,你也需要和其他候选人竞争。

还有一些人虽然可以编写基础代码,但是无法把已掌握的知识融会贯通地应用到新情况中。他们看上去掌握了一种新的方法,但其实并不理解这种方法背后的逻辑。我不能保证我在面试中根据观察到的情况从而对应聘者产生的印象都是正确的,所以应聘者在面试中充分地展示他们的能力是非常重要的。

你可能想知道如何在面试中展示自己的这些能力。显然,要提高其中任何一种能力都需要不断的练习和学习。但是要在面试中全部展示出来则需要平衡好。不要让你的脑子陷在代码中,要表达出你的想法,这是展示你的知识储备和问题解决能力的关键方法。不要担心会暴露你的知识的局限性,相反,要开诚布公,展示你是如何解决问题的。多和面试官交流。也可以利用白板来进行图示。

你要清醒地意识到自己被评估,从三个主要方面:解决问题能力、技术能力和沟通能力。

学习C/C++编程知识,提升C/C++编程学习能力,欢迎关注博主的微信公众号:C语言编程学习基地,一起来学习一下吧!

程序员面试技巧:一起去面试,公司用他而不用你,注意这三个点相关推荐

  1. 太尴尬!百度某程序员向领导请假去面试,却在面试一楼大厅和领导相遇,网友:缘分啊!回去一起对对面试题!...

    许多程序员都会选择在职找工作,在这个过程中最重要的事就是保密.万一不小心被领导知道了,有可能新工作没找到,现在的工作也保不住了.一个百度程序员就遇到了这样一件尴尬事:和组长请假去新浪总部面试,却在新浪 ...

  2. 一名年薪30W+的Java程序员讲解:想去大公司,前三年要懂些什么?

    目前一线城市的薪资水平在13到40k之间,但是找工作的时候并不仅仅有工作经验就行了,还需要一定的专业知识.如果你野心更大,想要进阿里美团头条等等这些大厂的话,那就需要更多的专业知识.那么,一个三年工作 ...

  3. 月薪2万的90后程序员,最爱去哪些公司?

    拉勾发布<2019年90后程序员职场报告>显示: 90后程序员平均月薪近20K,雄踞互联网各职位之首: 字节跳动蝉联"90后程序员最青睐的互联网公司"榜首,腾讯.阿里紧 ...

  4. 招聘旺季,外包公司招聘任务艰巨,程序员为什么不喜欢去外包公司工作?

    最近正处于招聘的旺季,用人企业也纷纷加大力度开始招兵买马,为一年的生产计划储备好所需要的人力资源. 有从事外包行业的HR朋友经常跟我吐槽,说单位下达的招聘任务比较艰巨,但招聘的难度比前些年大了很多,很 ...

  5. 程序员该不该去外包公司?

    最近,关于"外包"的话题,在程序员之间讨论得十分热烈. 究竟什么叫外包呢? 在IT行业,有些程序员在大公司的办公楼里,跟正式员工们一起工作. 但是,他们并不隶属于这家公司,而是属于 ...

  6. 只有程序员看的懂的面试圣经|如何拿下编程面试

    只有程序员看的懂的面试圣经|如何拿下编程面试 摘要:当我最初开始参加编程面试的时候,我所有最心仪的公司都忽视了我.现在回头看那个时候,我发现自己当时去参加面试都完全没做任何准备.虽然已经有许多博客文章 ...

  7. 为什么程序员有外包经历,面试就像有污点一样的存在?是这样吗?

    作为一名IT行业的从业者,我来回答一下这个问题. 首先,目前IT行业内有大量的程序员都有过外包开发经历,外包开发也是IT行业内的一种重要业务形式,所以程序员从事外包开发是比较常见的事情,也会获得技术上 ...

  8. 好程序员Java教程分享JavaScript面试问题及答案(一)

    好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...

  9. 300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!...

    原标题:直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer! 今天给大家分享一位Java程序员小伙去阿里应聘的经历! 从Java开发要掌握的技术来讲,前面已经说得差不多了.我主要想 ...

  10. 程序员跳槽时,如何选择公司

    前言 跳槽是每个程序员都会经历的,作为一个跳槽过好几次的人,对于跳槽这件事我还是有一定的发言权的,总结就一个字:真鸡儿累. 如果新的岗位发展前景不错,也比较适合自己,那就还好. 万一入职后发现又是一个 ...

最新文章

  1. 加窗Fourier变换算法的C++实现
  2. P1311 选择客栈
  3. 开普勒行星运动第二定律在电子与原子核运动中的应用
  4. .NET Core容器化开发系列(一)——Docker里面跑个.NET Core
  5. Java 字节和字符流的读写+Buffered
  6. python模块里的函数及说明,Python模块 time与datetime模块的函数说明及使用实例
  7. 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器
  8. linux备份mysql怎样操作,Linux下自动备份MySQL数据库详细操作步骤(转载)
  9. Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
  10. 【车间调度】基于matlab NSGA-2算法求解多目标车间调度问题【含Matlab源码 071期】
  11. JLINK 驱动 V7.00a 更新导致JLINK V9无法使用问题解决
  12. mvp架构 java_MVP架构基本使用
  13. c软件查表获得电量代码_energy.c 源代码在线查看 - 基于单片机的多费率电能表源程序 资源下载 虫虫电子下载站...
  14. 联盛德 HLK-W806 (三): 免按键自动下载和复位
  15. 小米 note3 android,小米NOTE3 MIUI9.6稳定版 开启全面屏手势和屏蔽经典物理按键全攻略...
  16. 计算机组成原理 微程序控制器实验
  17. [*CTF2019]She buuctf
  18. 机械制造作业考研题目答案分享——加工方法、工序和夹紧
  19. 虹科分享|太赫兹成像技术的分类与原理
  20. RPA让你也能成为办公室里的超级英雄!

热门文章

  1. Mysql介绍与安装LinuxmacOS系统
  2. mongoose mysql_mongoose入门
  3. android 获取phone实例,android – 可以通过sdk来实例化一个telephony.Phone对象吗?
  4. c#解析json字符串数组_C#解析JSON字符串总结
  5. java根据pdf模板生成pdf_PDF文件如何生成链接
  6. arccatalog点要素显示不完,shp数据全图显示正常,放大要素不能显示的问题
  7. android webview 获取 title,【报Bug】app webview 安卓机 title显示问题
  8. java中标准封装结构_java中的构造,封装
  9. const修饰是指针和常量
  10. 机器学习笔记(八)——决策树模型的特征选择