其实这个题,题主无非是想知道哪些方向能找点不错的工作,将来能混个不错的日子。
方向固然重要,但更重要的还是大学这几年好好学啊,成绩不好就努力点,难道还期望成绩不好,选个方向翻身么?
选择就选计算机科学或是软件工程就行。为啥?因为这两个方向招人最多,将来也好找工作。
选完了方向,关键的问题来了,大学怎么才能把握好?
其实这方面的回答,知乎上面一大堆,翻来覆去也就那么些内容。
既然是计算机专业的,麻烦好好练练怎么在互联网上找信息,处理信息,利用信息帮助自己成长。
可能你要是有类似的搜索信息的能力,这个问题也就迎刃而解了。
怎么学,应该注意什么,我也回答过了。
贴过来方便大家一下。
最关键的就是,自己要付出,不管啥时候,努力才会有收获。
老回答地址: 一个不是很了解CS(计算机科学)的人,该从哪里开始自学CS?
这个题我碰巧会,而且我是转专业学计算机的。现在也是CS的TA,所以对美国的CS本科课程还算了解。
课程的话,最重要的就是下面五门:
外加计算机组成原理。
上面的这六门课,无论你是将来找工作,读研,还是读博,都是最最重要的。而且学习的顺序就是上面的这样,美国一般会开一门计算机基础,教一门语言,Python和Java居多。然后就是数据结构,在这之后就学算法。以此类推。
如果你想在美国找工作的话,就需要把时间分配好,去刷题,刷project。因为如果你到毕业的时候哪怕GPA很高,学校也不错,能过得去简历关,面对你最重要也是最难的一关就是面试。
面试就是算法面试,除了少部分公司,比如Amazon,特别注重behavior question (BQ)之外,其他公司基本一溜的需要你对算法和数据结构掌握得很好才行。
以下的情况都是针对国外,尤其是北美而言的。
GPA有3.5+就好,一定要重视刷project,刷题。
有project才能过简历关,LeetCode熟练才能过面试关。毕竟读CS或是转CS的大部分人,还是以读书找一份程序员的工作为导向的。
因为国外实习或是new grad找全职,面试主要考察算法和数据结构。
需要熟练掌握一门语言(Python,Java,或是C++),然后用你熟悉的语言来实现基本的算法和数据结构。
网课可以跟着这几门来学
网络课程的话,则是十二分强推UCB的CS61B。他们家的计算机系的CS61A,B,C课,简直制霸各种课程推荐列表。
2. MIT的算法课,教程用的算法导论,也是强推的网课:https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb 这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。
3. 然后就是红宝书的网课以及配套官网:
https:// algs4.cs.princeton.edu/ lectures/
https://www. youtube.com/watch? v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX
4. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。
现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是,咱们可以在B站直接看:
最后来说说练习平台
光学(看书)不练,算法和数据结构是学不会的。
所以推荐一些好的刷算法和数据结构平台,当然另一方面也是为了找工作面试做准备咯。
如果你在北美的话,初级程序员面试基本就是考察数据结构和算法,所以大家一定要勤加训练!
这是现在刷题找工作最热门的网站了。
但LeetCode现在题目也太多了,一共1300+了,而且一直在增加!!!
全刷完没必要,也不高效。
2. Educative
如果想买订阅(Subscriptions)的小伙伴,则可以用ZHIHUEDU-10(必须一模一样输入)的coupon code来获取额外九折的优惠按年和按月均适用。
他家最最出名的还是这门Grokking the System Design Interview, 但凡提到准备系统设计,这门课都上入门必推的:
以及OOD: Grokking the Object Oriented Design Interview
这门机器学习面试指南是这个系列最新的课程:
目前市面上机器学习面试相关的课程比较少,这门课程应该非常值得!
还有这门算法课:
这门课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。
对算法最有帮助的课程对应下面这篇回答:
下面这个系列是新出的算法课程:通过解决大公司真实场景问题来破解算法面试。
下面是用Java的:
还提供了Python:
C++:
以及JS版本:
专门针对数据结构的课程则有:
C++:
JavaScript:
Java:
Python:
我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍,对于用java的同学特别有帮助,java的基础在刷题的过程中,还是要必须掌握的。
课程从复杂度开始讲起,Arrays,LinkedLists, Stacks/Queues, Graphs, Trees, Trie, Heaps, Hash Tables等数据结构,全都实现了一遍。而且还有配套的基础LeetCode题。是一个入门的很棒的教程。选择其他语言的话,内容应该也是差不多的。
看到评论区问项目推荐,特意更新一下我自己跟着刷项目的网站。下面这个网站是Java全栈,从Java的基础,前端三件套,以及Java的框架,应有尽有。最好的地方在于,用不同的技术栈实现天猫全栈。这样跟着一套学下来,技术方面就不会太差了。
如果你想专门学前端,可以去Udemy找几个网课跟着寻练。
计算机的东西还是比较多,也比较杂的,但先从上面的六门课学起肯定没问题。
计算机的经典书籍,则可以参考这个回答:
共勉。