找回密码
 立即注册
查看: 1348|回复: 20

本科生真的很不适合算法岗位吗?

[复制链接]
发表于 2021-7-4 10:08 | 显示全部楼层 |阅读模式
如果您有算法方面的学习经验、路线可以分享一下吗?
发表于 2021-7-4 10:13 | 显示全部楼层
先说结论:有难度,算法工作两年,身边都是硕士和博士,真心想做算法,可以继续读个硕士。
算法内卷严重,很多人也都是在劝退。
不过这也是我国快速发展带来的问题,试问哪个行业不是内卷严重?
大家一起卷呗。
学习经验和路线,我整理过,原文如下:
一、前言

一直以来,被问到最多的问题就是「算法的学习路线」。
今天,它来了。
我会带着大家看看,我们需要学些啥,利用这个假期,我甚至还收集整理了配套视频和资料,暖男石锤啊,这期文章有用的话,别忘三连哦!
二、学习路线

主要分为 4 个部分:数学基础、编程能力、算法基础、实战。
为了方便大家下载,我把所有资料都放在了这里,有需要的自取:
我是如何成为算法工程师的,超详细的学习路线1、数学基础

在机器学习算法中,涉及到最为重要的数学基本知识有两个:线性代数概率论
这两也是大学的必修课了,如果知识早已还给老师,也没关系,哪里不会学补哪里
线性代数研究的是线性空间的性质,数据通常会被表示为欧式空间中的点,而这些点经过一系列变换后会映射到另一个空间,在新的空间中隐藏在数据中的规律才得以显现。
所以线性代数作为研究空间的一门科学,是入门机器学习的最要基础之一
视频:推荐 MIT 的老教授 Gilbert Strang 的线性代数上课视频。
没学过线代的同学会发现这门课程,讲得清晰而且直观,深入线代的精髓,完全不是那种理论堆砌的讲法,而且老教授幽默风趣,很有人格魅力。
英文不好,也不用担心,字幕是中文的
教材:推荐《线性代数及其应用》,作者是 David C. Lay 。
喜欢看书的朋友,这本书一定不能错过。
这本书详细地介绍了线性代数在几何学、计算机图形学、经济学、概率论、信号与系统、微分方程等领域的应用,给人以直观的认识。
概率论是研究不确定性的一门科学,生活处处是概率。机器学习算法需要对现实情况建模,自然是少不了将概率论作为工具。
这门课入门并不难,大家可以挑一本评分还可以的书开始学习。
这里推荐陈希儒的《概率论与数理统计》,讲得很详细,如同听一个老者回忆自己的概率与统计心得,相信读者也会有所收获。
如果时间充裕,推荐先学好数学基础。如果时间不够,那就跳过数学基础部分,学算法的时候,哪里不会补哪里。
2、编程能力

编程语言,需要至少掌握两门, Python 和 C++。
工作中,Python 主要用于处理数据算法调研模型训练的工作,而 C++ 则是负责工程落地
算法工程师,需要针对落地场景,对算法的可靠性和实时性等方面进行优化,C++ 工程能力必不可少。
Python 是一门非常友好的编程语言,不但易于入门而且功能强大,在进行机器学习算法开发的过程中会大量使用 Python。
视频:我上学看的第一个视频,就是小甲鱼 Python 课程,风趣幽默,涉及Python 语法基础、网络爬虫、Pygame 飞机大战等内容,内容很丰富。
实战是最好的老师,学习 Python 的时候,可以找一个自己喜欢的方向,去实战。
边实战,边学习。比如写爬虫、做小游戏、玩各种有趣的算法等。
这里面,爬虫是最简单的,很容易有成就感,让你坚持学习下去,下载小说、下载漫画、下载音乐、下载电影、抢票等等小程序。
这个推荐我的一个 Github star 量 11.4k+、fork 4.5k+的爬虫项目。
每个实战,都有对应的文章教程,代码开源
项目地址:https://github.com/Jack-Cherish/python-spider
教材:推荐《流畅的Python》,书看完有些难度,但是哪来当个手册用,很方便,哪些语法忘记了,翻阅一番,必能有所收获。
C++ 是一种面向对象的程序设计语言,无论你是做算法,还是做开发,亦或者是做测开。C++ 都应该掌握,它是一个基础的编程语言。学会了这门编程语言,再学其它,就会更得心应手。
视频:这部分推荐慕课网的免费教程,很好的入门视频,老师讲得绘声绘色、形象生动、通熟易懂。
一共分为 7 章,每章视频的时间是 2-3 个小时,半个月可以轻松刷完,学习顺序是:
    C++远征之起航篇C++远征之离港篇C++远征之封装篇(上)C++远征之封装篇(下)C++远征之继承篇C++远征之多态篇C++远征之模板篇
教材:推荐被誉为“圣经”的《C++ Primer》,经典巨著,非常棒的书。
编程语言基础学完了,接下来就是数据结构与算法。
数据结构与算法是程序员的内功,每一个工程师的必修课。
数据结构的学法,我推荐是直接看书,一边学习一边刷题,同时进行,这样学的速度快。
就如同书名一样,这是一本像小说一样有趣的算法入门书,非常易懂,强烈推荐。
可以与这本书一同学习的,就是《剑指Offer》,里面讲解了 66 道+ 常见数据结构题,解析思路,简单易懂。
两门书一起看,轻松入门数据结构与算法。
不过《剑指Offer》讲解的代码都是 C/C++,没有 Python 版本,想看 Python 版本的,可以看我整理的教程,C++ 和 Python 都有实现和讲解,题目已按照类型划分好。
项目地址:https://github.com/Jack-Cherish/LeetCode
两本书都看完,题也刷完了,那就算是入门了。
想进阶,进一步学习,直接上 LeetCode。
力扣可以从 HOT 100 或 精选算法 200 题刷起,题目相对于《剑指Offer》要增加一些难度,但每道题目都有对应的解题思路和答案。
坚持刷完 200 道,大多的面试轻松搞定,完全够用。
当然要面试谷歌级别的大佬,Hard 题是不能放过的。
刷题地址:https://leetcode-cn.com/
Tip:刷一遍题,回头看还会忘,不要怀疑自己,要反复刷,反复练习。
同时,推荐一份谷歌大佬的刷题笔记:
谷歌和BAT大佬的刷题笔记,看完秒杀80%的算法题!3、算法基础

恭喜大家,在做了前面这么多基础工作之后,终于可以开始入门机器学习算法了。
机器学习
视频:推荐吴恩达老师的机器学习视频,吴恩达是整个领域的巨头之一,学术地位很高。同时,他出的视频也对新手非常友好,入门的不二之选。
教材:还是那句话,光看不练是不行的。《机器学习实战》,理论结合实战,适合新手。
《机器学习实战》使用 Python2 实现,有些细节讲的不够细致,对此我进行了完善,使用 Python3 复现了一遍,并结合 sklearn 以及更多的好玩例子,进行讲解。
全网阅读量 500w+:
对应的 Github 开源代码 Star 3.3k+,fork 3.1k+。
在线阅读地址:
https://cuijiahua.com/blog/ml/
我也将这个系列打包成了本地 pdf,喜欢离线看,也可以直接下载。
深度学习
深度学习是现在的算法工程师绕不开的一个子领域,是机器学习的子集。
视频:还是推荐吴恩达老师的深度学习视频,也是对新手非常友好。
教材:说实话,深度学习,我并没有看过书,都是视频+ Github 开源项目学习的,不过被誉为深度学习领域圣经的“花书”,可以备一本。
深度学习框架
深度学习框架有很多,Tensorflow、Pytorch、Paddle、MXNet、Caffe等。
我在工作过程中,用的最多的是 Pytorch,其次是 Tensorflow。
新手上手,推荐先学 Pytorch,可以直接看 Yunjey Choi 大佬的 Github 教程,简单入门:
https://github.com/yunjey/pytorch-tutorial
Pytorch 深度学习框架学习,也可以看我写的 Pytorch 深度学习实战系列教程,有垃圾分类、图像分割等结合实战的小项目。
Github 开源代码 Star 400+,fork 250+。
项目地址:
https://github.com/Jack-Cherish/Deep-Learning
我也将这个系列打包成了本地 pdf,喜欢离线看,也可以直接下载。
4、实战

实战实战,文章反复提到了这么多次,仅仅这些还是远远不够的。
因为更多时候,你是跟着视频 or 文章的思路去实战,这缺少了独立思考的过程。
学了这么多,你并没有独立完成过一个项目,数据怎么处理,怎么分析问题,用什么算法解决问题,也没有独立思考过。
算法工程师的岗位竞争也比较激烈的,为了在茫茫人海中脱颖而出,我们需要以团队个人的形式,独立完成一些项目,只有这样,你才能更具竞争力。
对于学生党,做项目,最简单直接的方法就是参加竞赛
推荐两个参加竞赛的地方,一个是国外的 Kaggle,另一个是国内的阿里云天池
两个竞赛的奖金也都很丰富,根据自己的喜好,参赛即可。
Kaggle:https://www.kaggle.com/
阿里天池:https://tianchi.aliyun.com/competition/gameList/activeList
既能打比赛,又能赢奖金,何乐而不为呢?
为了方便大家下载,我把所有资料都放在了这里,有需要的自取:
我是如何成为算法工程师的,超详细的学习路线三、絮叨

这篇文章整理的也是我的学习路线。
要说需要学多久,那就看个人的学习动力了。
如果你想去一家不错的公司,但是目前硬实力不过关,我觉得还是有必要去努力一下的,技术能力的高低决定你能走多远,平台的高低,决定你能飞多高。
如果可以通过自己的努力,进入自己心仪的公司,一定不要松懈怠慢,职场成长和学习新技术一样,不进则退。
你往往会发现,身边实力越强的人越努力,最高级的自律就是享受孤独
创作不易本期硬核,感谢点赞支持!笔芯~ 记得关注我哟 @Jack-Cui
刷题的话,也可以看另外一个大佬的刷题笔记。
Jack-Cui:看完谷歌师兄的刷题笔记,多语言通吃,秒杀 88% Leetcode 题目祝点赞的人,人人都是offer收割机!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-4 10:14 | 显示全部楼层
P.S. 怎么感觉标题和描述是两个问题。。。
害,只要能考上还行的大学,智商都差不多。
从适不适合这个词来看,好像是本科生自身能力的问题。
但实际上是算法岗内卷的问题。如果是cs方向,那研究生阶段就已经比本科生多了几年经验,所以求职市场上并不能同等比较。
我见过的优秀本科生,有大三就开始搞科研发了几篇顶会的,也有毕业就进入大厂现在已经带团队的。不过大多数还是要老老实实读个研究生才能拿到入场券。
如果实在不想读的话,
    找个创业公司待一两年当跳板去做其他研发,到后来待遇都不差的
要是真想来卷的话,那就赶紧开始恶补基础,然后进入 学习-面试-学习 的循环,直到拿到理想offer~分享下我总结的面试知识点:
算法工程师面试知识点整理

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-4 10:21 | 显示全部楼层
在算法领域从业5年左右, 面过不少本科生,硕士生。先上结论:不能简单地说适合与不适合。下面我将从目前就业环境和个人的角度分开解析。
一.  就业环境

2016年AlphaGo打败李世石这一大事是算法慢慢浮现在更多毕业生面前的分水岭。在2016年以前,我还在国外的时候,甚至更早一点的2013-2016年这段时间,大家那个时候学习的路径基本上是从传统的机器学习开始的,可能你会朴素贝叶斯、手写字母的识别等等,就能拿到不错的Offer。
围棋事件件给人们带来一个直观感受:算法人才在工业界的需求越来越旺盛。于是互联网的热门应用逐步渗透到高校,从2016年之后,越来越多的高校开始设置人工智能专业,以输送更多人才到工业界。这个过程是我们非常熟悉的: 过去的IOS开发、big data大数据的供求关系亦是如此。
这一过程持续到现在大约4年左右,基本上业界算法的岗位慢慢趋于饱和,但算法人才的供应还是十分充足,这必然会导致竞争的加剧。学生努力地向上走,于是,更高的学历,更亮眼的实习经历是获得更好Offer的一个重要条件。
这个过程是大势所趋,很多同学都看到:更多的岗位被硕士、博士同学拿到了。但这不意味着本科生没有机会。
二.  本科生个人的机会

虽然行业发展趋势摆在面前,但从我的观察和接触的同学来看,本科生做算法的也不在少数,他们之所以能通过层层选拔,是因为在大学四年,他们朝着正确的方向努力了,结果自然水到渠成。
那么正确的方向到底是什么呢? 辛辛苦苦整理了一下,大家觉得有用的话,别忘了点赞,收藏,关注噢,有问题也欢迎私信。
    你的兴趣真的在算法领域吗?
正如上面分析的一样,首先你要明白,如果你要从事算法岗位的话,你将面临地非常残酷而激烈的竞争:重点院校的计算机专业同学已经非常多了,再加上有无数正在转专业的同学。
算法只是诸多岗位的普通一种,不要以为是非常高大上的岗位。我见过不少算法同学,和他们交流中,隐约感受到他们心中的自持感,觉得比数据分析、后台开发高人一等。这种感觉是非常危险的。
如果只是算法岗位目前的薪水吸引了你,那么在真正从事这项工作的时候,你很可能会被一些繁琐的事项弄得心烦意乱,怀疑自己。比如说算法很多时候要清洗脏数据,分析系统的各种链路,查各种badcase, 如果没有兴趣支撑着你,你会坚持不下去
另外,算法岗位也和其他计算机岗位一样,技术更新迭代非常快,2015年你会基本的LR,手推BP算法就不错了,到了2017年,你要懂得注意力机制, CNN和LSTM, 到了2018年以后,
transformer, bert等等,统统都需要你对前沿领域,工业落地保持关注和持续学习,没有强烈的兴趣支撑,越往后你就越感到吃力。
如果读到这里,你觉得你依然想走算法这条路,下面的内容值得你花点时间好好看看。


2. 大学的规划安排
既然本科就出来打算从事算法,那么这个大学学习生活你必然是非常辛苦的。


2.1 基础扎实
算法对计算机的底层功底有着一样的要求! 非常多的同学有一种错觉:我搞算法就不用了解计算机底层知识,比如编译原理、操作系统等等。大错特错!
业界真正做到顶尖的算法同学,对计算机的基础知识非常熟悉,不然很可能你写的代码在线上因为耗时根本就上不了。举个例子,在深度学习为了加速,往往不同的变量要求不同的数据类型、或者为了耗时减少,使用位数更少的整型表示。这些基础你不懂的话,难以做到顶尖。
算法的基础有两大块:计算机和数学。
大一,大二上,好好把高等数学、线性代数和概率与统计学扎实一点。我在高三放假的时候,就把大一的高等数学上册自学完了,在大一,把图书馆里面关于最新考研的数学试题做了一遍,然后通过参加大学生数学竞赛拿到一等奖,以此来告诉自己,这个是学扎实了。
数学学得越扎实,你会发现看算法的paper也好,研究算法的细节也好,你不会对公式发怵,这个优势将会在你做算法工作时慢慢凸显出来。
计算机基础知识上面,首先是不要纠结该学哪门语言入门,是C++还是Java, 始终记住:语言就像你现在说的中文一样,用着用着你就会了。当然,科班出身的话,大一需要好好把C语言学好。学好C语言,并不是要求你以后也会一直用它,而是在学习的过程中,你会了解基本的语法和数据结构,这个是最关键的。
有了这个底子,Python这类脚本语言你会看几个例子就能上手写。这才是最高心法。除了语言以外,《深入理解计算机系统》这个CMU使用的教材,能够帮你构建计算机大厦的基石。
在大二下开始,你会开始学习人工智能的课程,基础理论方面,可以去看《深度学习》等,实践的话,结合最新的paper, 通过github去学习就好。当然,如果你感到吃力,可以咨询我,只有针对每个人自己的背景不同,给出针对性的建议书单才是王道。
2.2 多写多练
基础知识牢固了还不够,作为计算机的同学,写代码是必须的!写代码就和写作一样,必须自己去多写多练。回想你当初写作文的时候,是不是也会有参考作文,然后模仿去写,慢慢写多了就有自己的风格。写代码也是一样!
在大一,大二的时候,多看优秀的源码,多写习题,掌握了基本的语法;在大三,大四,去参加比赛也好,校内项目也好,实习也好,通过在做真实的项目,进一步巩固和验证自己学过的东西。
当然,很多大学生会困惑:哪里去找这些真实项目呢? 这类问题,我会在以后的回答或者文章中写,欢迎关注。
2.3 实习锻炼
越来越多的同学会发现,拿了很多Offer的同学往往有一个共同特点:他们实习项目特别多。大家要明白企业招人的本质,不是让你来学习的,而是需要你有产出。
一般而言,往往实习过的学生,在经历了项目实战之后,他们的经验更加丰富,更加受到面试官的青睐。目前互联网的实习机会,基本在北京、深圳、杭州、上海、广州等,大家如果是这几个大城市的同学,可以利用寒暑假的机会去投实习岗位。
既然是本科生出来就想工作,那么牺牲一点休息时间,换来未来更大机会和筹码,是要经历的阵痛的。无痛苦,不成长。
更加核心和重要的回答,我写在其他帖子中了,大家可以看过去我的一些回答。另外,注意看我的简介,谢谢。
发表于 2021-7-4 10:30 | 显示全部楼层
最近身边有一个ACM的本科师弟去了某大厂做算法,年薪也开到了30~40,不过还是要看下title‘ACM’,用他的话来说,大二开始刷各类数据结构与优化,大三进实验室开始各种网络复现(boss指导也比较多,就是不想读研,怕是工作找的太好了。。。),其实还是自己做的比较多。
关于本科生是否能够做算法,其实个人的感受还是很难,甚至超难,建议读研,各种条件好的话,还可以继续深造读博。如果你是面试官,你会将一个重要岗位的offer给本科生吗?(虽然从不排除会有优秀的本科生,但是优秀的硕士也很多呀)。
算法的要求,其实现在越来越高了,建议还是要打牢基础,数据结构与算法,然后对算法有一定的复现调优能力,加上实习经历,找工作的门槛应该是可以跨了。
发表于 2021-7-4 10:32 | 显示全部楼层
如果你说找工作,那么是的,本科找算法岗位的难度,会比较大,如果你要恰饭,最好还是有硕博学历,毕竟现在内卷严重。
如果你问工作能不能做,那么其实还好,大部分人大部分时候也不过是借用别人理论框架摸着石头过河的调包侠,只要肯花时间,其实差别真没想象的那么大,不过读硕博毕竟有人有环境指导,在基础理论的学习培养上性价比会更高点,能花更短时间成为高级调包侠。
本科的话,还是建议读研,不能说有多少好处,至少没啥坏处。
分享最近群里搞到的一张图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-4 10:38 | 显示全部楼层
没有绝对的合适与不合适,主要是看个人。据人邮君了解,有很多本科小伙伴,都在做算法工程师。
既然题主对算法岗感兴趣,那不妨先看下算法岗位所需要的条件,然后针对性地去提升自己,毕竟只有开始做了才有可能成功~
算法主要需要数学基础、编程能力、算法能力以及具体到不同行业所需要的垂直能力,比如是视觉方面,还是语言处理方面,或者数据方面等等。
1、数学基础——不同领域侧重点不一样

如果是做软件开发,需要了解离散数学、概率统计、高等数学、高等代数等,具体到算法则需要排序算法以及各种查找算法等。如果做技术研发,则还需要数学建模等等理论知识。
具体到大数据方向,会涉及概率论和数理统计方面的数学知识;机器学习方向,需要了解线性代数、数值分析、最优化、概率论、随机过程等;图形图像处理、视觉分析、游戏引擎等方向,会用到线性代数和空间几何的知识。
很多算法问题都可以用离散数学、运筹学来解决。虽然有的时候,一些工程问题看上去不涉及特定的数学知识,但却需要依靠数学逻辑,去分析影响问题的因素和环节,针对实际情况做针对性的处理,比如运筹学里的各种规划和排队论、存贮论等各种调度优化算法等。
所以,对于想要从事算法岗的同学,人邮君建议针对你所侧重的方向去深入了解相应的数学知识,这些背景知识并非不了跨越的鸿沟。
2、编程能力——由所处的位置决定

首先你要知道,学历与编程能力并没有必然的联系,很多非计算机专业的同学毕业后报班学习几个月便可以顺利找到专业的编程工作。未来编程门槛会越来越低,很多职场人都需要具有编程技术。
对于专业的程序员来说,本科生大多是从应用类的开发做起,研究生则通常会从事研发级工作。可能就是这种现象给题主带来了“本科生不适合算法岗位”的认知偏差。
目前计算机领域里,大部分前端开发、移动端以及Web开发通常不会涉及算法内容,只需要采用已有的开发框架进行具体的业务逻辑实现即可。而如果要从事操作系统研发、平台类产品研发,或者是大型的互联网产品研发,便需要具有一定的设计能力,这对算法的要求就高了。此时,研究生由知识结构相较于多数本科生更广更深,便会更适合此类工作。但是,同样有很多本科生在从事研发类工作,这主要取决于程序员的学习能力和研发能力
算法工程师的编程能力和所从事的垂直领域紧密相关,越是接近应用层,对编程能力的要求也就越高。比如AI算法工程师,更需要熟练掌握python基础语法、 面向对象编程,以及文本操作等技术。这些能力也是可以通过自学补齐的。
3、算法能力——核心竞争力

很多算法工程师对于编程语言或操作系统或网络等方面的知识较薄弱,但具有很强的算法设计能力,这正是算法工程师岗与其他IT岗的距离所在,同时也是人工智能时代极为需要的能力
这里的算法能力,不局限于常规的算法知识,同时也含有模型建立、数据分析等方面的能力,而这些能力都极为考验思维能力
在《算法设计》一书中,康奈尔大神Jon Kleinberg、 va Tardos就强调了算法设计思维的重要性:要侧重算法设计思路,从实际问题出发,经过深入具体的分析引出相应算法,并对算法的正确性和复杂性进行合理的分析和论证,这种学习路径对算法能力的提升很有帮助。
算法是计算机的灵魂,算法设计思想是算法工程师的王牌。所以,对于本科毕业的同学来说,如果算法设计思维欠缺,人邮君建议在实践的同时,看一下这本书,它可以帮助你更快地入门,同时从根本上理解算法。


豆瓣9.5!哈佛都在用的算法教材,到底有多牛?

英雄不问出处,认知与思维决定你的去处。祝每一位为理想奋斗的同学都能得偿所愿!
========
赠人玫瑰,手留余香~
不要忘记点赞、收藏、关注 <a class="member_mention" href="http://www.zhihu.com/people/2a9c95c4b3096cba586584844e149340" data-hash="2a9c95c4b3096cba586584844e149340" data-hovercard="p$b$2a9c95c4b3096cba586584844e149340">@人民邮电出版社 哦!一键三连,感恩有你~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-4 10:48 | 显示全部楼层
别再说内卷了,我都听腻了。本科生绝对是可以做算法岗位的。实际上绝大多数技术岗位,本科生都可以胜任。身边的同事、包括认识的一些大厂员工,本科出身的也不少,适不适合只是能力问题。
如果不想提升学历,但又觉得自己不够格,这是我吐血两周整理的学习经验和路线,从入门到进阶,看了能立马上手操作学习。如果有基础的小伙伴可以略过入门,直接看进阶部分。希望可以帮助到你~
一、入门

很多刚入门的小伙伴逃避学习这些基础知识的一大原因就是,书里讲啥?我听不懂,我看不明白。就算我明白了,我的手也不明白,敲出的代码还是错的。
不过对于算法零基础/弱基础的人来说,学理论知识和敲代码完全是两码事。这里我建议不要死磕书,编程不是文科。就算把整本书都会背了也不一定能学得好,换一种方式——实操代码,我觉得才是编程最好的学习方式。
不过最让初学者头疼可能是理论知识一般,但是还要硬着头皮去敲代码。其实我有一个学习代码的小技巧,也是在《算法基础版Java+Python》里学到的。就是先理解伪代码(用人话解释的代码),再实现自己敲出代码。
这个方式的学习思路就是:理解思路 - 学习伪代码 - 输出代码
有了这个模式其实就是进入编程的死磕模式,了解理论-上手操作-学会理论-项目实操-疯狂刷题-成功求职!  
有关入门级的学习资源我这里有一些推荐:
EDX China https://www.edx.org/edxchina
edX是哈佛大学和麻省理工学院共同创立的非营利网络教育项目,里面收集收集了非常多数量的课程,涵盖了从人文到科技的方面,当然也有质量上乘的高校分享的编程课程,重点是都是免费的!
《算法基础版Java+Python》
很多初学者往往会忽视算法和数据结构基础,到了求职面试时就被各种算法题“毒打”。这门课程除了让你在短时间内掌握编程语言基础外,还会分别用Java和Python系统讲授算法与数据结构知识。
Coursera
有世界上最大的在线学习平台之称,里面的课程对提升编程的理论知识和编程能力都有很大的帮助。

Codecademyhttps://www.codecademy.com/catalog
对于想获得大量编程语言知识的初学者来说,这个网站也可以成为一个最佳选择。

FreeCodeCamphttps://www.freecodecamp.org/news/search/?query=web
可能是学习Web开发的最佳在线场所。课程规模庞大,我强烈推荐。  
其实基础知识学会后就直接找工作是没办法接住面试官的问题的,也没办法独立完成一个能写在简历上的项目。这其中很大部分的原因是因为没有学会写代码的逻辑思维,没有一个好的代码质量,没有了解大厂出题的规律…… 总而言之没找到做题的“感觉”。  
二、进阶

再找感觉之前,首先要注意的是规范自己的编程细节,实质性提高coding的能力也就是提高自己的代码质量。
别急,12个提高代码质量的技巧这就给您上来,偷了之前看的讲座中的技巧总结(视频来自一位北大学霸:《FB面试官揭秘算法面试速成技巧》,戳这免费试听。
①Coding Style 相关:
二元运算符两边加空格,单元运算符不加空格  
花括号和 for, if 之间要加空格(Java),圆括号和 if 之间要加空格  
用空行分隔开不同的逻辑块  
逗号后面加空格  
②Readability 相关:
函数名和变量名用1-2个单词作为名称  
确保一个函数内部不超过 3 层缩进(indention)  
多用子函数来减少入口函数的代码量  
多用 continue 少用 if  
③Bug Free 相关:
不管有没有可能出问题,都要对入口函数的参数进行异常检测  
访问一个下标的时候,一定要确保这个下标不会越界  
访问一个对象的属性或者方法时,一定要确保这个对象不是空  
不用全局变量
当然,深入学习也必不可少。不过只是针对求职的话,算法学习的范围可以比正常减少一倍,因为大厂考来考去就那几个知识点。而高频知识点也早就被扒出来了:
图源《九章算法2021》
拿着重点知识点,结合一套适合自己的学习方式,提早上岸完全不是问题。  
最后,分享一波高含金量、易上手的项目,可以直接写在简历,为简历填色。
1.Vue相关开源项目库集合
先给个全的,Github标星10.1K的项目集合。
项目内容不是很难,有些也不太适合放在简历上,不过作为编程新手的练手小项目还是非常推荐的。主要面向前端,包含UI组件、开发框架、实用库、服务端、辅助工具、应用实例、Demo示例,也是非常详细了~
2.Twitter 后端系统 - Django 项目实战
设计Twitter本质上就是在考高并发的信息流系统,其涉及的技术难点非常多,项目的难度也更能检验面试者水平,而且从L3~L5都能问到。
    对于初级程序员(SDE1),可以把“设计Twitter”拆解出单独设计一个关注功能来问 对于高级程序员(SDE2+),面试官通常会要求面试者实现设计登陆、发推、点赞、关注、取关等一系列功能
这些技术难点在《Twitter后端系统 - Django项目实战》首节试听课中都有详细介绍,项目涉及万行代码,都由前ACM金牌选手令狐冲带着手把手敲代码,现在可以免费试听,不妨体验一下。
3.美团APP
同样是近年来比较火的点餐类平台,这类项目做起来不算太难,但比较通用,设计的技术栈比较广,也适合练手。  
项目涉及到技术栈:
    vue全家桶:Vue、Vue-router、Vue-cli等 组件化:单Vue文件 模块化:ES6 Module 第三方模块:better-scroll axios等 基础开发环境和包管理:Node、npm 构建工具:webpack 编辑器:webstrom
项目功能
一言而蔽之:一款集点菜、用户评价和商家信息为一体的移动端点餐APP
    点餐页面 点选商品后自动添加到购物车,并计算好总价,在商品列表、购物车列表和商品详情页都可以随意增减数目,此外左侧商品分类和右侧的商品相互关联,通过better-scroll插件滑动商品列表时,相应的商品分类也会跟着跳转。 用户评价页面 主要包括一个TAB栏,包括三部分:全部、有图和评价三个模块 商家信息页面 主要介绍一些商家基本信息,可以通过better-scroll插件,进行左右滑动图片
4.电商秒杀系统 - Spring项目实战
阿里巴巴技术部门面试官带你实现淘宝秒杀系统项目,着重讲解秒杀系统的项目难点、技术架构、常用技术栈和框架。课程会提供项目源码,有个老师带你手把手完成项目,避免了自己做项目拖沓+一问三不知的情况。
欧阳修老师还会以丰富的面试经验帮助你对面试中常考的问题一一剖析,做一个真正有价值的项目。现在开放了免费试听入口,可以按需索取。
希望以上的分享对你有帮助,码字不易,求各位老板点赞一波啊~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-7-4 10:48 | 显示全部楼层
实名反对做各种广告的高赞答案,已反对。做算法的本科生来回答一波。
首先给结论,本科生绝对是可以做算法岗位的。不仅是算法岗位,实际上绝大多数技术岗位,本科生都可以胜任。我们来想一个逻辑和问题就明白了,硕士阶段最大的价值是什么?难道是多上了几年课么?如果是的话,那本科生去上一些公开课,是不是也可以补上呢?如果不是上课和文凭,那么本质的差别是什么呢?
其实当年我也是有保研的机会的,只不过被我放弃了。为什么放弃呢?原因也很简单,因为了解了一下我校保研之后的学长们的就业情况,至少有80%是拿不到我本科毕业时的薪水的。虽然薪水不能完全反应实力,至少在我看来,读研的必要性因此大大减弱。
再从算法岗位本身的角度说说,算法岗位说起来高大上,但是核心的技术底层本科生所学的基础知识已经足够支撑了。机器学习也好,神经网络也罢,本科生的数学能力完全可以应付。一些前沿的期刊论文,能不能看懂只和在算法上的造诣有关,和学历实在是没什么关系。说起来我也不是个例,在阿里的时候我也是见过几个本科毕业的工程师的,虽然比例的确不高,但也不是那么凤毛麟角,至少没有高中毕业的程序员让人震惊。
那为什么本科毕业的算法工程师这么少呢?其实这里的关键点并不是学历,而是路线。对于本科生而言,很难拥有一条完整的路线指引,可以顺利地在算法方向积累到足够的能力。因为本科阶段是基本上没有任何机器学习、深度学习相关的课程的,即使有,也是浅尝辄止,和纸上谈兵区别不大,落实到实际能力提升上的,非常非常微不足道。
另外一点是,本科阶段相应的锻炼机会比较少。毕竟本科阶段课业压力也大,学生也相对迷茫,不知道应该做些什么。即使想要从事这个领域,也不知道如何提升自己。
而研究生至少还有实验室,至少还会有一些导师的项目,还可以找到一些学长和博士生请教。读研的三年如果方向对的话,大部分时间都是花在实操上的,那么带来的提升显然是非常明显的。从效率上来说要比本科生没头没脑地自己学习摸索高得多。
而且四年的时间说起来也很短暂,既有一堆课要上,还想要拥有突出的编程能力,的确不是一件容易的事,如果再加上三年,则要简单得多。也正因此,本科阶段打好基础,硕士阶段专攻算法方向获得一定的成就,之后找到一份工作,这条路线要比本科生靠自己刷ACM、数模比赛以及自己自学突围要容易得多。
另外,算法工程师很大一部分精力其实并不在模型和机器学习上,而是在数据上。要搞数据的话,就必然少不了一些数据平台。比如hadoop、spark等等,这些数据平台对于大部分本科生而言可能都没听说过,更别说知道原理,会使用了。但是这些知识还挺重要的,要是不会,连数据都搞不了,更别提做模型了。
如果让我给你路线的话,可以试试这样:
先用3个月入门机器学习,再用3个月入门深度学习,再用3个月去刷kaggle或者是天池的比赛。再花3个月学习算法数据结构、刷刷LeetCode。如果还有时间,可以再花1-2个月去学习一下spark。
你看即使一切顺利,这些内容也需要差不多一年的时间。本科只有4年,去掉一年迷茫、一年毕业季,真正能够有效利用的时间可能也就只有两年。想要在两年时间内顺利成长,的确不是一件容易的事情。
发表于 2021-7-4 10:52 | 显示全部楼层
双非二本,18年毕业,做了两年算法,主要是做的风控graph和nlp这两块。我不是来鼓励楼主的,我还是要劝退,因为现在已经很卷了。实际工作需要做算法创新的地方非常少,大部分时候都是在了解业务领域知识,思考业务,干活用的技能不难,所以实际干活的时候本科生也是可以做的,但是我一直觉得很枯燥(也许是我的level较低导致),由于没有系统性的学习数理统计知识,还是感觉很虚的。现在我也再回到学校读研去了,计划还是转回到工程方向。现在开发类的岗位薪资基本持平于算法,开发更多是体力上的疲累,而算法更多是心里的疲累,所以劝退算法。
如果真的要入门,建议看 机器学习实战  ,然后做数据挖掘比赛,看别人的分享code。之后再系统性的学习算法知识吧。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-21 04:21 , Processed in 0.203809 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表