最近好多人问我学习路线,都是计算机专业,说自己在编程学习上很迷茫不知道该怎么办,希望我能给他指明个学习路线,几乎每天都有问这种问题的非常多。鉴于此,我就来写一篇适合普通大众的学习路线,虽然不一定适合你,但能给没有明确目标的人带来一些学习的方向。
一、选择一门编程语言入门
1、入门语言的选择
学习编程的第一件事,我觉得就是选择一门语言,不过能选择的语言实在是太多了,如果不知道如何选择的,可以选择一门比较热门的,也是 90% 人的选择的语言入门,一般分为三种,分别是 C 语言,Python,Java。那应该选哪一门呢?其实选哪一门都问题不大,因为等你成功入门之后,你大概率还会学习其他语言,你会发现所有编程语言除了名字不同,别的方面都差不多。
但是最起码要有一种母语作为编程语言的基础,那么我这里建议你选择 C 语言。不论你是学哪一门语言的,如果有时间的话,都应该了解、学习下 C 语言,你只要会了 C 语言,那么你入门其他语言分分钟即可,但会了其他语言,入门 C 语言可能会被虐。C 语言真的让人学习到挺多知识的,所以你不知道学习哪一门语言,这里我建议学习 C 吧。
2、书籍以及视频的介绍
学习 C 语言要用哪一本呀?用什么编译器啊?。所以这里介绍下一些书籍和视频,虽然不是最好的,但是一定有适合你的。
a、C语言
- 书籍推荐:书籍可以看《C语言程序设计》,谭浩强写的,适合入门学习。
- 视频推荐:可以看郝斌录制的视频,在 b 站搜索 C 语言就出来了,叫做《郝斌 C 语言自学教程》。说实话对于新手看视频还是比较不错的,可以少入很多坑。
- 这里工具我就不介绍了,一般书籍和视频都会手把手教你们用哪个编译器。
b、Java
- 书籍推荐:《Java核心卷1》,这个算是入门书籍吧。
- 视频推荐:b 站搜索就可以了,里面有好多,效果都很好。
- Java 编译器推荐用 IntelliJ IDEA,自己百度去搜索。
c、Python
- 书籍推荐:这里推荐《Python编程:从入门到实践》。
- 视频推荐:b 站搜索视频《零基础入门学习Python》,非常适合入门。
- 开发工具我当时是用 pycharm。
学习到什么程度才算可以呢,90%的知识点理解就可以了,总之当然是学的深点比较好了。
二、数据结构与算法对于想要找工作的来说,这方面的知识是必考的,所以你得学;对于已经工作的来说,这方面的知识,可以让你学习到很多设计思想。所谓 数据结构 算法 = 程序,而且你学了这个,你会发现学习其他知识,上手的特别快,总结一下数据结构与算法必学。
下面我介绍下入门数据结构 算法必学的有哪些,你跟着书本的学习顺序来学习就是了。
1、基础数据结构的学习
a、时间复杂度、空间复杂度
b、链表、队列、栈
c、树(二叉树,查找二叉树、AVL树,红黑树等)
d、图(图有好多种算法,深度/广度搜索,最短路径、最小生存树等)
e、推荐书籍:官方教程即可
2、算法的学习
一定要把算法基本功打牢固、打扎实,因为无论你以后要学习哪个方向,算法都是实用的。算法的学习,刷题是必须的了,但不建议盲目刷题,而是先学习一些算法思想,要学的主要有:
a、十大排序算法
b、递归、贪心、回溯、动态规划、枚举等
c、推荐书籍:《算法设计与分析基础》、《算法第四版》、《算法导论》
三、选择一门语言深入耕耘
选择一门语言来入门后,你可能还会学习其他语言。比如 C 语言入门,后面深入学习 Java。你可以学习过很多种语言,但一定要有一门拿的出手的语言,所以把上面的学习了之后,那你就应该选择一门语言来深耕了,一般可选的有三门:C ,Java,Python,如果你想从事后端开发岗位 ,那么 C ,Java和Python相信是大多数人的选择,其中我觉得选择 Java 的人数是最多的。Python是最近才火起的语言,也是个不错的选择。
该选哪一门呢?如果你以后想从事游戏之类的开发,或者你以后比较想去腾讯,字节跳动这些,那么建议选择 C 。如果你想从事Web网站开发的,或者未来想去阿里巴巴、美团这些的,那么 Java 会好点,Python比较万能一点,以后估计会更加万能,无论是游戏制作、网站开发、小程序等都适用,学好Python是很有必要的。
如果是面向公司编程的,可以具体根据公司的技术栈来选。无论你选哪一门,只要你有实力,哪个公司都会收你,只是有可能到时候要转语言,语言只是一门工具,把共通的知识学好,转语言都问题不大。
四、以Java为主的后端开发学习路线下面说的是深入学习Java必须了解的,为什么以Java为例呢,因为使用Java语言的人比较多,更具有代表性。
1、Java入门必学
a、集合模块
主要是包括各种常用集合:例如 Set(包括HashSet,TreeSet), Map(包括 HashMap,HashTable),List(包括ArrayList,LinkedList)等等,上面列举的都得学习它的源码。
b、多线程
synchronize,volatile,线程池,并发包(如lock等等),太多了,学了你们自然知道,我也不说的太详细了。
c、各种文件流
file,inputStream,outputStream等等,反正就是各种文件流,看书时你们自然会看到,不详细介绍。
d、虚拟机
虚拟机是必须学习的了,重点是GC部分,推荐看《深入理解Java虚拟机:JVM 高级特性与最佳实践》,一这一本书就差不多够了,多看四五遍就行了。
e、其他
如反射,注解,异常等。
2、JavaWeb 入门
学了上面那么多知识,程序、网站也没写出来,没有成果是不是有点难受?这个时候就要开始撸网站进行学习了。
a、mysql、html css js 、 tomcat、xml等
推荐看视频,自己去搜索 JavaWeb的视频,哪里不会补哪里,这些知识几个小时就可以入门。
b、servlet jsp 系列
不建议直接学习框架,也是应该先学习 servlet,这些底层才是最重要的知识。
c、三大框架
Servlet 写太麻烦了,只有认真学过 servlet 的人才能更好的学好框架,所以先学 servlet 再来学习框架,主要有三大框架:Spring SpringMVC Mybatis。很时髦的MVC 只是一种思想,这里学习顺序是先建议学习 Spring,直接看视频入门学习就可以了,后面再买书学习。视频还是那句话B 站搜索。
3、中间件的学习
中间件学习就是Redis, Redis 感觉人人都得学啊,推荐书籍《Redis 设计与实现》、《Redis开发与运维》。这本书非常适合入门。对于 Java 的学习,你会了上面这些就可以去找工作了。
五、计算机基础的学习
我一直在强调计算机基础的重要性。刚才说了选择一门编程语言深入,你在深入学习的过程中,肯定也在学习相关专业课,包括:计算机网络 操作系统 数据库 汇编 计算机组成原理 编译原理等。这是非常重要的,只要你会这些,就算你是深入学习 Java的,然后你去应聘 C 岗,问题也不大,你和面试官说我不会 C 就可以了,大不了转岗。
掌握了这些基础 算法,特别是针对一些大公司的招聘就没有问题了,大公司的招聘关于某种具体语言的问题也不是很多,反而是基础知识问的特别多,只要你的基础知识扎实,面试会占很多优势。下面按照学习的优先级,给这些课程排个序。
- 计算机网络 操作系统
- 数据库 计算机组成原理(数据库相应你们可能已经先学过 MySQL 了)
- 汇编 编译原理
编程语言千变万化,但是最根本、最核心的还没有变,比如数据格式、循环结构、函数等,无论哪一种编程语言都少不了,当你编程水平达到一定的水平后你会蓦然回首的发现编程语言除了名字不一样,别的都差不多。
,