源自:
http://36kr.com/p/5104870.html
刚刚在矽谷的信息技术子公司顺利完成了 7 次当晚复试,接到了源自 Facebook 的应用软件技师的职务 Offer。上面撷取一下我是是不是预备复试的,以及我在那个操作过程小学到的小东西。
0.为的是能到矽谷组织工作,我已预备多年
当我还在新西兰的大学自学软件工程的时候,我总是想像着今后能成为矽谷的一位应用软件技师。我希望他们今后能到信息技术金融行业的创新中心矽谷去组织工作。那个目标让我充满著了动力,它也让我能更加著眼地预备复试。
为的是更快地自学,我辞任了在悉尼一家十分棒的子公司的执行官 iOS 技师的组织工作,然后回到了我的故乡城市波特兰。在波特兰,我开始为矽谷子公司的复试做预备。我晓得复试预备将是十分十分困难和繁重的几项各项任务。
如果你告诉一大群应用软件技师技术复试的业务流程,其中的许多技师单厢对常用的复试方法持反对意见建议。许多争辩源自于这样一个观点:即在Chalancon上解决演算法问题前述上并无法前述代表应用软件技师是否能在前述组织工作中顺利完成日常生活各项任务。
我在这首诗中不会去探讨那个热门话题。恰好相反,我将从求职者的视角来深入探讨相同类别的复试课堂教学。同时,我还会撷取我他们在复试操作过程小学到的小东西。
1.复试是一种专业技能
在我预备的复试的操作过程中,我仍旧晓得复试是十分具有诱惑力的。但直到我被第一次复试煎熬之后,我才晓得复试是那么十分困难。
在复试前,我曾使用过许多订阅和完全免费服务项目,这些服务项目能让那些拥有金融行业两栖作战经验的人透过电话号码对应聘者进行标识符和Chalancon演示复试。此种复试演示练对我应付真实世界复试中所直面的压力是十分有帮助的。但后来我逐渐发现,演示复试练只相等于真实世界复试内容的极小一部分。
我的建议是,在你没有累积许多演示或两栖作战复试两栖作战经验之前,不要复试你令人羡慕的组织岗位。复试中亢奋的焦虑会让你不堪重负,只有透过急速练才能消除此种亢奋的焦虑。
和生活中的其他许多事情一样,急速练能增强你的自信心。
2.我经历的三种相同类别的复试
如果你在最开始的电话号码复试中表现得足够好,你就有机会参加当晚复试,复试可能会持续整整几天的时间。每次复试通常会持续 4 到 6 个小时,具体时间取决于你所复试的子公司。
在我他们在矽谷复试的操作过程中,我总共进行了 7 次当晚复试,这让我对目前的复试现状有了一个独特的看待视角。
通常情况下,当晚复试会覆盖三个主要复试主题:演算法、架构设计和行为,这些正是我专门研究和精心预备过的复试内容。然而,也有许多子公司似乎不按常理出牌,他们会扩大的复试内容范围,以考察求职者的更多实用专业技能。
上面撷取一下我经历过的三种复试类别:
(0)演算法复试这是最常用的复试类别。复试官会要求你在Chalancon上解决一个问题,并据此来评估你对数据结构、排序演算法、递归、时间/空间复杂度分析、模式和极端案例识别等方面知识的掌握情况。在这样的复试中,你通常会提出一个蛮力的解决方案,然后试着改进那个解决方案,并且探讨权衡相同的解决方案。
这类复试是我预备最充分的复试类别,因为连续 6 周时间,我每一天单厢练在一个廉价的悬挂Chalancon上解决演算法问题,分析它们的时间/空间的复杂性,真正理解所写的每一行标识符带来的结果。
就我个人而言,我十分喜欢Chalancon演算法,因为我不需要担心编写可编译的语法,这让我能著眼于解决手头要解决的问题。其他人可能不喜欢在Chalancon上进行演算法复试,对于这些人,我要说的是,如果能坚持练,这可能会改变他们的想法。
(1)架构设计复试这是一种十分有趣的复试类别,也是被我严重低估的一种复试。复试官会要求你在Chalancon上设计一个系统,比如停车场的售票系统、聊天通讯系统、twitter信息流系统以及其他常用的系统。
透过这类复试,复试官考察的是,在你拿到一个宽泛的概念之后,你如何设计一个能满足所有需求和限制性条件的系统。在那个操作过程中,需要求职者提出正确的问题,因为这些问题将会定义需求和限制性条件。这类复试操作过程更多的是一种对话,你需要在那个操作过程中画许多图表,甚至是阶级结构。所有这些都是一种高层次的交流,所以你不需要编写任何前述的标识符。
当然,你应该对交流内容进行引导,从而能让复试官了解你在系统组织工作方式方面的知识。如果你是一位后端技师,你无需深入探讨客户端应用程序机制的细节,除非你之前在那个领域累积过一定的专业专业技能和知识。我是一位 iOS 技师,所以我在这类复试中会主要谈到架构模式、功能的模块化、设计模式,而不是谈论如何扩展 API 端点之类的内容。
(2)行为复试复试官会问你许多关于你他们的问题以及你如何处理许多特定的情况。预备这类复试并没有预备其它几类复试那么难,但它需要你他们做许多自我反省。
通常会问到的问题包括:
你是如何对待失败的?
你认为你他们最大的弱点是什么?
你如何解决冲突?
如果有机会能重来,你现在的做法会与以前的有何相同呢?
我觉得很难把这类复试搞砸,但我发现许多人确实在这类复试中出了问题。他们试图把他们的强项伪装成弱点,他们回答问题时只说那些他们认为复试官会想要听到的答案,甚至把失败项目的责任转嫁到别人身上。类似上面这样:
“我的弱点就是我太著眼了。”
“那个项目失败主要怪 Jerry,他把那个项目中的大部分组织工作都搞砸了。”
要晓得,这些复试官都是经过严格训练过的专业人士,他们能轻易辨别那些不称职的人,并且对求职者所说的废话谎言十分敏感。他们能快速将那些不合格的候选人 Pass 掉。在复试操作过程中,要真诚,不要耍小聪明,要表现出对你的组织工作的热情,承认你的缺点,并表现出有改进缺点的主动性和强烈意愿,只有这样,你才能得到复试官的青睐。
(3)文化匹配性这通常是与行为复试结合在一起考察的,这主要考察你是否符合子公司的价值观。例如,Facebook 鼓励黑客似的文化,鼓励员工大胆尝试新想法,并透过试验对想法进行测试,而不是害怕打破陈规,也就是所谓的“Move fast and break things”。Airbnb 希望创造一个让人们在任何地方都能找到归属感的世界,所以他们通常会寻找那些具有良好好客专业技能的人才。
许多大型信息技术子公司都十分重视企业文化,并根据求职者是否符合子公司价值观来决定是否录用他们。如果你在这样的一家子公司里复试,你需要想办法了解这家子公司的价值观,并找到你他们那些与子公司文化相契合的过往经历,并向复试官展示出这一点,这一点十分重要。
(4)结对编程一种十分有趣的复试类别是,让你和另外一位技师在一个设置好的编程环境中结对编程,这和前述组织工作场景十分类似。你会被分配一个基本的各项任务,各项任务中列出了你必须顺利完成的一系列需求列表。在你顺利完成每一个各项任务后,复试官会要求你实施更多的功能,直到到了规定的时间为止。在那个操作过程中,你能自由使用你想使用的任何资源,如 Stack Overflow 或在线文档。
我发现,在这样的复试中,许多候选人能否透过考察主要依赖于他们真实世界世界的开发两栖作战经验。与Chalancon复试相同,在这类复试中需要你写出语法正确的标识符,因此你应该彻底了解你的编程语言和环境,因为你肯定不希望在编程复试操作过程中花太多时间去在网上或文档里搜索答案。
在我之前的组织工作中,在我在做几项各项任务时,我会写干净的标识符,然后等我觉得各项任务顺利完成之后再进行优化。此种组织工作方式对此种类别的复试是不利的。
(5)发现并修复 Bug作为技师,我们所做的许多组织工作都是围绕着找到和修复那些我们从相同渠道搜集到的 bug。在这类复试中,你会得到一个需要你去找到和修复的 bug 列表,在那个操作过程中,你还需要识别其他可能存在问题的标识符。
我他们只经历过一次这样的复试,我觉得这类复试真的很难让人做好预备,特别对那些两栖作战经验所有欠缺的初级技师更是如此。每个编码环境都有各自的小怪癖和细微差别,我所做的许多 bug 修复组织工作都源自于以前的 IDE(集成开发环境)的两栖作战经验以及我在过去多年时间里累积的相关框架。
(6)考察专业领域知识在我们今天看到的大多数通用语言中,编程基本上是相同的。如果你晓得一种编程语言的面向对象编程,那么这些专业技能多半能转移到另一种编程语言里。但,这类复试的考察技是不能在语言或框架之间相互转换的。复试官将会在特定的环境下考察你在有关 API、内存管理、功能和局限等专业领域知识的掌握情况。
对于这类主题的复试,练是很具诱惑力的。和上文中说过的发现并修复 bug 复试类似,我觉得这类复试问题的答案大都源自于过往的两栖作战经验。根据你所申请的职务的级别的相同,复试官评估你的答案的标准会有所不同。例如,如果你申请的是一个初级职务,不晓得为什么一个 API 的结构是特定的,那么复试官会在这方面做出让步,不会对你要求太高。然而,如果你申请的是一个高级职务,复试官对你的要求会更高,这时如果你不晓得那个问题的答案的话,这就会给复试官留下十分不好的印象。
(7)对操作系统的了解根据你所应聘的职务或团队的相同,你可能会有一个专门的操作系统方面的复试。在那个复试中,你会被问到许多问题,复试官透过这些问题对你对计算机操作系统机制的理解进行评估。说实话,那个复试有点让我措手不及。操作系统是我早年在大学里学过的小东西,但后来慢慢都淡忘了。
3.你该如何预备?
正如我在上文中说的那样,复试本身其实就是一种专业技能。即使你在日常生活组织工作中已经是一位优秀的程序员,或者在你在学校的成绩十分优异,但在复试会议室里,你的这些专业技能并不能按1:1 的比例方式转化为复试专业技能。坚持、重复地做复试预备和练将在很大程度上决定你的面试结果。
(0)至少需要掌握这些知识如果有人问我,我觉得应该关注哪些方面,我建议以下几点:
首先自学在纸上和Chalancon上手写标识符,然后把它放到一个 IDE(集成开发环境)中,以便语法高亮显示,这应该成为你的第二天性。
对数据结构要有深入的了解,包括他们的长处和弱点。
完全理解大O符号的时间和空间复杂性,这将与你的演算法和排序问题完美地配对。
掌握所有主要的排序演算法,因为时间和空间的复杂性有可能破坏你想要解决的演算法的最佳解决方案。
(1)何时开始根据你他们的时间表,越早开始越好。我复试过的许多子公司都有一个 12 个月的冷却期,复试未透过的求职者需要等到 12 个月后才能重新申请子公司的职务。反过来说,如果你晓得你无法在一年时间内预备好那个复试,你不妨现在开始那个复试业务流程,大概感受一下复试业务流程具体是怎样的,到时真正复试的时候就不会那么害怕了。
你若喜欢,就让朋友圈也顺便看一看!!