咦,竟然还有这么一个问题呀,我喜欢。
TLDR:编程就是靠练,无他。
如果用一个10的尺度来衡量的话,编程最难的在于0-1的突破,入门之后,从1-5就会比较顺畅,然后需要花一些功夫才能从5-8。从8-10的话,估计少说需要三五年,还是得很nb的人。
既然是计算机专业的学生,那接触编程就比自学容易太多了。学校肯定都有培养大纲,让咱们按部就班的学习计算机基础知识。肯定也会有编程实验课,这些编程实验课就能教一些基本的编程基础和技巧。
编程方面,最重要的就是六门课:
上面这些课,一定要学好。
但学校教的东西一般都是general的知识,会让大家知道怎么去写if,else,各种循环,肯定也会有各种编程作业和小的项目,让大家继续提高。可惜真正想提高编程能力的人,光上面这些过程是远远不够的。
那需要怎么办呢?
无非其实就两点,看书,练习,最好是看书的同时把书上的内容转换成一行一行的代码。
比如说,咱们就拿算法红包书来说吧。
书在这里:
该书有配套的课程网站:
该网站就把书里面的知识点提炼出来,然后很多题目都有配套的Java代码,而且书里面前面的第一章还有Java基础。认真跟着这本书和这个网站把算法和数据结构的内容过一遍,那么你的编程基础至少是及格了。
如果想上算法课程的配套网课的,可以去YouTube:https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX
估计B站也有搬运,但我不怎么上B站,大家感兴趣的总结去找一找。
这个过程哪怕你只是跟着网站一点点去敲代码,也会有很大的提高的,这个过程千万别操之过急,正所谓基础不牢,地动山摇。一定要把基础打扎实。
我自己是获益匪浅。
下面这些课程都是美国大学的网课。现在网络资源特别多,大家一定要学好英语,多去跟着好的网课学,假以时日,肯定会提高的!不学好英语错过的好资源太多了,后期查阅资料也会不容易。
如果你还想学习其他的网络课程的话,我反正十二分强推UCB的CS61B。他们家的计算机系的CS61A,B,C课,简直制霸各种课程推荐列表。
2. MIT的算法课,教程用的算法导论,也是强推的网课:https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb 这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。
3. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。
现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是,咱们可以在B站直接看:
https://www.bilibili.com/video/av21620553?p=1
接下来就可以去找项目来做,把学到的基础知识活用起来,上哪里去找项目呢?
其实YouTube,或是udemy上面的课程非常多,但可能国内的小伙伴还是更倾向于用中文的教程,那么大家可以去B站找相关的项目课程,上淘宝估计也能买到。
关键是要找一个风评还不错的课程,就从头到尾学一遍,千万别东学一点,西来一些的。这样的效果肯定不会太好。
我自己是跟着这个网站一步步提高Java编程能力的。下面这个网站是Java全栈,从Java的基础,前端三件套,以及Java的框架,应有尽有。最好的地方在于,用不同的技术栈实现天猫全栈。这样跟着一套学下来,技术方面就不会太差了。
如果你想专门学前端,可以去Udemy找几个网课跟着寻练。
咱们学习计算机知识,做项目,哪怕是学精通,最终也是为了找一份好的工作。
现如今,找个实习也不容易呀,全职就更难了。
我作为转码选手,对我帮助比较大的网站有这些:
这是现在刷题找工作最热门的网站了。
但LeetCode现在题目也太多了,一共1500+了,而且一直在增加!!!
全刷完没必要,也不高效。
关于怎么刷题,请看我的这个回答:
2. Educative
(如果你需要上面这些算法课程,那么你可以使用 awesome-developer 的折扣码获得网站所有课程的额外15%off!上面的折扣码针对单独购买所有课程有效。
如果想买订阅(Subscriptions)的小伙伴,则可以用 ZHIHUEDU-10 (必须一模一样输入)的coupon code来获取额外九折的优惠 按年和按月均适用。
他家最最出名的还是这门Grokking the System Design Interview, 但凡提到准备系统设计,这门课都上入门必推的:
以及OOD: Grokking the Object Oriented Design Interview
这门机器学习面试指南是这个系列最新的课程:
目前市面上机器学习面试相关的课程比较少,这门课程应该非常值得!
还有这门算法课:
这门课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。
对算法最有帮助的课程对应下面这篇回答:
专门针对数据结构的课程则有:
C++:
JavaScript:
Java:
Python:
我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍,对于用java的同学特别有帮助,java的基础在刷题的过程中,还是要必须掌握的。
课程从复杂度开始讲起,Arrays,LinkedLists, Stacks/Queues, Graphs, Trees, Trie, Heaps, Hash Tables等数据结构,全都实现了一遍。而且还有配套的基础LeetCode题。是一个入门的很棒的教程。选择其他语言的话,内容应该也是差不多的。
搞完上面这些课程,就多去招聘网站看看企业的招聘要求是什么,并挑选好的公司投递简历,然后好好面试,准备收大offer,实习去大厂的梦想!