计算机专业的学生怎样练习编程才能把编程学精通啊？
咦，竟然还有这么一个问题呀，我喜欢。 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 他家最最出名的还是这门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，实习去大厂的梦想！ 