浙江大学计算机就业分享
胡津铭
Offer类型介绍
• 建议尽早确定自己target哪种类型的offer
• 不同类型的offer要求的能力差别可以很大
• 确定了选择之后,可以了解target的offer需要的能力
- 看对应offer的面经,了解面试风格
• 当你还不确定自己想选哪种的时候,可以培养一些通用的能力
- 能力够强的同学可以“我全都要”,到最后再选择
- 但大多数同学到了研二的时候可能就该开始思考目标,并做一些针对性的准备
外企 VS 私企
• 外企:Optiver,谷歌,微软,摩根士丹利,Hulu,Airbnb
• 私企:阿里,腾讯,头条,百度,拼多多,华为…
算法岗 VS 开发岗
• 算法岗:使用机器学习解决问题的岗位
• 开发岗:后端开发、前端开发、系统开发等
• 除了兴趣与实验室方向以外……
拿下Offer需要的能力介绍
为了结合不同类型的offer介绍,每种能力还会针对以下几种offer类型主观地给出重要性打分(0-5)
- 外企IT:如谷歌,微软,Hulu,Airbnb
- 外企金融:如Optiver,摩根士丹利
- 私企开发:国内的IT企业的开发岗
- 私企算法:国内的IT企业的算法岗
LeetCode刷题(最重要)
• 准备的方式非常简单,刷题
- 建议从质量高的题开始刷,LeetCode有个tag是top100 liked,从这个tag开始刷,建议主要做自己要费点力气(半小时)才能做得出来(但又不是完全做不出)的题
- 直接在LeetCode网站提交代码的窗口里做题,肉眼debug,不用IDE(锻炼白板编程能力)
- AC之后,要去看Discussion/Solution,看别人更好的解法/写法
• 建议至少刷个200、300道吧
- 我找实习之前刷了400道,秋招之前刷了700多道
• 重要性评价:
- 外企IT:7星
- 外企金融:4.5星
- 私企开发:腾讯微信,头条5星;其他4-4.5星
- 私企算法:腾讯微信,头条5星;其他4-4.5星
交流沟通能力
• 沟通能力包括哪些?
- 与面试官交流,问清楚算法题的条件(面试官可能给的不全,故意挖坑);讲清楚自己的思路、代码
- 一些场景题也需要问清楚场景、需求等
- 将自己项目、论文、竞赛等表述清楚
- 回答问题清晰易懂
• 准备方式:
- 自己练习
- 找小伙伴模拟面试,看能不能和他/她解释清楚
- 模仿你觉得表述厉害的人的表达,学习他们的表述技巧
• 重要性评价:
- 外企:5星
- 私企:3.5星
项目/实习/竞赛(重要)
• 我个人推荐,有机会去好的公司实习的话,就去实习
- 实习可以锻炼工业界真正需要的能力
- 实习可以帮助了解某家公司/某个岗位,帮助自己以后做选择
- 实习有转正机会,比直接秋招容易很多
- 实习对找实习/秋招帮助很大
• 如果由于一些原因不方便去实习的话
- 扎实地做项目(实验室),确保简历上所写的内容的细节都清楚
- 也可参加开源项目(Github)
- 可以参加一些竞赛(Kaggle、天池)
• 重要性评价:
- 外企:项目/竞赛3星(只要过了表刷),实习3.5星(转正5星)
- 私企:5星
CS基础知识
• 包括:
- 编程语言(C++/Python/Java等)
- 一些工具的使用:比如Git,Linux等
- 基础课程:数据结构与算法、体系结构、操作系统、计算机网络
• 要扎实
• 面试准备时看面经
• 重要性评价:
- 外企IT:2星(想写0星)
- 外企金融:5星
- 私企开发:4.5星
- 私企算法:2-3星
机器学习基础
• 数学、统计学习基础、深度学习基础
• 要扎实(不要只会调包!)
• 面试准备时看面经
• 重要性评价:
- 外企IT:0星,hulu的算法岗5星
- 外企金融:0星
- 私企开发:0星
- 私企算法:5星
顶级论文
• 在实验室憋论文,或者去工业界某些发论文的组
• 硕士可以找博士合作,拿二作
• 重要性评价:
- 外企IT:0星,hulu的算法岗有用
- 外企金融:0星,optiver的算法岗有用
- 私企开发:没有不扣分,个人感觉有了加分也不大
- 私企算法: 有(一作)论文(CCFA)会有很大的加分,某些公司(阿里、腾讯、头条等)特别高的offer一般需要一作论文
解决问题的能力
• 这是一个比较抽象的能力,前面提到的诸多能力也或多或少涉及这项
• 了解清楚问题
→
\rightarrow
→抽象问题
→
\rightarrow
→抓住问题要点
→
\rightarrow
→灵活运用已有的知识解决
• 国内私企喜欢用一些场景题来考察
- 给你一个场景,让你提出解决方案
• 外企喜欢用system design来考察
- 同样是给场景提出解决方案,但要更加细节,需要给出设计的具体细节甚至还有代码
• 重要性评价:
- 外企IT:3.5星
- 外企金融:5星
- 私企开发:4星
- 私企算法:4.5星
英语
• 了解面试公司对英语的要求
• 练习方式:
- 平时自己多练
- 找小伙伴模拟面试
- 不一定要发音特别地道,但要能够较流利地回答问题、表述自己的想法
• 重要性评价:
- 外企IT:微软2.5星,Google 秋招4.5星(有至少一轮全英文面)
- 外企金融:5星,optiver和摩根士丹利都是全英文面
- 私企:基本0星吧
其他零碎的建议
• 找小伙伴一起努力学习,一起找实习全职,共享信息
• 能找内推就找内推,别拖得太晚投递(要是想准备好再投递,可能永远都没有准备好)
• 国内公司,同一家公司甚至同一个部门的不同组的难度、前景、氛围可以差异巨大,最好靠谱学长学姐打听、了解
• 基础要扎实
• 简历的内容一定要非常熟悉,尤其是面私企
• 面试前看面经
• 推荐我写的帖子:
找国外名校(主要是MIT/Stanford/CMU/Berkeley)有课程录像的对应课程,假装自己真的在上课一般地按照课程安排上课、看阅读材料并完成作业。主要的MOOC平台有Coursera, Edx和Udacity。
Coursera上有开Princeton的Algorithm课,把Edx上MIT的6.001x跟完了,还看了一些Harvard的CS50课程。《Artificial Intelligence: a Modern Approach》,Coursera上Andrew NG课,Tom Mitchell的那本《机器学习》,周志华老师的《机器学习》,李航的《统计学习方法》,《Pattern Classification》,《Elements of Statistical Learning》,MIT的18.06,概率论的知识(Harvard Stat110),Stanford的CS231n,《Information Theory, Inference, and Learning》,Stanford的CS41 Python Language,还有MIT的6.006 Intro to Algorithms。蔡登老师的机器学习课程,《Introductory Lectures on Convex Optimization》……
数学
MIT 18.01,MIT 18.02:微积分。
MIT 18.06:线性代数
Harvard Stat110:概率论。
MIT 6.042J:Mathematics for Computer Science.
CS导论
MIT 6.001:Introduction to Computer Science and Programming in Python
数据结构与算法
MIT 6.006:Introduction to Algorithms,教材是CLRS。
MIT 6.046:Design and Analysis of Algorithms. 进阶版,但其实前面那门课就已经内容不少了。
操作系统
CMU 15-213:教材是CSAPP。
MIT 6.824:分布式系统。不久前终于感人地放出视频了。
MIT 6.828:其实还没看,小伙伴都说好。
MIT 6.004:Computer Structure。偏硬件,老师讲得很好。
Modern Operating System
编程语言
Stanford CS41: Python Language Programming. 可惜没有视频,作业挺有意思的。其实我觉得学语言比较好的一种方式就是学了语法之后做一些练手的项目、作业,这样会掌握得比较快。
Stanford CS106L: C++ Language Programming. 前文也介绍过了,我觉得那本Full Course Reader写得真的很好,推荐一下~
还有一些领域内很知名的书,这里就不再专门推荐啦,这些课程里也会有介绍/推荐。这里再啰嗦一句,对大多数人来说,往往只需要学会某种编程语言中20%不到的常用特性,而这20%的常用特性往往占了实际使用这门编程语言中的90%。所以我不是很建议一开始弄本厚厚大大的书看,那样又吃力又缺少反馈,而且可能会花大量精力在自己根本用不到的地方。我其他的编程语言似乎都是用官方tutorial入门的,这里也就不推荐啦。
机器学习
浙大的同学来蹭蔡登老师的课>_<
Coursera Andrew NG的Machine Learning:机器学习之路从这里开始。
Stanford CS229:Machine Learning. Youtube上有视频。
CMU 15-701:Intro to Machine Learning. 就找到这么一年有视频的。
Coursera PGM:知名课程。
CMU 15-708:Probabilistic Graphical Model 我只看过两个Lecture。
下面有几本书,不过还是推荐和课程一起看。
Pattern Classification (PC):比较老的书了,但是内容还是很有意义。
Elements of Statistical Learning:insight很多。
Pattern Recognition and Machine Learning (PRML)
Machine Learning: a Probabilistic Approach (MLAPP)
Information Theory, Inference, and Learning
深度学习
Stanford CS231n:Deep learning for CV. 推荐深度学习从这里开始
Stanford CS224n:Deep learning for NLP.
Berkeley CS285:Deep RL. 我只挑着看了几个Lecture,小伙伴说好。
Deep Learning Book:花书。
陈博
2021年3月份开始找实习!(阿里、腾讯、华为、百度、OPPO等都试一下)
答应去实习尽量不要放鸽子。挑一个相对比较满意的先签一下offer,大不了违约。
基础知识(研一)
- NLP:cs224n/cs11-747、统计自然语言处理
- 机器学习:统计学习方法、cs229、花书
- Leetcode:大概只刷了200道、公司对应的题库
- 领域热点问题: 比如预训练lm、self supervision
- Python:python高级教程、Tensorflow(实践比较重要)、Pytorch
- 面试:牛客面经、百面机器学习、相关的业务方向:《计算广告》/对话系统
笔试
• 笔试的主要目的是为了刷人,通常难度比面试题大(做出40-60%即可)
• 笔试困难的同学,可以走提前批或者一些不看重笔试的企业(华为、腾讯、阿里)能直接投部门就投部门。
• 目前一些公司的算法岗笔试题开始有深度学习的知识出现:
- 概率题(牛客有汇总)
- 机器学习
- 云从、网易、BIGO
面试(靠积累)
• 面试希望去了解候选人的各方面边界
- 如果感觉受到了羞辱,那可能本来也不适合这个岗位
• 把握面试的主动性
- 不要有一说一
- 不要不懂装懂
• 争取线下面试和现场展示
- 线下面试流程快:很多同学可能1-2周一面,比如美团和阿里、线下面试可能一天走完了
- 现场展示更清晰:用PPT展示远比电话解释问题清晰、动态匹配的,hc没了就没了
• 知识:
- 深度学习:花书、平时积累
- 概率题:牛客
- 算法题:剑指offer、Leetcode、一些独角兽比较难:旷视、依图
- 项目经历(科研岗位比较重视)
面试体会
• 论文、实习、比赛、刷题都挺重要
• 总得有个亮点
• 不同的单位有不同的重点
• 由于论文通货膨胀,没有顶会可能会比较难(算法岗)
• 比较重要的是:
- 全面了解每项经历的内容、难点、技术要点
- 有一个比较高的参与度
- 写到简历上的应该都是你非常熟悉的内容
科研过程的一些体会和弯路
大领域——NLP
- 了解目前的顶会
- 关注一些领域大牛
- 多和作者交流
- 知识的主要来源:知乎和公众号
- 阅读和Follow当前的热点文章
- 复现和阅读经典论文的源码
建议follow比较靠谱的组
研究课题(细分领域)
- 最好及时止损,但并不是很容易
- 广泛的阅读该领域的文章
- 通过Google的引用和被引用找到主线
- 确定几个可以研究的问题
具体问题
一个比较差的典型做法:
- 采用强化学习进行指代消解
- 问题和方法都确定,结果就不太可控
- 动机是什么?
- 是一个已经确定不太work的做法,需要证明Novelty
- 还没有形成直接可以做的伪代码,没有可执行性
相对好一些的做法:
- Stack-lstm+NTM作为指代消解的记忆单元,采用强化学习训练一个指代消解决策的动作序列模型,动作序列包括,出栈、入栈、开辟新栈等,模拟人脑
- 伪代码可以相对好的给出
- 动机:模拟人脑阅读过程,加入了改写这一步,看起来也有一定Novelty
- 可执行性较差
一个好的idea:首先是有具体实现路径,可以落实到伪代码的idea,然后经得起Argue:
- 动机
- 自证
- 差异和贡献
数学硕士就业算法岗
- 算法:ML(推荐,广告),CV(图像分割、检测、识别),NLP(百度),知识图谱,语音识别
- 开发:CS,C++,Java
- 大数据:统计,R,SQL
第一份工作:大平台:BAT,字节,华为
部门:浙大CC98论坛
核心部门:阿里的电商,腾讯的社交微信事业群,面试难度大
准备:
- 操作系统,Linux,shell脚本
- 数据结构,算法设计与分析(算法导论)
- 计算机网络和计算机组成原理大致看一看
- Python,TF,Pytorch
- C++/Java(加分)
- 写代码:剑指offer,Leetcode(400多),牛客,博客
- 学会写技术博客
- 总结规律和方法
- CS思维
- 前沿
- 成绩好
阿里面试可能会考手写logistic回归、决策树、Adaboost,不用numpy库