学计算机语言，是先一门语言学精通，还是学各种语言?
华科学长的血泪建议！可以先看目录！ 一句话总结：打牢基础，自学成才。 大学最重要事情就是要打好地基，地基打得越牢固，那以后的职业生涯的成就就越高。 但这个地基别指望学校的课程能帮你打好，要充分调动主观能动性，自学才是王道。 昨天刚写完一个回答，是在说高校的计算机教育问题，有个评论挺好玩的： 长文预警：本回答非常的长长长长长，因为作为一个过来人真的希望各位学弟学妹们能够少走弯路，毕竟人生没几个4年可以重来。 你们可以先看看目录，如果一次性看不完，建议可以先点赞&收藏，防止迷路~ 打牢基础！打牢基础！重要的事情说三遍！ 基础非常重要，不管你以后从事什么方向，应用开发也好，大数据开发也要，客户端工程师也好，要想吃得开必须依赖这些基础课程：操作系统、组成原理、计算机网络、数据结构、算法、数据库。 几乎各个大厂面试前2轮面试都会重点关注基础，如果基础不扎实，那么就很难进入后面的面试，把大学一半的精力花在打基础上都是值得的。 计算机专业的大学生和其他专业通过几个月转行出来的程序员有一个很大的区别就是基础知识差距很大。而这些基础知识的重要性体现在多个方面： 推荐视频课程+书籍结合的方式，千万不要抱着大块头的书从头啃到尾。 看视频课程会比纯看书更生动，更容易理解。 另外这里强烈推荐网上的经典公开课，这些公开课久经考验，有深度，评价非常高。并附有详细的lecture和代码案例。可能一开始会觉得比较难，尤其是国外大学课程，英文讲解，而且通常比国内学校讲的有深度，但是只要坚持，收获还是非常不一样的。 注意，下面推荐的国外大学课程的公开课略有难度，属于进阶型。初学者入门可以先看一些基础的教程，入门之后再看这些深入学习。入门的课程资源有： （1）操作系统： 清华大学操作系统：https://www.bilibili.com/video/BV1uW411f72n （2）计算机网络 计算机网络微课堂：https://www.bilibili.com/video/BV1c4411d7jb （3）MySQL入门+实战：https://www.bilibili.com/video/BV1Vy4y1z7EX （4）浙大MOOC数据结构：数据结构_浙江大学  基础课程推荐的视频课程和书籍有： ①MIT6.268 课程官网：https://pdos.csail.mit.edu/6.828/2018/schedule.html 网友的一些homework实现：https://github.com/SmallPond/MIT6.828_OS/tree/master/xv6-publicMIT6.828 是一门公认的硬核课程，一直以来都有很高的知名度，也广受好评，是理论与实践相结合的经典。 建议是在上过学校的OS课，或者阅读过操作系统导论类再来学习这门课。最好在开始之前熟悉C和汇编，也对计算机组成有一定了解。 然后只要你跟着项目一步一步走，做完 6 个实验，就能实现一个简单的操作系统内核。lab是这门课的重点： ②国内哈工大的操作系统实验课https://github.com/hoverwinter/HIT-OSLab 推荐standford课程cs144结合书籍《计算机网络：自顶向下方法》。 课程链接： https://www.scs.stanford.edu/10au-cs144/ https://cs144.github.io/ 书籍选择《计算机网络：自顶向下方法》，豆瓣评分9.3分。 这位知乎大佬 @胡津铭 有一个专栏讲如何自己实现一个TCP，强烈推荐：https://zhuanlan.zhihu.com/p/175998415如果想找一本简单的入门书籍，推荐《图解TCP/IP》。 实战的话推荐《Wireshark网络分析就这么简单》，可以亲手尝试抓包分析数据报文的信息。 ① standford CS145/CS245/CS346逐步递进的学习。 课程链接：CS145：Introduction to Databases Course Informationhttps://cs145-fa20.github.io/http://infolab.stanford.edu/~junyang/cs145/info.htmlCS245：Principles of Data-Intensive Systemshttps://web.stanford.edu/class/cs245/CS346：Database System Implementationhttps://web.stanford.edu/class/cs346/2015/ ②伯克利的数据库导论https://www2.eecs.berkeley.edu/Courses/CS186/③CMU的数据库系统 数据库系统设计域实现，涵盖数据模型、存储模型、查询语言、存储架构、事务处理、恢复、并发架构等等，并结合开源和商业数据库给出案例讲解。https://15445.courses.cs.cmu.edu/fall2020/④书籍推荐《数据库系统概念》 ①MIT 6.006 Introduction to Algorithms MIT 6.006 是经典的数据结构和算法入门课程，涉及到排序、哈希、图论、动态规划。Lecture非常翔实，伪代码可读性强，在辅以专门的practice，用py实现的。 课程链接：https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/ ②书籍推荐《算法》，豆瓣评分9.4分。 内容全，源码示例多。 比如普林斯顿大学教材使用的就是这本书，然后有配套的教程网站，上面有很多文档和demo：https://algs4.cs.princeton.edu/lectures/ 视频：https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX建议通过可视化的方式学习算法和数据结构，能很容易看出其基本原理、各种操作是怎么实现的。数据结构和算法可视化学习网站这里强烈推荐：visualgo：https://visualgo.net/zhData Structure Visualizations：https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 国外大学是怎么学习计算机组成原理的-https://www.zhihu.com/question/38838088http://www.cs.cmu.edu/~213/http://web.stanford.edu/class/cs107/关于公开课，更多的可以参考这个github项目，维护了众多推荐的公开课程资源：（star 14K）https://github.com/ForrestKnight/open-source-cs/blob/master/README.md老外OSSU组织总结的自学计算机学习路径，star 92K：https://github.com/ossu/compute 为什么我一定要强调自学，核心在于2点： 不管是科班还是非科班，如果你认为学完学校的课程就能找到一份好工作，那你想的真的太简单了，等待你的可能是“毕业就失业”，不是我吓唬你，目前国内高校计算机教育普遍存在以下问题： ①教材质量差：基本都是学校自己编的，质量不敢恭维，这里强烈推荐一定要读经典书籍，不要在这些渣渣教材上浪费时间。 ②课程质量差，照本宣科：大量使用PPT而极少数会有粉笔板书，而且课程知识停留在十年前，和业界前沿技术脱轨严重。 ③实践太少或者深度不够：国内课程首先是对实践不够重视，实践在最终课程考核分数中的占比非常低；其次就是核方式存在很大的问题，很多居然以word文档的方式来提交C语言实验报告。 研究生复试会考查编程能力，也就是上机题。这就要求比较强的编程能力，而且不是靠突击就可以提升的。需要提前准备，积累。 ④思维陈旧，工具链落后：现在课堂上IDE还大量使用VC6.0，而在实际生产环境中要用到的一些工具，学校根本就不教。 感兴趣可以看看我下面这个回答，已经获得了3100+赞和收藏： 也有很多小伙伴问我：到底需不需要报培训班？毕竟培训班的学费都是好几万，值不值？ 我个人的建议是：其实现在网上的学习资料非常多，你要想学的话，根本不缺课程，花几万块钱报个培训班其实也就是买个视频课。如果个人学习能力还不错，完全可以自学，即便是报培训班，也是你自己看视频自学。 学习资料是肯定不缺的，缺的是什么呢？？？ 体系化的学习路线和跟踪答疑，网上课程多的是，但是哪个课程比较好？应该先学什么？再学什么？哪些是重点？遇到问题没人解答才是痛点。这也是为什么越来越多的粉丝让我带着他学习，学长学姐的经验真的可以帮助少走弯路。 如果有需要详细的学习计划和1V1辅导的小伙伴也可以联系我，业余时间带带大家，精力有限，每月只收1个徒弟。 这个行业发展太快，技术淘汰的速度也很快，3 年不学新东西就可能落伍了，工作之后发现自学能力更加重要了。 但是这里你一定要警惕自学陷进，而要掌握学习新知识的方法论，个人总结主要为以下几点： ①知道自己在学什么，明确自己的学习目标； ②建立自己的知识网络，比较简单的方法就是善用思维导图，把知识网络串起来； ③从大量信息中筛选有价值信息的能力，人的精力是有限的，我们不可能面面俱到，学习一定要学经典资料； ④实践推动学习。 既然学校教不了我们什么，那么应该如何自学呢？以终为始。 比如说你的目标是毕业后找到一份互联网大厂Java后端的工作，你就去看大厂的招聘要求，看自己需要学什么，给自己规划路径。 互联网技术岗位方向一般包括但不限于以下几类： 确定自己的目标，找到对应技术栈的学习路径，然后学起来吧。 那么大厂校招计算机专业学生，到底看重什么呢？ 我下面这个回答可以看看： 应该了解并熟悉8门语言：C、C++、Java、Html、Css、javaScript、Shell、SQL，并且至少要精通一门以上语言。 专业落实到工作应用层面，往往是一门实际应用如移动端（Android/iOS），后端，Web，算法，大数据，AI等等，根据自己的求职方向选择性学习。 按照现在的市场来讲，Java是现在工业上运用比较多的语言，也是最好找工作的语言之一。其次是C++、Python等。就目前的形式来看，iOS和安卓等移动端开发是比较不好找工作的，但如果你确实很感兴趣，成为了这方面的大佬，那么前景也还是不错的。 少看博客，多读书。 博客只能帮你找到学习思路，真正的知识储备建立在你阅读了多少经典书籍的基础之上。 相比于电子书，我本人更喜欢纸质的，一是尊重作者劳动成果，拒绝白嫖；二是阅读体验我自己觉得更好。 网上也有很多电子书，但是希望的大家不要放在网盘里落灰。有条件可以买书回来自己看，动力更足。 研究生读的一些书，老照片了，像素太低多包涵： 工作之后看的一些书，只是其中一部分： 再来唠叨2句，有些书籍最好不要买，比如21天精通XXX，完全就是割韭菜的。 学习计算机一定不要想着速成，没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码，然后自己动手写，所有技术大佬都是一行行代码敲，一本本书啃出来的。 我在大学期间，为了把专业学好，看了大量经典的专业书籍，整理了这份计算机必读的高分经典书籍： 这份书单对于CS学习的同学帮助非常大且十分系统，这些书籍的电子版已经整理好了。 需要的直接戳这里领：计算机必看经典书籍（附pdf下载），请注意查收~ 请记住，学习语言的话，首先多看专业书籍，另外就是多实战，熟能生巧。 以Java为例，Java技术栈的学习路径可以按照下面来安排： 如果是C++，可以按照下面的学习路径： 关于Python的学习我目前尚未整理出完整的学习路线（因为没有人邀请我回答），后面如果大家需要的话我可以抽时间专门整理一下（可以邀请我回答啊~）。 我老婆最近在学Python做数据分析处理，想转岗到数据分析，我自己上班太忙也没有时间教她，给她报了个百词斩旗下夜曲编程出品的Python课程，非常适合零基础的新人学习。 在手机上就能直接学习，基本上我开车上班的路上老婆就在副驾驶把当天的课程学完了，而且省去了小白安装环境的复杂步骤。 课程采用的是交互式的学习方式，每节课都有几十个代码练习，模拟真实环境撰写代码，代码写错了也会自动报错，参考示例代码就能知道自己错在哪里。 课程学习是集代码卡闯关式的形式，学习时长完全可以自由控制，阅读和学习能力强的差不多5-8分钟就能完成一节课的学习（比如我老婆）。我觉得这种学习形式会比视频高效很多，视频必须得从头到尾看完。 而且整个Python课程设置很清晰，循序渐进，很适合小白入门，感兴趣的话可以关注【夜曲编程】公棕号发送【免费教程】先体验一下~ 经常逛一些比较不错的工具网站，比如google、Stack Overflow、coursera、github、知乎等。 多关注一些你的领域的一些大牛在干嘛，多关注一些优质原创博主的博客，比如说你如果觉得我的回答写得还不错，可以关注一下我 @夏天。 多关注业界前沿技术和动向趋势，了解最新技术解决了什么新问题，是否能够给自己的工作带来帮助。这里推荐几个优秀的前沿信息来源： 使用 Google 搜索而不是百度。 再推荐几个不错的技术社区吧，戳下面回答看： 关于大学四年的专业课学习规划，我之前写过一个2万+字的回答，非常之详细了，下面的回答链接，直接戳： Talk is cheap, show me the code； 对于计算机专业来讲，实践是非常非常重要的。 那么有哪些实战的方式呢？ ①参加比赛有含金量的比赛大概有如下几个： ②实习实习是非常好的实践方式，一方面可以提前了解和感受互联网公司的环境、氛围，另一方面向各路大牛学习，获取一手的经验，还可以参与实际的项目。 ③github开源项目如果没有实习，也可以通过参与实验室项目或者github上的开源项目。github上开源社区有完善的文档、协作机制，可以和很多人一起交流，开阔视野。 作为新手，下面这个回答你可能会需要： ④刷题主要是锻炼数据结构和算法能力、提高思维能力。推荐用LeetCode或牛客。 ⑤顶尖公开课的project通常都非常有深度，有一步一步实现一个麻雀虽小五脏俱全能run起来的系统，如数据库或操作系统，或者一个tcp协议栈。 作为一个计算机类科班学生，还会学习高等数学、线性代数、概率论与统计、复变函数、离散数学、图论、数据结构等等众多的数学课。这些数学课会比较枯燥无味，且难度较大，但是数学基础对计算机类学生来说是比较重要的，尤其是一些决定走科研道路的同学，数学基础会非常非常重要，有时候数学能力会决定你到底能够走多远。 英语就更不用说了，学计算机，英语不行，那基本是废了，毕竟还有很多外文资料等着你去看呢。 比如我上面推荐的哪些国外精品课程，其实都对英语功底有要求。 而且还有一些技术书籍，其实翻译很烂的，看原版才得劲。 关于计算机相关证书我之前也写过一个回答： 什么计算机一级二级之类的，真没用，真正有用的是下面这些： ①计算机专业类 ②数学类 ③英语类 写博客对我们好处很多： 我在校招的时候就因为博客加分不少。我的技术博客原创博文已经很多了，虽然没有太多高深的东西，都是一些基础知识，但是大多是自己加以总结了的。大多数面试官都打开我的博客看了，评价还不错。 上学的时候主要在CSDN分享，那时候我就已经算是个大V啦，多年没维护，粉丝掉到了4000个。 还有粉丝催更的，现在主要在知乎做些分享。 我发现依旧有非常多的同学没有意识到校招的重要性！！！大多数人一生只有一次校招机会，必须足够重视。 先给大家科普一下校招： 春招： 秋招： 补招： 招聘对象：一般来讲，22届秋招面对的是即将在22年毕业的同学，也就是今年九月份开学就要大四和研三的同学。当然每家公司对于秋招毕业时间的界定略有不同，以阿里为例，今年秋招的毕业时间要求：2021.11.01-2022.10.31。 秋招是校园招聘公司最多、岗位最全，也是最重要的校园招聘，特别是【提前批】。 春招相当于是秋招的补录，还有很多考公考研失败的人还有留学生会加入进来，竞争会更加的激烈，所以我们一定要重视秋招。 总结一下： 大学四年可以学到很多东西，也可以玩的很爽。大学是选择最多的时期，也是最后一次能利用学生红利进入大厂，希望同学们能好好把握。 说了这么多，总结一下，无非就是：方向 + 方法 + 努力 + 坚持。 再补充一个大家最近问的很多的，关于计算机专业电脑选购的问题。 按照不同的预算给大家推荐了几款电脑，闭着眼睛买就行：