注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 大队管理员 于 2020-11-12 11:21 编辑
. 1point 3acres
楼主经历一年的招工最近终于上岸了,在这里分享一下过去一年的经验和走过的坑,希望多多少少能帮助一下还在奋斗的同学。因为今年很难,我CS, quant还有本专业的工作都在找,先说下背景和面试基本情况吧。
楼主EE PhD, 虽然顶着EE的名头做的是Applied math的工作。电路不会看,clean room没进过,连组里实验室门在哪里都不知道。每天基本上就是写代码做数值计算和优化,因为考虑到算力,主要用C++和Python,但方向非常窄,职位少。有过一段大厂的research intern,很无奈没有return。今年从年初开始找intern到夏天开始直接找全职基本上耗了我整整一年,每天反复崩溃。大概投了几百个公司吧,CS除了白嫖OA一个面试都没有,quant基本上除了Jane Street秒拒之外剩下的多多少少有下一步,DS没仔细准备只投了Google,再就是专业相关投了很多半导体公司比如Amat啥的。感觉今年如果是PhD,并且没有dedicated的码农实习的话尽量找和自己专业相关的工作。虽然职位少,但至少每一个都给了面试(除了ASML需要export control直接填完问卷拒)。最后只收到了两个offer, 从了某FAMG的硬件research。
虽然没啥CS quant的offer,但我也说下我准备的过程和面试过程大家一起交流,至少能帮一下大家/避一些坑。
关于刷题: 我从一月份就开始刷题准备面试了,截止到九月中旬LC刷了750道,很多题反复刷过。感觉只刷题一点用都没有,因为直到在七月的时候我还是很多medium都不会做。但是到九月中旬的之前我专注地学了两个半月的基础,感觉就很多hard都毁了。分享下这两个月的经验吧,感觉对刷题提升不少:
1. 所有基础排序,搜索,二叉树包括BST, 和简单的数据结构底层实现都按照课本的伪代码自己手打并默写。可以建一个Jupyter归纳这些算法。写两遍之后很多LC的题立刻就清楚很多,尤其很多复杂的边界条件的问题。
2. 从LC第一题开始往后每天看30道题,没有思路就看答案背,不需要写出来。我是看到300题的时候就可以发现一些规律了。
3. 精选不会的题尤其是hard题口述,中文英文都行(communication后面我会说),说出来的时候就发现自己的想法卡在哪里了。再去看答案就会清楚很多
4. 一些繁琐的关键的算法比如KMP还有Segment Tree需要单独把模板记下来,同样推荐Jupyter。
5. 关于动态规划, 这个我真的是挺骄傲的,因为准备quant没少花功夫在上面。这是个很大的问题,可能需要专门列个贴子说。但我个人的经验是dp table画出来反而很难理解,所以我不列表。我一般的解法是 i) 选择合适的state, ii)画出dependency graph(不知道的同学可以google一下), iii)列出dp式。选择合适的state基本靠经验了,刷题总结就okay。dependency graph可以根据逻辑推理画出来。列dp式可以依据Bellman principle,简单来说就是只要把dependency graph画出来,state 和state之间的transfer function就可以直接根据graph的逻辑关系(比如min, sum, not,max)写出来。很抽象,但是可以参考stock 四兄弟的state machine 的方法。其实那个方法是非常general解决dynamic programing的方法,几乎所有的dp题都可以这么套。套这么十几道题就看出规律了。
虽然题做得很溜,但我一个正规的码农面试都没有,所有也不在这里班门弄斧讨论其他比如system design 的面试了。
关于quant:在我五月份发现基本CS都hiring freeze的时候就打算开始转quant,因为机缘巧合投了citadel 的sde intern发现给我了quant面试,我就觉得有戏,所以仔细准备了下。
quant的面试内容太广了,除了基础的微积分,线性代数,概率论,统计之外,还有很多其他的考察内容。我几乎总结了我所有学过的数学,这里列出来一些大家可能容易忽略的(确实都是我遇到过的面试题):. 1point 3acres
linear regression: 我建议找本econometrics的书把linear regression从头推一遍,需要很深的理解,太重要了。DS基本上也考这个。. check 1point3acres for more.
sampling 方法: Monte Carlo, inverse sampling, importance sampling, variance reduction
. Χoptimization:基础的convex optimization概念和简单的lagrangian。如果你的简历里面提到了神经网路,那很多stochastic gradient descent啊,adam optimizer啥的的基本原理和优缺点都得知道
combinatorics: 这个太难了,很多时候得结合递归来做,我遇到了没见过的肯定跪。但一些经典的catelan number的例子还有dearrangement必须得掌握。
dynamic programming: 这个刷题总结就好。如果简历上扯到Markov chain建议看看Markov decision process (reinforcement learning),都得用到dp。
optimal stopping: 这是一类很容易忽视的题。它研究的内容是Markov reward process. 如果看Jane street或者其他high profile fund的面试题有很多都是optimal stopping的问题。基本上可以用递归解决,但是知道有optimal stopping rule的话非常简单。单独列出来只是方便大家有针对性的找类似的题,并不建议直接面试得时候用,还是递归一步一步来吧。
partial differential equation (PDE): 卖方面试会出,主要是heat equation,如何分离变量,啥是格林函数(面硬件岗也被问道了。。。),物理意义很重要。
stochastical differential equation(SDE): 卖方面试会出,知道如何解常见的SDE,和一些quant常见方程就行,同样物理意义很重要
signal processing: 很简单,会傅里叶变换就行,基本性质。知道其他fancy的变换更好。
numerical method: 会用二分法和牛顿法求sqrt(2) 就差不多了,再会个欧拉法解个微分方程就够了。如果是卖方的话建议掌握heat equation的数值解法。
machine learning: 很多都很基础,概念类型的题很多。但着重看一下svm以及如果用svm做regression。我见到过两个面类似的题。. ----
C++:网上搜c++常见面试题就可以了,基本上就那些问题。有multi-thread经验更好,但不必须。建议刷题的时候有时候用用c++,熟练一下以防万一。
剩下的就靠智商和运气了。。。总的来说虽然花了很多功夫,但也肯定比不上那些推了五年公式的数学物理CS大牛,所以跪了就跪了。不过令我欣慰的是所有跪的情况都和数学题关系不大,反倒是很多的data analysis还有communication让我跪了。
写了这么多乱七八糟的,希望多多少少能帮到一部分人吧。我不是大牛,如果有什么不同的见解也希望一起讨论。最后我想说的是,面试其实也是一种技能,总结每次面试的错误争取下次不要犯同样的错误才是最重要的。虽然我拿到offer的面试并没有考到很难的代码和数学题,但是很明显如果没有之前的面试经验,根本连BQ都不可能过。最后祝大家都能早日上岸!看到最近貌似招聘都渐渐回暖,希望大家最终都能拿到心仪的offer!
|