作者LordCHTsai (我饿了)
看板Soft_Job
标题[心得][美国] 几年的面试者+面试官经验
时间Mon Mar 1 11:21:09 2021
监於近年来LeetCode刷题被神化,被认为是面试必备
所以我想以5年多以来无论是当面试者还是当面试官的经验
来分享一下如何准备面试
首先先分享一下我的经历
我不是什麽强者,没有参加过ACM竞赛,Code jam顶多做两题
美国硕士毕业後,LeetCode刷了250题左右,Google onsite後被HC拒了
去了另一家公司後,待了几个月上个简单的课之後就开始当面试官
才开始理解到面试官要的是什麽,之後FLAG里除了FB没面过外其他Offer都拿过了
以下从面试官的角度分析该怎麽准备
面试官不是专业的
面试官其实只是工程师稍微上点课知道什麽该问什麽不该问,还有态度该如何
除此之外和你一样就只是个工程师,因为平常都在工作对刷题肯定比你陌生
所以大部分面试官其实都只关注几点(应该说是被要求要注意哪些部分)
1. 有没有问对的问题
其实主要是想要看面试者的互动能力,通常面试官会简单的把题目叙述一下
这时候就是希望面试者可以主动重述题目,然後对题目的外在环境提出问题
例如: input的范围限制?、data是online/offline?、output的格式?
这时候就是想测试面试者有没有能力把一个问题转化成一个可执行的计画
2. 程式码的可读性/乾净程度
理由很简单,面试官都是假设以後要和你一起工作的,所以平常练习请把程式码写乾净
变数命名合理一看就知道作用,一个function一个用途,不要挤太多不相关的逻辑
可读性差通常在评分上是致命的,而且是大多面试官无法忍受的
3. 沟通、沟通、沟通
面试官都被要求把面试当作和一个不熟的人一起做个小专案
这时候沟通很重要,不要让面试官一头雾水不知道你现在的进度是哪里
就算你知道题目怎麽做,你解题的流程可能也和面试官不同,或者是对实作的见解不同
沟通在评分上是"绝对致命",你闷头自己把答案写出来不代表很聪明
而是未来和你工作很辛苦
4. 测试!
这是刷题的後遗症,面试没有一键测试这种功能
请自己在重述题目时顺便想好哪些可以测试的input/output,并且包含edge cases
很多时候不是自己解题的想法错了,而是实作中的bug
面试官也不会主动帮你走程式的流程来帮你验证对不对,请自己证明自己写的是对的
少了测试有时候你会听到面试官说:「我想应该是对的吧」
这时候回头肯定会在你的评分里写上少了测试
少测试的扣分可大可小,看题目的难易度
5. 有没有解出来,有没有optimal solution
其实这部分只要有个一般解,测试过了,基本分就拿到了
optimal solution基本上除非你是被考了很简单的问题
不然只要你能和面试官讨论怎麽优化,有哪些trade-off,就拿到基本加分了
实作不是一定必要,或是一定得写完整,因为你的一般解已经展现实作功力了
以上是大公司FLAG/FAANG的基本面试要点
一些新创的奇怪面试又是另外一回事,也很难分享如何准备
另外System Design是一个比较难标准化的东西,所以我就不献丑了
回到要不要刷题这个问题,我认为的是
- 刷题可以帮助你熟悉/复习演算法和资料结构,所以刷一下是需要的
- 题数不用多,如果你可以看到一个题目立刻知道怎麽解,那题就不用继续写了
- 刷题请给自己限时,1小时/45分钟的面试通常只会给你45/30分钟的做题时间
扣除掉各种沟通问问题的时间,我都是给自己每题20~30分钟
- 如果你确定onsite要用板书,做题时请分配一些给自己用纸笔作答
- 自己先想好怎麽测试,不要过度依赖LeetCode的工具
- 语言不重要,除非你确定你要面试的公司只考特定语言
- 考前请人给你mock interview训练临场反应和沟通,这和刷题同等重要
以下刷题数仅供参考
因为我每次重新刷题都会开一个新session,所以有记录我每次刷的题数
第一次跳槽90题,拿到Apple、VISA和新创(其实Apple不考算法题)
第二次跳槽110题,拿到LinkedIn和独角兽新创
第三次跳槽140题,只面Google且拿到Offer
最後祝大家Offer拿好拿满,希望这篇文章能帮助不知从何准备面试的人
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 73.222.35.91 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1614568871.A.4CC.html
1F:推 expury: 推推 03/01 11:23
2F:推 GLaDOS1105: 推推 03/01 11:31
3F:推 tnfshjcc: 推推 03/01 11:31
4F:推 cksxxb123: 太感谢了 好文 03/01 11:39
5F:推 kendegi: 推推 03/01 11:39
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 11:41:00
6F:推 kangan987: 推推 03/01 11:40
7F:推 siba727: 谢谢分享,另外想请问能否分享要求给予题目提示的技巧呢 03/01 11:43
8F:→ siba727: ? 03/01 11:43
卡题的时候建议是不要直接说「我该怎麽做」之类的
毫无头绪的情况下最差是先用暴力法做推理,99%的题目应该可以至少用暴力法解
推理之後再开始讨论优化的问题,这时候就可以间接问「我该怎麽优化」
9F:推 otsukabi: 感谢分享 03/01 12:00
10F:推 sanchi: 感谢经验分享 03/01 12:02
11F:推 ilovejesus: 推 03/01 12:05
12F:推 kevinfilter: 推!感谢经验分享 03/01 12:27
13F:推 zrna0515: 推 03/01 12:28
14F:推 cuteSquirrel: 好文 03/01 12:28
15F:推 az345705: 谢谢分享! 03/01 12:53
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 13:16:24
16F:推 acoo: 推 03/01 12:58
17F:→ DrTech: 这才是正确观念,建议有在刷的好好看。不要光凑题数背答案 03/01 13:01
18F:→ DrTech: 。 03/01 13:01
19F:→ DrTech: 面试考leetcode也不是只考写出来正确答案。 03/01 13:02
20F:推 taipoo: 推好文 03/01 13:20
21F:推 dddingnan: 推推 03/01 14:03
22F:推 kyrie77: 推 03/01 14:13
23F:推 michael0728n: 推推 03/01 14:33
24F:→ superpandal: 美国的ip 要求风格的国度 解题方式不同是沟通问题... 03/01 14:53
25F:→ superpandal: 那还是背书cp值比较高 03/01 14:53
26F:→ superpandal: 直接背优化的解 03/01 14:55
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 15:00:55
27F:推 r8106087: 推,谢谢分享 03/01 15:03
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 15:22:19
28F:推 Stdout: 观念正确 03/01 15:24
29F:推 SwiftLang: 推,Apple不考算法题(? 是看组吗 03/01 15:30
30F:→ SwiftLang: 还是说会考只是考得比较少之类的呢 03/01 15:30
Apple看组,因为各个部门独立招人
肯定有算法题考比较多的组,我面的那次全是相关系统实作
面试前建议和HR询问面试内容
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 15:33:45
31F:→ SwiftLang: 感谢分享,方便问大大是哪个领域的吗~app, backend,ml? 03/01 15:35
fullstack,frontend(web)/api/backend全包
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/01/2021 16:07:10
32F:推 Ouranos: 大推!观念很棒 :) 03/01 17:22
33F:推 evan11401: 推推 感谢 03/01 18:31
34F:推 worcdlo: 前阵子面G,平均每关写两题,但被HC因为完全没有执行4拒 03/01 21:03
35F:→ worcdlo: 绝了,习惯的培养很重要,面试不能当比赛在打 03/01 21:03
测试真的很重要而且很容易被忘记,见过不少面试者因为没测试被打枪
36F:推 urmfo: 请问系统设计有没有什麽拿分的关键呢? 03/01 21:36
37F:推 urmfo: 跟楼主一样偏前端和全段方向,系统设计可以不要在後端db着 03/01 21:52
38F:→ urmfo: 墨太多吗? 03/01 21:52
系统设计我个人认为沟通大於一切
只要一开始能够和面试官沟通,例如
- 设计要涵盖架构里的哪些部分,哪些可以假设有黑盒
- 什麽是MVP,面试官觉得哪些功能最重要,板书前就决定好P0 P1
之後照着讨论好的计画做清楚的板书(图是不是标准UML之类的不重要)
剩下就看合不合面试官的喜好了
※ 编辑: LordCHTsai (73.222.35.91 美国), 03/02/2021 02:29:32
39F:推 mmonkeyboyy: 推一下 测试很重要@_@~ 我觉得应该说你实务做多了 03/02 02:34
40F:→ mmonkeyboyy: 就会知道测试很重要了@_@~ 03/02 02:34
41F:推 baobomb: 正解 面FG时感受也是这样 题目不难 重在沟通 03/02 05:52
42F:推 jackkao1: 推 03/02 09:31
43F:推 siriusu: 推 03/02 18:18
44F:推 shiauji: 感谢分享 推 03/02 19:34
45F:推 Yujjlin: 谢谢分享 03/02 23:51
46F:推 imjeffreylee: 推一个 03/03 01:09
47F:推 fatathome: 推 03/03 10:48
48F:推 ayugioh2003: 推 03/04 22:02
49F:推 leicheong: 1那个真的很重要. 以前负责面试时就很爱出「不发问会 03/04 22:24
50F:→ leicheong: 出问题的问题」XD 甚麽都不问只埋头做的话会在review时 03/04 22:25
51F:→ leicheong: 被质问为什麽会这样. :P 03/04 22:26
52F:推 streakray: 推推 03/06 19:27
53F:推 onthesea: 观念正确好文 03/09 16:30
54F:推 nightcrow: 大推,正好需要 04/30 07:24