最近几周,关于哈布里尔(Habril)的一连串关于采访如何进行的文章变得越来越频繁。

Google一直在寻找工程师。 作为SRE,我可以肯定地说
,我们的行列中需要您。 小厨房中的饼干和咖啡机中的咖啡正等着您。 您需要做的就是面试。 这是困难的,但却是真实的-一旦我已经
将自己的故事描述为求职者,现在,除其他外,我还将进行面试。 现在,我将介绍我们如何与工程师进行访谈。
不,我没有成为招聘人员。
面试过程首先涉及与招聘人员的对话。 这是一般的“为什么在哪里”对话(即,针对您的具体案例的过程的描述),并且
每个人都从调查表中进行相同的
筛选,并带有多个答案选项。 对我而言,当时的筛查似乎非常基础,我怀疑您已经回答了一百次这样的问题。 然后,面试将由工程师-您未来的同事进行(无论近或远,这都是这样,我们的星球很小)。
(重要:我以工程师的职位描述了我所知道的过程(软件工程师(SWE)和现场可靠性工程师(SRE)。)对于实习生,过程会有所变化;而且过程在原则上可能会有所不同,因为人力资源部门会调整过程以实现使用此处提供的信息仅能大致代表期望的内容-而非公开报价!有关此过程将如何针对您个人的确切信息将完全是招聘人员提供的信息,而这些信息可能也已过时。 -看 阅读本文时,请参阅“ 如何雇用”部分以获取最新信息。首先,将通过
环聊/见面进行一些采访。 正如我上面所说,这是一次全面的面试-工程师将进行面试,并假定候选人将在此过程中“大声思考”,并用任何编程语言写一打或两行(是的,很遗憾,到目前为止,在Google中)。
我的面试时间大约是45分钟左右(十分钟),但通常我会尽量在45分钟内适应。 从此开始,五分钟用于简要介绍和一般信息,30-35分钟用于问题和讨论,然后五分钟用于候选人的问题(如果有)。
通常,面试工程师的目的是收集候选人
技能的多个轴上的信息(例如编码技能,算法知识和数据结构等)。 但是面试中最重要的是找出一个人的想法。 也就是说,当一个人不知道解决方案时,找到边界总是很重要的。 每个面试官都有自己的技巧(尤其是电话面试):有人将许多问题从热身问题(实际上是写出三行循环的解决方案)中保存起来,甚至很难解释。 某人有2-3个“最喜欢的”问题,这些问题中的任何一个都可以由十几个方面提出,以及如何简化和复杂化,这取决于对话者的表现。 我确定仍有选择,但我不知道。
我尝试了两种技巧,我更喜欢后者:根据候选人的简历和自尊,我使用一种更合适的问题表格。 这个问题总是开放的(毕竟,您上次看到我们行业中的问题的确切时间是什么时候?)-根据候选人的要求,我将问题简化或复杂化,以便在最初的10分钟之内已经写了一个简单的解决方案。 毕竟,这很难解决,这是微不足道的。
琐碎的问题“您为什么确定它能起作用?”。 (如果候选人没有立即描述适用性或测试的限制),那么解决方案的复杂性是多少? 它只是提供有关候选人知道如何编码和理解他所写内容的信息。 但是编码还不够-您需要能够思考,因此接下来的问题是:如何摆脱限制? 如何做得更好? (在应聘者非常优秀或仅凭经验知道解决方案时会发生什么)如何使代码在这些或其他附加限制下工作。
这会立即发出一包信号-但是应试者知道多少适应任务的变化? 多少人愿意考虑高度替代的解决方案? 讨论本身也很有趣-问题总是尽可能公开地提出,因此有数十种方法可以理解它。 是在澄清业务环境,还是仅是技术限制? 是否考虑了技术限制? 例如,有几次我说“期望有1e12个对象”,而考生没有评估这是多少。 如果每个对象为字节,则几乎为TB。 或约116.5 GB。 如果是int32,则为4.3 TB。 好吧,你明白了。 不,记住这是没有必要的-不是在考试中,没有人拿走计算器。 电话是的,即使在搜索中。 顺便说一句,你可以问。
这就是我提高难度或仅在所有可用的面试时间内修改任务的方式。 是的,对于受访者来说,这可能是主要的工作面包,他在早餐,午餐和晚餐时都吃这样的任务。 好吧,对于这种情况
,我的旅行卡有一个完全不同的问题。 例如,代替图形-用于动态编程。 或在清单上。 或通常的问题是,最佳解决方案将需要一堆。 最主要的是不同的环境,不同的任务。
这里最重要的事情是同时完成一个非常简单的任务,以便应试者能够解决和显示基本技能,并将难度提高到应试者不知道答案的程度,从而可以显示出自己的想法。 如果同时可以找到更复杂问题的解决方案-很好,但是如果应聘者能够解决所有问题,那么这就是被访者的一小步,这并没有解决更复杂的问题。
需要细节吗? 这是
不会因为您已经被认为是“泄漏”而被问到的问题之一,也就是说,候选人很可能不会考虑他,而是会记住。 就像我在上面写的那样,候选人的想法很重要,而不是他的回忆方式很重要。因此,问题是:
实现LRU缓存 。
通常,任务很漂亮,因为它允许任务的多种形式和解释的多种形式。 例如,您可以直接在额头“实施LRU缓存”中提出问题。 可以表述为“想象我们的用于处理请求的服务将检查外部对象的存在。 如何加快处理速度?” -期待一个非常明显的句子“让我们缓存结果”。 可以问“但如何?”。 还有“如果我们要控制此缓存消耗的最大内存该怎么办?”。 问题悬而未决-哪个API应该提供此缓存。 为简单起见,您始终可以将其减小为set(键,值)+ get(键); 但您可以添加TTL。 get(key,fetch_func)是可能的。 通常,对建议的API进行评估还可以提供有关候选人的经历和思维方式的其他信号。
哈希映射的平凡解决方案将在get()上给出O(1)在set()上给出O(N)(是这样,对吧?)。 如果所有其他元素都被附加链接(通过组织双链接),则两种操作都将获得O(1)。 如果您需要添加TTL,我认为思路很明确。 如果需要,让我们在评论中进行讨论:假设您被问到这个问题,您会怎么想? 您提出什么解决方案?
用什么编程语言? 是的,您最喜欢哪个? C ++? 太好了 去吗 太好了 巨蟒 永远欢迎您。 Perl? 现在很少见,但也是。 Java是的。 和javascript(尽管考虑解决方案的内存会更加复杂)。
因此,从面试开始大约40分钟后,候选人的思想飞行就会中断,但这并不意味着一切都不好。 这只是意味着时间到了。
采访本身之后,采访者会写一份报告,通常附有采访发生情况的详细记录。 该报告将用于决策。 面试后,我个人立即保留了大约一个小时,以便记录下谈话的全部时长,并记下新的记忆,有些人只是在面试时在纸上写下几乎完整的笔录。
在电话采访后,根据所有受访者的报告,决定邀请对方面对。 其中一个办公室将进行一整天的采访:早上进行几次采访,然后是午餐(并认识办公室里的饭厅:),然后再进行几次采访。 在SRE面试时,这些面试将是不同的,招聘人员会告诉您这些面试的列表,包括编码和
NALSD :非抽象大型系统设计。 关键是非抽象(即通用词“我们需要数据库”)和“大规模”(即,如果需要数据库,则以PB级为例)。 您可以
在此处阅读更多内容,以及在搜索中找到资料的更多地方。 我招募了几个培训链接。 这是面试中非常重要的一点-仅仅是因为在为Google公司工作时,您必须从这种角度思考和考虑系统。
通常,面对面采访与电话采访没有太大区别-相似的问题和相似的过程。 同时,我们尝试安排问题,以免再次问相同的问题。
关于面试过程,我还能补充些什么? 玩得开心! 不,认真,放松,玩得开心! 电话面试? 只是和一个有趣的对话者交谈。 保证新的信息和新的经验。 面试? 更有趣! 您正在出差,但要以将来的雇主为代价:)在城市中散散步,结识朋友。 也保证了整日的娱乐和有趣的对话。
在这一天的乐趣之后,所有与您进行面谈的人都会编写一份报告,其中包含对话的完整协议。 所有采访数据都收集在一起,
并由一个独立委员会审查 。 这很重要:任何认识您的人都不参与该决策。 没有一个受访者也直接参与其中。 这些都是为了消除决策中的偏见。 评估仅是为了符合招聘标准的要求标准。 如果您不走运并且失败了,您可以在一年内再试一次。 在今年,您可以系统化知识并填补发现的空白。
有什么问题吗? 在评论中提问。
在面试之前是否有兴趣尝试面试? 有模拟采访的服务(例如,
一次和
两次 ,但它们并非来自公司本身,因此没有保证); 有时Google会运行类似的广告系列。
是的,随时
申请 。 如果您相信“通过员工提出申请”的魔力,请写信给我,我将提交您的申请。 韦尔卡姆!