面试中需要注意的细节 - 如何让你刷题的辛苦得到应有的回报

这是楼主个人总结的关于面试中需要注意的细节。前面写过一个类似的帖子,但是有不必要的内容引起了争论。我重写一个,加进很多的细节。有不同意见的欢迎交流。

  • 开场:不卑不亢。你就假装其实你已经有了另一个FLAGUAP的Offer了,就不会太患得患失的,你的气场会感染面试官的。见过太小心的面试者,第一印象不好。
  • 其他大厂也许不一样,但是狗家技术面寒暄之类的都是过场,所以你的回答别太长了,因为你占用的是自己一会儿解题的时间。但也别就两句话,自己把握吧。亚麻有LP内容,还是需要认真答的,但是面试官应该给你留够时间解题。
  • 一定要重复题目,确认要求 ,甚至确认sample input/output。然后问一些edge cases,这样一来表明你的确有考虑这些问题(面试官在等你说呢),二来也是给你自己时间想题目了。
  • 思考过程千万不要沉默,也不能完全的自言自语(因为他需要听你的思考过程)。如果你会紧张,把面试官想像成你的teammate或者一起做题的小伙伴(就是那种你熟悉的,给你信心的场景),你们一起来解这道题,你给他讲解你的想法。
  • 先在白板上把你的数据结构和算法解释了,给出space and time complexity(别等人问)。 不要马上写code。 如果你秒杀暴力算法,就直接接着优化吧. 有的题目很明显是要优化的,但是你还是可以很快的提一下暴力解法。Of course you are not looking for this brute force implementation. OK, this can be optimized by … 展示一个有层次的分析问题的过程,远远好于上来就提出最优解 。多说话才能展示你对不同数据结构和算法的掌握啊。Communication在打分里是和data structure,algorithm并列的一项,你说有多重要。
  • 开始写code之前问一下:should I start implement it in code, or you want me to conitnue to optimize it? 这样你也大概知道你的位置和面试官的期待在哪里。
  • 写完code一定要跑test cases ,不是盯着你的code自己看,要说出来。你刚开始问的那些edge cases就是一个提醒。
  • 字迹不要太潦草。你不赶时间,除非你思如泉涌怕自己忘了。一些null checking的无聊但是必须的语句,在征得面试官同意的情况可以只写一个comment: // check null etc… (May I skip these checks to save time?). 但是这个comment一定要写,否则面试官可能写报告的时候会忘记。
  • class和变量名不要那么长,给自己找麻烦,但是需要解释一句,免得面试官对你的coding style有疑问(sorry I will keep the variable names short just for convenience. In real code I will sure use more descriptive names).

另外,

  • 提前买个小白板练习,因为用Dry eraser写code和用笔写感觉不太一样,尤其是留白的掌握上
  • 对自己口语没有太大信心的,找个题,边写边讲,用手机录一下自己听听。国人有时候讲英文会吞字节,不太清楚,但是自己不知道,所以要自查一下。

还有一个问题是 如果题目已经见过了怎么办,要不要如实相告 ?说实话我不推荐。那个好人卡没有太大分量,最后你还得解题才能证明自己。如果面试官没有备份的问题(有的比较懒),他说你就解一下呗。万一你的code有错呢?万一你的解法其实不是他想要的最优呢?backfired on you. 你就当从来没有听说过,上面几个过程一个不要少,时间允许的话甚至可以装一装深度思考。:slight_smile: 这个时候你展示思路的发展就尤其重要,一下子跳到最优解,面试官心里会觉猜你做过题。如果其他几轮你表现不好,就更坐实了这种猜测。

还有小伙伴担心没有解出follow up。其实除非特别简单的题,new grad的话有个working code(在加上以上强调的沟通),应该至少有一个weak hire了,最差也是border line,但是L4/L5就很悬。

面狗家的下面必看啊
以前狗家5轮都是coding或者system design(除非你面的是manager)。大约半年前加了一个behavioral and leaderhsip round,所以如果你是L3,你会有4轮coding和一个BQ。但是HR好像没有给很多hint怎么准备。题目无非就是你讲故事,或者问你这个情况你会怎么做。大家不要误会那个leadership是要怎么管理别人。老美的leadership含义很广,对L3/4/5来说,leadership其实是怎么管理自己-自己的项目,进度,成长,沟通等等。Behavioral那都是common sense了,team work什么的。

亚麻的那个军规16条很好,可以做基础。狗家自己特别的是:

  • 你得能管理自己的项目和进度,能够prioritize自己的项目。根据什么标准prioritize?你自己的喜好吗?亚麻军规里其实有,我不敢说的太明了。其实都是common sense
  • 需求不明确怎么办?你会自己想办法吗?还是依赖别人?Project的需求总在变,你会撂摊子不干了,或者抱怨连天吗?
  • 亚麻里有个having backbone,那是指manager。如果你的同事做了不好的事或者决定呢?你会视而不见或者和稀泥吗?想想狗家“不做恶”的信条,想想你怎么融入啊?

需要准备至少3-4个故事,比如怎么处理和team里的人的conflict,项目要miss deadline了怎么办的等等。实在没有?那也要编啊。一定要有细节,因为面试官会问得很细。还有一句“废话”,要显示出你对产品的热情,对自己职业的热情,而不是就安于一个“码农”,说说你怎么提高自己的,online course? open source project?

说实话我不觉得这种对非manager的BQ面试有什么用,只能过滤一下无脑的愣头青吧。但是你只要知道面试官想听的keyword,还是比涮题简单的吧。

另外,我们写面试报告的时候,不能用he or she,就是不想透露任何在HC环节能引起歧视的信息,包括年龄,种族等等。狗家在这点上真是很nice和认真的。所以大家回答问题的时候,可千万别一不小心说漏了嘴。那很可能是一票否决。