我之前看很多资料了解到的情况就是北美面试必须要刷题, 如果不刷,很可能根本就没办法通过大厂的面试.
因为之前大部分时间我都是在国内外企工作, 虽然也有 coding 面, 但占的比重并不是很大. 而且可能因为 2022 年以前的市场还没有这么卷吧. coding 面的题目都是很常规的题目, 如果你能给出思路, 就算你没有写出 runnable 的完整代码, 也不是大问题.
然后就是尝试了北美这边的面试, 可以说完全不同的风格, 这边很多面试的题目就是完全来自 leetcode, 而且是故意隐藏了很多关键细节的题目.
比如他们会口述一道题目, 只描述基本需求,
不会告诉你输入输出的数据类型, 当然也不会告诉你方法签名, 也不会告诉你一些具体的条件限制, 比如输入量多大, 输入数据是不是符合规范(空值,大小写,数字正负值), 和具体的边界条件
以上这些你在实现过程中的很重要的细节, 除非你问, 否则他们一开始就不会给.
当然, 我理解, 我们实际工作很多需求一开始也是不明确的, 是需要沟通的.
但是做题不一样, 做题是有时间限制的. 很多细节明明很重要, 面试官是故意藏着不说的, 连 leetcode 上的题目所给的信息都比面试官口述的要多.
基于以上情况, 可以说 coding 面, 非常非常考验运气. 如果你刷到了类似的题目, 只需要简单沟通, 确认之后你直接就可以背出来了, 两分钟足够了.
但是如果你没有刷题, 没练习过类似题目, 你就会非常被动. 因为连输入输出你都需要确认, 然后在需要沟通确认思路, 然后再写, 整个过程下来可能你写代码的时间就非常非常短了.
关键是, 如果对面是一个只认可最优解的面试官, coding 面如果你不练习可以说完全没戏.
我相信很多人看到这个标题, 其实是像说刷题都不会水平肯定不行的.
但是我看绝大多数人解题时使用的语言可以是 C,C++,java,Python,JavaScript,Typescript,Go, 好像几乎没有人用 Haskell, Scheme, Lisp, OCamel, COBOL, FORTRAN 的吧, 甚至用 Scala,Racket,Erlang,Elixir 的都很少吧.
为什么呢? 因为这些题目都是需要你使用命令范式的语言, 临时变量, 可变数据结构, 副作用方法来解题的, 绝大部分时候你所能用的控制流也就只有 assign, if-else, for, while, break, continue 这样的简单的几个. 而且根本不会考虑线程安全问题, 因为只有单线程场景.
但是我们实际工作中呢, 无论前后端开发, 你面对的就是多线程环境, 甚至是分布式环境, 解决的是业务层问题. 所以开发人员写代码的时候会被鼓励:
以上这些无论是前后端开发, 都是现代语言发展的趋势.
我们使用这些语法特性来降低处理问题的复杂度, 减少代码上下文处理的心智负担, 并且使我们的代码在并发环境中更好的横向扩展.
但是以上种种你工作中用到的所有能力, 跟 leetcode 的题目所需要的能力是没有关系的.
另外就是还有语言的因素:
基于以上分析, 为了做题选择一门合适的刷题语言非常重要:
所以刷题语言, Python, JavaScript, Ruby, 甚至 PHP 都还不错.
静态语言里面 go 其实也挺适合刷题的, 因为 go 本身对函数式特性相当抵触. 大部分习惯了 Go 语言的人天生对函数式没兴趣, 而且 go 的数据结构非常少, go 的所有操作都是指令式的, 方法基本都是靠副作用实现的, 控制流是典型的 C 风格, 所以应该更习惯刷 leetcode 题.
其它语言是有点吃亏的.
然后就是有效刷题, 网上有很多资料教, 按照特定的套路一个类别一个类别的练习就好了, 所以我就不多说了.
其实我本来对刷题是很不屑的, 认为这是浪费时间. 但现状是你不刷题, 大概率是没办法通过前面几轮面试的, 所以只能刷啊. 刷题就算再不合理再脱离实际, 但你想你每刷的一道题, 就是你将来每月工资的几十上百块 Money, 这是不是就是有意义的,
所以面对现实, 刷吧, 卷嘛, 都来做小镇做题家.
1
mooyo 2 天前
不是的,你误解了,故意隐藏限制条件就是要你去问,这也是考察你的交流能力和去澄清需求的能力。最优解这个没办法,现在内卷这么严重。
比较好奇为啥你能直接找北美的工,怎么搞定的工签。 |
![]() |
3
SeaTac 2 天前 via iPhone
我用 java 习惯了其实刷题还好 面试用 java 接受程度也高
至于刷题 根据我看到的东西来说来看更像是保下限 即证明你有基本的 coding 能力 剩下的要看你 design / bq / culture fit 题得刷 但是刷点基本的就好 遇上个给你出 dp 的 move on 就行 |
![]() |
4
iintothewind OP @mooyo #1 其实我认为这是内卷早成的, 因为故意隐藏碰上运气好, 那就是简单确认, 然后直接背答案了, 真的很没办法.
|
![]() |
5
iintothewind OP @mooyo #1 我是已经来了然后骑驴找马, 本来一点都不想刷的, 因为之前的两份工作可能小公司的原因就没考过 leetcode, 我以为不考的多, 结果大厂都要考, 唉 :(
|
![]() |
6
iintothewind OP @SeaTac #3 对, 刷题就是敲门砖, 所以别的不说, 就是刷就完事了.
|
![]() |
7
liprais 2 天前
你以为刷题是敲门砖,其实人家只是用来把没关系的挡在外面的
卷是没用的 |
![]() |
8
iintothewind OP @liprais 不全部是这样的。
|
![]() |
9
wyntalgeer 2 天前
据我观察国内由于 AI 辅助,风向开始由 leetcode 向工程化转了,北美你辛苦辛苦再多面几家,再探再报
|
![]() |
10
iintothewind OP @wyntalgeer 嗯,我们再能刷也没有 AI 做的快做得好啊,只能说顺应游戏规则吧。
|
![]() |
11
RecursiveG 1 天前
细节全给你了怎么考察问题分析能力,缺少细节却还能给出解答反而不正常。
入门岗位你要和大学生竞争,不是所有人都学过函数式语言,而且也不禁止你用函数式的逻辑写代码。 |
![]() |
12
RecursiveG 1 天前
@RecursiveG 高级岗位也有 System Design 或者 BQ ,虽然你也可以把它们当刷题那样去准备(
|
![]() |
13
iintothewind OP @RecursiveG
我不是应聘入门岗位。 “ 不禁止你用函数式的逻辑写代码”,是的,但是用函数式解 leet code 题目不是为难自己吗? 所以说这是“ 刷题所需能力与实际工作所需能力的严重脱节”啊。 |
![]() |
14
VchentozV 1 天前
国内一样啊, 面试造航母, 干活拧螺丝. 因为有造航母的能力, 所以拧螺丝大概率是不会出错的.
|
![]() |
15
ksmiloLove 1 天前
说的好啊,这只是游戏规则而已
|
16
Donaldo 1 天前
刷题就是程序员的高考
|