首页 > 编程语言 >裁员大潮来袭,程序员面试的这些技巧收藏好!

裁员大潮来袭,程序员面试的这些技巧收藏好!

时间:2023-06-27 12:33:36浏览次数:42  
标签:来袭 面试官 面试 问题 程序员 如果 大潮 求职者


题图 | Silicon Valley

裁员大潮来袭,程序员面试的这些技巧收藏好!_编程语言

导读

近日,互联网大厂的「裁员」话题上了热搜,据说有的公司裁员数量高达总员工数的30%。在目前僧多肉少、行业内卷加剧的背景下,出现这种情况并不意外。但不论怎样,生活还得继续,不管是经历裁员的人,还是在主动寻求其他工作的人,都在观望新的机会。

有人认为,只要是人才,就不怕找不到工作。但是技术水平高也不一定能帮你拿下工作机会。最关键的还是如何闯过面试这一关。今天给大家分享一篇文章,谈一谈程序员面试的技巧,希望对大家有所帮助。

作者:Edward Guiness

译者:石宗尧

通常来说,面试过程和人的行为一样,都是难以预测的,你永远不知道会发生什么。充分的准备是你的秘密武器。虽然面试的过程无法预测,但如果你有所准备,就可以轻松搞定面试。

1

面试前的准备

想要在面试前做到万事俱备,就不要只关注技术类问题。技术类问题只是面试的一部分,还有很多其他种类的问题,有些是有关团队精神、执行力的,还有些用于测试你和企业文化的匹配度。除了技术,面试官可能还想看看你的抗压能力、表达能力,以及面对批评时的反应。

如果面试官只关心你的编码能力,只在网络上做在线测试就足够了。面对面的面试远不止技术能力评估。虽然很多公司都对外宣称只录用“最好的程序员”,但实际情况并非如此,技术最强未必能帮你赢得职位。尽管看起来很不公平,但这就是现实。

裁员大潮来袭,程序员面试的这些技巧收藏好!_scrum_02

图/Silicon Valley

1.1  了解充分

公司的高层人员会决定企业文化的基调。如果公司高层非常随意、友好,这种态度就可能会成为企业文化;如果高层人员非常严肃、认真,那么其他人也会受影响,不论在办公室还是休息室,都能感受到这种氛围。小公司的氛围一般不如大公司严肃,但公司的规模不是决定性因素。

对于微软、谷歌、亚马逊这类大型公司的企业文化,你可能已经非常了解,但对于那些非知名公司的企业文化,你就需要做些调查了。

想了解一家公司的企业文化,最好的方法是和该公司的员工直接对话。如果你很幸运,恰好有朋友在那里工作,我建议你请他吃顿饭,然后一股脑地问他100个问题。如果不认识其中的员工,就要另想办法了。

首先,要上网搜索公司信息。刚开始,你会发现很多有关公司商业形象的信息,但用不了多久,就能找到公司企业文化的线索。如果够幸运,你还能找到公司理念的官方声明,甚至是公司的官方博客。如果你能查到公司高层的名单,就可以搜到他们的新闻。新闻里可能引用了他们说过的话,对你而言,这些话是相当有用的。

如果你委托了招聘中介找工作,那就咨询一下中介,搞清楚该公司的企业文化是什么。好的中介会有第一手的信息资源,虽然不是公司员工,但仍能给你提供一些有用的信息。

如果上述方法都失败了,那就直接给公司打电话。不要觉得难为情,这是个合情合理的咨询电话。

最坏的情况是对方不想帮这个忙,但这一般并不是针对你的,而是出于公司规定的考虑。如果遇到这种情况,那就要求对方把电话转到人事部门,或者直接转到你应聘的部门。请记住,不论对方态度如何,你都要保持礼貌和尊重。

在调查完公司的企业文化之后,你应该把注意力转移到招聘经理身上。同样,向认识的人打听,在网络上搜索,咨询招聘中介。对于直接打电话给招聘经理这件事,笔者持谨慎态度;但如果你想打这个电话,就应该问更多的事情,包括面试流程如何进行。

至少,你应该把面试的安排搞清楚:

  • 面试会持续多久?
  • 现场面试是一次还是多次?
  • 有技术测试吗?如果有,会以何种形式进行?
  • 在面试中需要写代码吗?
  • 有多少人参加面试?都是什么人?
  • 有什么特殊事项需要注意吗?

1.2  做足功课

调查之后,你搜集到了很多有关公司文化的信息,也从招聘经理那里得到了一些面试信息。有了这些信息,你就可以开始练习了。

如果你面试的公司是家技术型公司,就要集中精力练习数据结构和算法,以及如何设计软件的可扩展性。小规模的技术型公司可能会要求程序员具备广阔的知识面,因此你需要复习服务器管理,网络故障排查,数据库配置等相关知识。在大公司,由于有专门的团队负责维护服务器和设备,因此你不需要具备这方面的知识。

有件事你可能不喜欢,但一定要去做:问自己最害怕的问题。

裁员大潮来袭,程序员面试的这些技巧收藏好!_scrum_03

图/insights.dice.com

说实话,什么问题会让你在面试中颜面无存?也许你对排序算法感到非常恐惧;也许你不太理解广度优先搜索算法和深度优先搜索算法的区别;也许你因为顶撞团队领导而不得不辞职;也许你持有一些有争议的观点,例如,觉得代码注释是代码冗余的另一种形式。

如果你平时不去直面这些问题,在面试中就必须面对,明眼人都能看到这点。因此,在面试前就搞定这些问题。

1.3  着装得体

在直面并战胜恐惧心理之后,就是时候选择一套合适的衣服了。

实话实说,我不太喜欢那些铺天盖地的着装建议,但有一点要承认,你的着装的确会影响其他人对你的看法。

首先,看看你目标公司的着装要求是什么。如果不远,可以在午饭时间直接去那里转转,看看人们都穿些什么。如果去不了公司,就问问公司的职员、招聘中介,或者直接打电话过去。

如果你真的不知道该穿什么,那就穿普通的正装吧。对男士来说,穿一件带领子的白衬衫,不要穿牛仔裤和运动装。千万别穿得太张扬。对女士来说也是一样,一套女式衬衫和裙子(不是超短裙)或者裤子。

对男士来说,尽量打上领带。但也要知道,在有些公司,特别是有极客文化的公司,人们都不太把时间花在穿衣服打领带上。如果你不确定面试中要不要打领带,那就先把领带装进包里,在需要的情况下打上领带。

最后,无论你穿什么衣服,都要尽量舒适。你在面试中会遇到很多挑战,不要让衣服增添麻烦。如果你因为外套太厚而满头大汗,就先礼貌地征得同意,然后脱掉它。不要默默忍受,你真的不必要因此而分神。

1.4  搞定不同类型的问题

总体来说,面试问题可以划分为以下几大类。回答问题的方式取决于问题的类别。

(1)技术对话——不要有所保留

在面试过程中,你可能会发现面试官不如你想象的那么擅长技术。不要错误地认为你需要降低对话的专业度,否则面试官将你同其他面试者进行比较的时候,这会置你于不利之地。他可能并不理解你说的每句话,但他对你的印象会被你的用语所影响。

如果非技术背景的面试官问了你一个技术问题,那么他期望的回答就是技术性的。面试官的手中可能有一张“小抄”,列出了所有问题和对应的答案。

如果同技术面试官打交道,更不要有所保留,应尽可能地仔细回答问题。如果非技术的面试官想让你从非技术角度解释一些东西,你可以用比喻的方法。

例如,面试官要求你用非技术语言解释什么是IP地址。维基百科对IP地址的定义如下:

网络协议地址(IP地址)是每个设备(计算机、打印机等)在计算机网络中所分配的一组数字标签,使用网络协议进行通信。

你想到的第一种比喻应该是IP地址很像通信地址。送信需要通信地址,而传递数据包需要有IP地址,因此这种比喻是说得通的。但是,不同国家的通信地址在格式和风格上有所不同,而IP地址则严格遵循全世界通用的一套标准。或许对IP地址更好的比喻是由经度和纬度构成的地理坐标?

比喻能够帮助非技术人员理解一些技术问题,但这种方式并不完美,存在很多局限。因此,使用比喻不要无限度。

裁员大潮来袭,程序员面试的这些技巧收藏好!_scrum_04

图/iglu

(2)行为性问题

理论上,行为性问题是为了评估你在不同情形下的行为模式。

“在你的项目组里,有的人认为代码应该用空格对齐,有的认为应该用tab对齐,你怎么处理这种分歧?”

你的答案应该尽量直接,并且有事实佐证。这类问题是开放式的,没有固定的答案。但在编程技术面试中,回答问题的方式就不能太发散了。

“我觉得用哪种代码格式都没关系,只要保持一致就好。在Acme工作的时候,我们用SpaceMeister来确保代码格式的统一。因此,我觉得我会用采用这个方法来解决团队内的问题。”

(3)设计类问题

想回答设计类问题,就要对分析模式有一定的了解。面试官并不指望你给出一个“正确”答案,因为不存在适用于所有情况的正确答案。他希望你能展示思考的过程,以及设计的可行性分析。

如何辨认出设计类问题?有两种情况:当面试官着重使用“设计”这一字眼的时候;当问题看起来非常难或者含糊不清的时候。如果出现其中一种情况,就很有可能是设计问题。

“请设计一个算法,计算国际援助基金会如何均分资金给受益人。”

回答这类问题的唯一方式是把你自己的疑惑问出来。你需要向面试官证明自己的问题分析能力。如果问得恰到好处,答案就会越来越清晰(或者最后发现根本没有答案),这样就可以继续设计了(或者把得不到优秀设计的原因弄清楚)。

(4)技术突击测试

有些面试官很喜欢进行技术突击测试,你可以很轻易地辨别出这类问题。因为这类问题要么是非常模糊的,要么是非常具体的。

“在.NET4.5中,Tuple.Create方法被重载了多少次?”

这类问题无法提前准备,除非你的记忆力非常好,否则只能尽量给一个相对令人满意的答案: 

(5)智力测试

另一种越来越少被问到的问题类型是智力测试。即使是在特定的情境(心理健康评估)下,这种问题也不好辨别。在程序员面试中,则更难辨别。有些面试官热衷于这类问题,希望程序员能顺利通过智商(IQ)测试,以此找出“最聪明”的程序员。

智商测试题的形式都差不多,稍加练习就可以找到规律。如果你知道面试官对这种问题情有独钟,就可以提前作准备,多找些问题勤加练习,以便在面试中轻松应对。

(6)压力面试

每位程序员都应该练习压力面试。压力面测试练习需要一位朋友帮忙,最好是一位咄咄逼人、声音洪亮的程序员。让你的大嗓门朋友找到(或者写下)一系列难题,模拟一次面试。你扮演求职者角色,朋友扮演不讲情面的面试官角色,面试时间为一个小时以上,把所有问题都问个遍。你的朋友需要表现出“残酷无情”的一面。这种练习的目的不是让你给出正确答案(当然,你应该尽量给出正确答案),而是锻炼你对真实面试环境的忍耐力。

裁员大潮来袭,程序员面试的这些技巧收藏好!_java_05

图/pabu

2

最重要的事

接下来讨论如何与面试官建立默契,以及你可以在面试中做出的其他努力。

2.1  如何与面试官建立默契?

如果求职者想和面试官建立默契,该怎么做?

让我们从基本要素谈起。默契往往建立在共同目标的基础上。从表面上看,面试官在寻找适合职位的最佳人选,而求职者想说服面试官,让对方相信自己就是最适合的人选。但这并不是一个理想的切入点,因为这让求职者看起来像个推销员,在把自己作为商品推销给面试官。只有面试官和求职者能找到一些共同点,才是一个更好的开始。

其实面试官和求职者有太多的共同点。他们都想知道这份工作适不适合求职者,都想看看求职者的能力和职位描述有多少一致的地方,都想知道求职者在这个职位上能给出什么样的表现。

请不要误会,我不是说面试官和求职者的地位是完全平等的。我只是非常确信面试官和求职者考虑问题的出发点是相当一致的,这对建立默契非常有用。在根本上,面试官和求职者的目的是相同的,但在思考方式上,求职者应该作一个细微但重要的改变:不要口口声声地说自己完全符合职位需求,应该以合作的姿态,和面试官一起看看自己到底有多适合这份工作。这是令面试有效的根本出发点。

用合作的态度同面试官交流,你看到的东西也会不一样。你会真的对职位细节感兴趣,而不是被动等待面试官刁难,这样你就可以评估自己能否胜任这份工作。你不会担心面试官问你各式各样的理论问题,而是会试图了解自己的经验能否适应实际工作环境。你会注意到自己在技术上的弱项,意识到哪些知识需要在工作中加强。

这种态度非常重要,它可以让面试官感到放松。你在降低他们工作的难度,帮他们卸下“审讯官”的负担。尽管有些人并不介意扮演这个角色,但若想同面试官建立有效的默契,这是最快捷的方法。

2.2  其他努力

如果一个态度上的改变就能让面试非常顺利,那未免太过简单。实际上,我们还有很多工作要做。虽然你可能是个天生健谈的人,但如果能遵循以下原则,也会受益匪浅。

(1)用心倾听

永远不要贸然打断别人说话。如果你不得不这么做,至少应该先道歉。

认真倾听不只是安静地坐着。有技巧的倾听者可以用自己的语言复述所听到的内容,这让面试官非常安心,因为他能确认你在认真听他讲话,并且理解他想表达的内容。

(2)学会提问

请记住,面试是个信息交互的过程,你在回答问题的时候也要提出问题。和主动式倾听类似,有选择的提问也会让面试官感到放心,因为他知道你在听他说话,并且对话题的细节很感兴趣。

(3)模仿面试官的行为

有时候,有意识地模仿面试官的某些动作和行为,可能会收到意想不到的效果。他们坐下,你也坐下;他们向后靠,你也向后靠。我并不是让你去演一出即兴的无声喜剧,而是希望你同面试官建立起潜意识里的默契。经证实,这种技巧很有效,可以帮助面试官放松心情。

(4)寻找互动的方式

如果你天生内向,这很正常;许多软件工程师都比较内向,你的面试官也有可能很内向。但请记住,内向并不是腼腆的借口。

寻找共同点,找机会谈论你感兴趣的事物。如果你天生腼腆,至少试着保持眼神接触一到两次,头脑要清醒,吐字要清晰,语速要慢下来,在恰当的地方有所停顿。

3

同样重要的事

如果面试官不认可你作为程序员的能力,再好的默契也是白搭。因此,同样重要的事就是在恰当的时机展示你的才能。

3.1  表达要清晰

正常来说,面试官应该尽量鼓励求职者多说话。但是据我观察,很多面试官的话比求职者还多。如果你碰到一个口若悬河的面试官,那除了打断他,你没有任何机会表达自己的看法。注意听他的说话内容,寻找能把自己的工作经验与职位联系在一起的机会,有礼貌地打断他。如果面试官正在陈述自己的观点,那么最好等他说完。如果你倒霉透顶,碰上一个超级话匣子,那就用他讲话的时间作好准备,保持注意力的集中,趁面试官喘气的间隙打断他,加入到对话中。

3.2  掌控面试时间

通常来说,你会提前知道面试的时间长度。如果面试时间很短,那你就应该集中精力谈论最有价值的工作经验,因为那些经验和职位的关系最大。如果不清楚哪些要求是核心要求(正常来说,应该是清楚的),那你在面试前应该咨询一下面试官:“这个职位最需要的技能都是什么?”

3.3  用事实说话

你应该尽可能地把答案和自己的实践经验、成就联系起来。你可以通过事实来说明你的经验,但不要脱离实际去胡编乱造。如果为了阐述一个观点,而去编造一个故事,这确实可以让人听得津津有味,但问题就来了:面试官会记住你讲的那些事,但那些事是你没有做过的。

裁员大潮来袭,程序员面试的这些技巧收藏好!_人工智能_06

图/software guild

4

有效交流

在面试中,如果你想清晰地表达观点,就需要了解一些简单而实用的技巧。这些花招(我并不想这么叫)可以让你的交流变得异常有效。

4.1  用热情战胜紧张

几乎每人都体会过紧张情绪。面对有挑战性局面的时候,紧张是人的自然生理反应。

你需要做的,是分散自己的注意力。如果你因为一些事情而感到焦虑,不妨转变一下思维,想一想那些开心、有趣的事情。这可以帮你赶走紧张情绪。你是一位优秀的程序员,你喜欢编程的哪些方面?处理别人写的代码都有什么烦恼?代码对齐应该用tab还是空格?Vim和Emacs,哪个是更好的编辑器?通过这些问题,转换一下思维。注意这么做的时候紧张感是如何消失的。

4.2  使用手势

有可靠研究表明,肢体语言至少和我们说出的话具有相同的重要性。这也符合人与人交流的规律。如果你像考拉一样有气无力地瘫坐在椅子上,就很难表达对工作热情。你应该坐在椅子的边缘,边说话边用手势强调重点。

4.3  放慢语速

如果语速过快,会显得你很紧张。把语速放慢,可以给人镇静、运筹帷幄的感觉。如果你控制不住语速,那就要勤加练习。多听专业演讲者(特别是知名政治家)的发言,你会发现他们几乎从来不会说错话。他们的呼吸和停顿很有规律,举手投足就像摆放花瓶一样优雅。他们的语速很慢,吐字清晰。

4.4  开始和结尾要清晰

如果你说完话,发现有些含糊,那就多重复几次。你要确认自己能听清,并且理解自己说过的话。如果你不注意口齿,面试官就会没耐心去理解你想表达的主要观点。

4.5  重复主要观点

当公众人物想要确保主要信息传达到位的时候,他们会不断重复想强调的信息,但是不要像鹦鹉那样只重复同样的话。

主要信息可以从不同角度来阐述;一个论点可以用很多不同的论据来论述;在不同的时间,可以用不同的方式来重复。

如果你确实想让面试官记住一些信息,也需要不断重复。同时寻找机会,在重复主要观点时与面试官的话联系起来。

4.6  熟能生巧

在面试中,你需要结合自己的经历立刻给出回答。想让答案脱口而出,我的建议是:把答案的原始资料烂熟于心。这要求你必须对简历的内容细节了若指掌,包括简历里提及的技术,证明你能力的事迹,一些解决过的问题,曾经战胜过的挑战,等等。这样,当有表现机会的时候,你才可以信手拈来。

如果你无法自然流畅地表达,那就需要在面试前多加练习。找个朋友陪你一起练,一定要认真。让你的朋友拿着你的简历随意提问,这相当于模拟面试过程,你可以思考如何把自己的经历同问题联系起来。如果你在练习中遇到了无法回答的问题,这非常棒,因为你发现了一个准备工作的疏漏,这样就能在面试前补救这个问题。

练习,练习,再练习。

本文摘编自《智取程序员面试》


标签:来袭,面试官,面试,问题,程序员,如果,大潮,求职者
From: https://blog.51cto.com/u_15767091/6562212

相关文章

  • 一位Erlang程序员的自白
    Erlang不能错过的盛宴(快步进入Erlang的世界)作者:成立涛([email protected])作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言”,“权威推荐”。这些正确与否,都已成过去!现在,让我们迎接Erlang盛宴!一、经历2007年11月在koders.com搜索代码时,发现*.erl格......
  • 程序员部落酋长 Joel 之洞见
    软件开发随想集——“很久以前,在一个很遥远、很遥远的星系中,……”[3]好吧,实际上没有那么久啦,那是在2000年接近年底的时候,Apress出版公司正式运营刚满一年。当时,我们只是一家非常小的计算机书籍出版商,毫无名气。那一年,我们计划出版的书籍只有很少几本,大概只相当于Apress那......
  • 程序员11月书讯 | 硅谷,梦开始的地方
    (截图来源:电影硅谷传奇)硅谷,一个令无数技术者和创业者心驰神往的地方。上个世纪,想要拥有一台属于自己的电脑简直是天方夜谭,而个人计算机就是在那样一个时代诞生了。一帮怪咖和梦想家在这里将想象变成现实。乔布斯和比尔·盖茨便是这群怪咖和梦想家的代表者。他们出生在同一年,虽然有......
  • 2023年程序员工资中位数增长10%?开发者最常用的语言竟然是……
    在调研了全球超过90000名开发者之后,程序员社区StackOverflow重磅发布了《2023DeveloperSurvey》调查报告。在本次报告中,StackOverflow从工具、编码、工作、社区等维度展开,同时深入研究了AI/ML技术,并解析开发者如何在工作流程中使用这些技术。接下来,我们将通过这份报告......
  • 【大数据OLAP技术新书推荐】 字节跳动、阿里巴巴大厂资深架构师程序员多年实践经验总
    ClickHouse领域集大成之作-ClickHouse入门进阶实战的标准参考书-日常工作案头必备!如果需要购买阅读的话,可以点击:https://item.jd.com/10077635610807.html目录《ClickHouse入门、实战与进阶》简介图书评价作者简介内容简介为何写作本书本书主要特点如何阅读本书致谢全书目......
  • 既然心里活着的还是那个年轻人,我们申请跟未来的“小程序员”们一起过个节...
    题图|pch.vector -www.freepik.com大儿童们,节日快乐!作为一个上世纪的人,每到这一天听到李老师这首歌,就难以控制的泪流成河,悲伤成海......也许我们从未成熟还没能晓得就快要老了尽管心里活着的还是那个年轻人因为不安而频频回首无知地索求羞耻于求救不知疲倦地翻越每一个山丘........
  • 编程人生 | 一位半路出家的程序员的“天命”之选
    口述:金从军访谈:英子毕业于北大物理系,爱好游戏与编程,做过大学教师、IT创业者、渠道总监、程序员、开发项目经理…….从8年前开始普及AppInventor编程,到如今可谓“越陷越深”。就在今天(美国时间2022年9月9日),AppInventor基金会官方网站发布了基金会举办的首届“优秀教......
  • #yyds干货盘点# LeetCode程序员面试金典:各位相加
    1.简述:给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例1:输入:num=38输出:2解释:各位相加的过程为:38-->3+8-->1111-->1+1-->2由于 2是一位数,所以返回2。示例2:输入:num=0输出:02.代码实现:classSolution{pu......
  • #yyds干货盘点# LeetCode程序员面试金典:单词拆分 II
    题目:给定一个字符串s和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序返回所有这些可能的句子。注意:词典中的同一个单词可能在分段中被重复使用多次。 示例1:输入:s="catsanddog",wordDict=["cat","cats","......
  • 第一阶段C++基础入门(黑马程序员)——Day2
    3运算符作用:用于执行代码的运算本章主要学习以下几类运算符:运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋值给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值3.1算术运算符作用:用于处理四则运算算术运......