超详细|算法岗学习路线大总结
前言
本篇将分析具体的算法岗学习路线
笔者非科班出身,基础还相对薄弱,本文肯定会有诸多错误或者疏漏,欢迎指出和补充。
算法岗的面试主要分为四大项,具体顺序可能因面试官而异
Coding,给你一道题限时完成 机器学习 or 深度学习基础 论文 or 项目介绍 其他问题 & 向面试官提问
本文将从以上四点进行展开
一、数据结构 & 算法题
随着算法岗越来越卷,Coding几乎成了面试必考的一项,而且在面评中的权重也越来越高,根据个人面试经验,如果这一环节没有很顺利得完成的话,几乎必挂,尤其对于非科班转行的同学,需要特别重视。
刷题时间没有“太早”之说,当你定好自己的职业规划之后,就可以开始着手刷题,最好可以写自己的刷题笔记,别人的笔记永远没有自己的更加印象深刻。
把秋招面试当作高考或者考研,大致在1~3个月之前开始刷题冲刺。
刷题
尽量保证自己熟悉掌握的题量在 200 道以上
牛客 剑指offer: 相对 LeetCode 简单些,早些年面试前刷这个就足够了,但是现在肯定是不够
LeetCode: 首先刷 Hot100,而后再分模块刷,一定要把类似的题目放在一起刷,面试的时候很有可能遇到变种题,此时举一反三就变得很重要
高频题目汇总
个人总结了 200 道左右常见的面试题,具体可以看个人博客
【完整版】个人面试总结 数据结构 & 算法题 & 概率题 & 机器学习 https://blog.csdn.net/weixin_41888257/article/details/107397221
推荐刷题指南
刷题最好有“参考答案”,并需要举一反三,推荐几个关于算法刷题汇总的 Github 热榜
labuladong: https://github.com/labuladong/fucking-algorithm
小浩算法: https://github.com/geekxh/hello-algorithm
二、机器学习 & 深度学习基础 & 进阶学习路线
推荐一篇极其详尽的算法岗学习路线,重磅 | 完备的 AI 学习路线,最详细的资源整理!,但是,这篇本质上是一个“学不完”系列,本文将根据个人理解,去繁就简,以面试核心考点为重点展开
机器学习
学习新知识时,总是从已知领域引向未知领域,而老师就很好地充当了这一引领的角色,视频教学是入门一个新领域最易上手的方式
1. 公开课|吴恩达《Machine Learning》
这绝对是机器学习入门的首选课程,没有之一!即便你没有扎实的机器学习所需的扎实的概率论、线性代数等数学基础,也能轻松上手这门机器学习入门课,并体会到机器学习的无穷趣味。
课程主页:https://www.coursera.org/learn/machine-learning
中文视频:[网易云课堂] https://study.163.com/course/introduction/1210076550.htm?inLoc=ss_ssjg_tjlb_%E5%90%B4%E6%81%A9%E8%BE%BE
中文笔记及作业代码:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes
2. 公开课|吴恩达 CS229
吴恩达在斯坦福教授的机器学习课程 CS229 与 吴恩达在 Coursera 上的《Machine Learning》相似,但是有更多的数学要求和公式的推导,难度稍难一些。该课程对机器学习和统计模式识别进行了广泛的介绍。
课程主页: http://cs229.stanford.edu/
中文视频: http://open.163.com/special/opencourse/machinelearning.html
中文笔记: https://kivy-cn.github.io/Stanford-CS-229-CN/#/
速查表: 这份资源贡献者是一名斯坦福的毕业生 Shervine Amidi。作者整理了一份超级详细的关于 CS229的速查表 https://zhuanlan.zhihu.com/p/56534902
作业代码: https://github.com/Sierkinhane/CS229-ML-Implements
3. 公开课|李宏毅机器学习
课程主页: 最新2021年课程 https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html
BiliBili: https://www.bilibili.com/video/BV1JE411g7XF?from=search&seid=4319647467302480504&spm_id_from=333.337.0.0
学习笔记: https://github.com/datawhalechina/leeml-notes
教学视频作为入门是绝佳的,但是口语化的教学不利于学习过程中对细节的考究,因此后面推荐一些书籍。
4. 书籍|《机器学习》
周志华的《机器学习》被大家亲切地称为“西瓜书”。这本书非常经典,讲述了机器学习核心数学理论和算法,适合有作为学校的教材或者中阶读者自学使用,入门时学习这本书籍难度稍微偏高了一些。
读书笔记: https://www.cnblogs.com/limitlessun/p/8505647.html#_label0
公式推导: https://datawhalechina.github.io/pumpkin-book/#/
课后习题: https://zhuanlan.zhihu.com/c_1013850291887845376
5. 书籍|《统计学习方法》
李航的这本《统计学习方法》堪称经典,包含更加完备和专业的机器学习理论知识,作为夯实理论非常不错,该书已经出第二版了。讲课 PPT: https://github.com/fengdu78/lihang-code/tree/master/ppt
读书笔记: http://www.cnblogs.com/limitlessun/p/8611103.html
https://github.com/SmirkCao/Lihang
参考笔记: https://zhuanlan.zhihu.com/p/36378498
个人部分总结: https://blog.csdn.net/weixin_41888257/article/details/107701677
https://blog.csdn.net/weixin_41888257/article/details/107701929
代码实现: https://github.com/fengdu78/lihang-code/tree/master/code
6. 实战|Kaggle 比赛
比赛是提升自己机器学习实战能力的最有效的方式,首选 Kaggle 比赛。
Kaggle 主页: https://www.kaggle.com/
Kaggle 路线: https://github.com/apachecn/kaggle
深度学习
1. 公开课|吴恩达《Deep Learning》
在吴恩达开设了机器学习课程之后,发布的《Deep Learning》课程也备受好评,吴恩达老师的课程最大的特点就是将知识循序渐进的传授给你,是入门学习不可多得良好视频资料。
整个专题共包括五门课程:01.神经网络和深度学习;02.改善深层神经网络-超参数调试、正则化以及优化;03.结构化机器学习项目;04.卷积神经网络;05.序列模型。
网易云课堂: https://mooc.study.163.com/university/deeplearning_ai#/c
Coursera: https://www.coursera.org/specializations/deep-learning
课程笔记: https://github.com/fengdu78/deeplearning_ai_books
参考论文: 吴恩达老师在课程中提到了很多优秀论文:https://github.com/fengdu78/deeplearning_ai_books/tree/master/%E5%8F%82%E8%80%83%E8%AE%BA%E6%96%87
课程PPT及课后作业: 吴恩达深度学习课程,包含课程的课件、课后作业和一些其他资料:https://github.com/stormstone/deeplearning.ai
2. 公开课|CS230 Deep Learning
斯坦福的深度学习课程涵盖了CNNs, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization 等深度学习的基本模型,涉及医疗、自动驾驶、手语识别、音乐生成和自然语言处理等领域。
Datawhale整理了该门课程的详细介绍及参考资料: 吴恩达CS230深度学习开课了!视频配套PPT应有尽有
3. 书籍|《深度学习》
完成以上学习后,想要更加系统的建立深度学习的知识体系,阅读《深度学习》准没错。该书从浅入深介绍了基础数学知识、机器学习经验以及现阶段深度学习的理论和发展,它能帮助人工智能技术爱好者和从业人员在三位专家学者的思维带领下全方位了解深度学习。
书籍介绍:《深度学习》通常又被称为花书,深度学习领域最经典的畅销书。由全球知名的三位专家IanGoodfellow、YoshuaBengio和AaronCourville撰写,是深度学习领域奠基性的经典教材。该书被大众尊称为“AI圣经”。
中文版在线阅读: https://github.com/exacity/deeplearningbook-chinese
4. 工具|TensorFlow 官方文档
学深度学习一定离不开 TensorFlow,大厂用 tensorflow 的也不少
官方文档: https://www.tensorflow.org/api_docs/python/tf
中文文档: https://github.com/jikexueyuanwiki/tensorflow-zh
5. 工具|PyTorch官方文档
PyTorch是学深度学习的另一个主流框架
官方文档: https://pytorch.org/docs/stable/index.html
中文文档(版本0.3): https://github.com/apachecn/pytorch-doc-zh
有了机器学习 & 深度学习基础之后,就可以阅读前沿 paper & 深入某一个具体的方向继续学习了
前沿 paper
1. Arxiv
Arxiv Stats
Arxiv 机器学习最新论文检索主页地址:
https://arxiv.org/list/stat.ML/recent?ref=bestofml.com
Arxiv Sanity Preserver
Andrej Karpathy 开发了 Arxiv Sanity Preserver,帮助分类、搜索和过滤特征
主页地址: http://www.arxiv-sanity.com/?ref=bestofml.com
2. Deep Learning Papers 阅读路线
如果你是深度学习领域的新手,你可能会遇到的第一个问题是“我应该从哪篇论文开始阅读?”下面是一个深入学习论文的阅读路线图!
GitHub 项目地址: https://github.com/floodsung/Deep-Learning-Papers-Reading-Roadmap
这份深度学习论文阅读路线分为三大块:
Deep Learning History and Basics Deep Learning Method Applications
3. Deep Learning Object Detection
目标检测(Object Detection)是深度学习 CV 领域的一个核心研究领域和重要分支。纵观 2013 年到 2019 年,从最早的 R-CNN、Fast R-CNN 到后来的 YOLO v2、YOLO v3 再到今年的 M2Det,新模型层出不穷,性能也越来越好
本资源对目标检测近几年的发展和相关论文做出一份系统介绍,总结一份超全的文献 paper 列表。GitHub 项目地址: https://github.com/hoya012/deep_learning_object_detection
自然语言处理
自然语言处理(NLP,Natural Language Processing)是研究计算机处理人类语言的一门技术,目的是弥补人类交流(自然语言)和计算机理解(机器语言)之间的差距。NLP包含句法语义分析、信息抽取、文本挖掘、机器翻译、信息检索、问答系统和对话系统等领域。
课程推荐
CS224n 斯坦福深度自然语言处理课
课程主页: http://web.stanford.edu/class/cs224n/index.html
中文翻译课程: https://www.bilibili.com/video/BV1pt411h7aT?from=search&seid=13892874188533859742&spm_id_from=333.337.0.0
课程笔记: http://www.hankcs.com/?s=CS224n%E7%AC%94%E8%AE%B0
计算机视觉
课程推荐
李飞飞:CS231n课程:
课程主页: http://cs231n.stanford.edu/
网易云课堂: https://study.163.com/course/introduction/1004697005.htm
项目笔记: https://github.com/cs231n/cs231n.github.io
推荐系统
这两年,CV 都卷的不能再卷了,主要是供需关系导致,CV岗的需求比推荐岗小的多。也有很多同学做的是CV,而后面试直接转推荐了,面试官主要 care 的还是你的潜力,而非具体做的方向
1. 推荐课程
推荐系统专项课程《Recommender Systems Specialization》
这个系列由4门子课程和1门毕业项目课程组成,包括推荐系统导论,最近邻协同过滤,推荐系统评价,矩阵分解和高级技术等。
学习地址: https://www.coursera.org/specializations/recommender-systems
2. 书籍
《推荐系统实践》(项亮 著)
《深度学习推荐系统》(王喆 著)
3. 推荐项目
今日头条推荐系统机制介绍,面向内容创作者。分享人:项亮,今日头条推荐算法架构师: https://v.qq.com/x/page/f0800qavik7.html?
3分钟了解今日头条推荐系统原理 https://v.qq.com/x/page/g05349lb80j.html?
三、论文 or 项目介绍
关键
面试官希望从面试中了解到的是你的学习能力 & 潜力,而不是你做的demo细节。当然,越是大厂越是如此,腾讯、字节、阿里皆如此
你做的东西你最清楚,面试莫慌,在面试经验丰富的情况下,你就是你的项目的权威
每次面试,把项目细节都要越扣越深,这样才能对答如流
把自己的项目不断重复介绍,可以录音,反复听。你所说的每句话、每个词,都可能是面试官挖坑的关键词!
四、其他问题 & 向面试官提问
其他问题
比如一般面试官都会问,你现在还有哪些offer,你有没有女朋友等。下面分析面试官的意图 & 应对策略
你还有哪些ofer: 面试官想知道你在市场上的价值是多少,这个时候应该实话实说
你有没有女朋友: 面试官想知道你的稳定性如何,如果和你女朋友异地,那你的稳定性就会偏低。不是异地很简单,异地的话可以你可以表明你们之间的关系稳定,后面会在同城发展之类。如果没有女朋友的话,那说明你的加班成本低,表面自己并不怕加班即可
转方向有没有问题: 比如你之前做的是CV,后面需要做推荐,面试官一般会问该问题。表面你愿意学习即可
反问面试官
当你想从网上检索一些问题而不得的时候,这就是一个极佳的补充了解的机会,你可以试着提问
您对我后续学习有什么建议: 其实你想打探面试官对你的印象,但是又不能直接问(公司是禁止面试官直接透露面评的),换个问法,效果完全不同,这么问面试官基本都会实话实说
部门的发展情况: 具体的部门情况是很难从其他渠道获取的,面试官可以带你真实了解部门详情
——The End——