写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』

写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。但是,最近好多人问我学习路线,而且很多大一大二的,说自己很迷茫,看到我那篇普普通通,我的三年大学之后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望我能给他个学习路线,说…

大家好,又见面了,我是你们的朋友全栈君。

说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。

但是,最近好多人问我学习路线,而且很多大一大二的,说自己很迷茫,看到我那篇 普普通通,我的三年大学 之后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望我能给他个学习路线,说实话,几乎每天都有问这种问题的,鉴于此,我就来写一篇适合普通大众的学习路线,就从大一入学那一刻开始入门说起,虽然不一定适合你,但或许能给没有明确目标的人带来一些学习的方向,那么这篇文章,我就觉得值了。

**注意:**这篇文章不是让你成为大神的,学完也不是多厉害,而是,给处于大学迷茫、不知道学啥的你,一个学习的方向,无论你是否是科班。不过我相信,当你学完了这些,你应该会有自己的学习方向了。

一、选择一门语言入门编程的世界

1、入门语言的选择

学习编程的第一件事,我觉得就是选择一门语言,不过能选择的语言实在是太多了,不知道如何选择的,可以选如下一门比较热门,也是 90% 人的选择的语言入门。分别是 C 语言PythonJava

那应该选哪一门呢?说实话,我觉得选哪一门都问题不大,因为等你成功入门之后,你大概率还会学习其他语言,那么我这里建议跟着学校的课程来选,因为大一基本也都会开设一门编程语言,我们学习当时开设的是 C 语言

那么问题来了,根据读者的反馈,其实还要部分学校大一是没有开设这些语言的,而且学那些网页设计这类的语言,那该咋办?答是我这里建议你仍然选择一门语言来学习,由于你不是跟着学校的课程走的,那么我这里建议你选择 C 语言

说实话,我觉得不论你是学哪一门语言的,如果有时间,都应该了解、学习下 C 语言,我觉得,你只要会了 C 语言,那么你入门其他语言分分钟,但会了其他语言,入门 C 语言可能会被虐。学习 C 语言,真的让人学习到挺多知识的,所以你不知道学习哪一门语言,这里我建议学习 C 吧,以后参加打ACM之类的比赛了,也一般用 C/C++。

2、书籍以及视频的介绍

这一个星期,我至少被 15 个人问过学习 C 语言要用哪一本呀?用什么编译器啊?反正我是被问哭了,不过当年我也有这样的疑问,所以就都耐心回答了。所以这里介绍下一些书籍和视频,虽然不是最好的,但我觉得还可以。这里我就以 C/Python/Java 为例子来介绍。

后面我也会出一篇汇总各类工具的文章。现在已经收集了几十个常用开发工具了,不过可没有提供激活成功教程教材哈,百度一搜一大堆激活成功教程教程或者序列码。估计在过一个星期,我就会整理出来的了

(1)、C语言

书籍推荐:书籍可以看《C语言程序设计》,谭浩强写的,适合入门学习,也是我第一本看的书。进阶可以看《C 和指针》。

视频推荐:可以看郝斌录制的视频,在 b 站搜索 C 语言就出来了,叫做《郝斌 C 语言自学教程》。说实话,对于新手,我觉得看视频还是比较不错的,可以少掉很多坑,不然你搞编译环境都搞死。

这里工具我就不介绍了,一般书籍和视频都会手把手交你们用哪个编译器。我当时用的是 codeblocksvs6

(2)Java

书籍推荐:《Java核心卷1》,这个算是入门书籍吧,入门书籍我看的不多,暂时介绍这一本,因为没看过的一般我不介绍,大家可以去网上搜索。

视频推荐:这里推荐 【尚学堂】Java300集,作者是 高琪 录制的,b 站搜索就可以了。讲的是真的好,入门的话,感觉看前面 100 集就可以了。进阶可以看《Java编程思想》,这本书也很好,解决了我很多疑惑。、

Java 编译器推荐用 IntelliJ IDEA,自己百度去搜索。

(3)Python

书籍推荐:这里推荐《Python编程:从入门到实践》。

视频推荐:我看过小甲鱼是视频,还不错,如果大家要看小甲鱼的视频的话,书籍可以顺便来他的配套书籍吧。视频叫《[小甲鱼]零基础入门学习Python》,b 站搜索就可以了。书籍也是也是《[小甲鱼]零基础入门学习Python》。

开发工具我当时是用 pycharm

问题来了,很多人问,应该掌握到哪个程度才算可以呢?

说实话,我也不大清楚,,我觉得书中说的,90% 理解就可以了,注意,是理解,具体怎么写,忘记了问题不大。总之,当然是学的深点比较好了。

文章首发于公众号『苦逼的码农』,更多经常文章欢迎搜索关注,已有150多篇原创,公众号回复『电子书』送你一份精选电子书

二、数据结构与算法

大学第一学期你入门了某种语言之后,就要开始学习数据结构与算法L。当然,不一定是第一学期,对于非科班的也一样,也是建议这个学习顺序。当然,你有自己的目标,完全可以按照自己的来。

我的文章是主写数据结构与算法的,我秋招也是靠着这个优势拿到 offer 的,所以我认为数据结构与算法是非常非常重要的,可能你会听到工作都基本没用到这些知识啊,或者库函数都帮我们封装好了啊,我们干嘛要学。

如果你这样想的,那你就错了。对于想要找工作的来说,这方面的知识是必考的,所以你得学;对于已经工作的来说,这方面的知识,可以让你学习到很多设计思想,所谓 数据结构 + 算法 = 程序,而且你学了这个,你会发现学习其他知识,上手的特别快。综上,数据结构与算法必学。

好吧,上面扯了这么多,就是告诉你,数据结构与算法的重要性,好了,下面我介绍下入门数据结构必学的有哪些,不过你跟着书本的学习顺序来就是了。

1、基础数据结构的学习

1、时间复杂度、空间复杂度

2、链表、队列、栈

3、树(二叉树,查找二叉树、AVL树,红黑树等)

4、图(图有好多种算法,深度/广度搜索,最短路径、最小生存树等)

如果你是科班的,那么这些我觉得你大一第二学期都学完是最好的了,没学完也问题不大,有些人可能是先教《离散数学》这本课,为数据结构与算法做铺垫。

书籍推荐:《大话数据结构》、《数据结构与算法分析:C语言描述版》,学哪一本?都可以,问题不大,我当时学的是第二本。大家记得根据自己的语言去学,我上面列举的,都是用 c 语言来实现的。

视频:我只看过《小甲鱼的数据结构与算法》视频,你们自己看着办吧。

2、算法的学习

在大一大二,真心建议你们把算法基本功打好,后面就真的没啥时间刷题之类的了,因为无论你以后要学习哪个方向的,算法都是实用的,会一些算法,说话也都自信了。算法的学习,刷题是必须的了,但不建议盲目刷题,而是先学习一些算法思想,在找对应的题刷,要学的主要有:

1、十大排序算法

2、递归、贪心、回溯、动态规划、枚举等

推荐书籍:《阿哈算法》、《算法设计与分析基础》适合入门;《算法第四版》、《算法导论》、《编程之美》适合进阶

视频:这种还是挺建议看书,我没看过视频,,这里就不介绍了。

具体可以看我之前的文章:程序员必须掌握的算法有哪些?谈谈这这几年学过的算法

3、保持算法的学习

算法的学习,真的是靠积累的,而刷题是必须的。而且学校都会举办一些比赛,这里还是比较建议大家去参见的,这样也能让你更加有激情着去学习。当然,每年都会有很多 ACM 编程大赛,要不要参加呢?这个看你了,也不是说参加就一定好,看你自己吧,具体可以参考我之前一篇文章说的: 普普通通,我的三年大学

大家可以在 leetcode 长期保持刷题,一天一两道,或者一个星期三四道都行。

文章首发于公众号『帅地玩编程』,更多经常文章欢迎搜索关注,已有150多篇原创,公众号回复『电子书』送你一份精选电子书

三、选择一门语言深入学习

刚才我选了选择一门语言来入门,之后你可能还会学习其他语言。我当时 C 语言入门,后面深入学习 Java。

你可以学习过很多种语言,但你一定要有一门拿的出手的语言,所以把上面的学习了之后,这个时候你可能是大二,最多大三,那你就应该选择一门语言来深入学习了,一般可选的有四门:C++JavaPythonGo,如果你想从事后端开发岗位 ,那么 C++,Java和Go相信是大多数人的选择,其中我觉得选择 Java 的人数是最多的。Go 是最近才火起的语言,也是个不错的选择。

那么问题来了,该选哪一门呢?入门你以后想从事游戏之类的开发,那么建议选择 C++,或者你以后比较想去腾讯字节跳动这些的,可能选择 C++ 会好一点。如果你想从事Web网站开发的,或者未来想去阿里巴巴、美团这些的,那么 Java 会好点,Go 和 Python呢?其实我也不是很懂,哈哈哈哈。不过我听说,对于一些不是很大型的网站之类的,都会用 Python 或者 Go 之类的快速开发。

大家如果是面向公司编程的,可以去看看哪些公司的技术栈,来选。当然,无论你选哪一门,只要你有实力,哪个公司都会收你,只是有可能到时候要转语言,我现在好像是需要从 Java 转向 Go,不过语言只是一门工具,把基础共通的知识学好,转语言都问题不大。

四、以Java为主的后端开发学习路线

由于我是深入学习 Java 的,那我就介绍下 Java 的学习以及书籍的推荐吧,其他语言我觉得也类似。我大二开始学习 Java 的,还是看了挺多知识。入门的就不介绍了,上面介绍过。下面说的基本是深入学习必须理解的了。

1、Java进阶必学

集合模块:主要是包括各种常用集合:例如 Set(包括HashSet,TreeSet), Map(包括 HashMap,HashTable),List(包括ArrayList,LinkedList)等等,上面列举的都得学习它的源码

多线程:synchronize,volatile,线程池,并发包(如lock等等),太多了,学了你们自然知道,我也不说的太详细了。推荐看《Java 并发编程艺术》+《Java编发编程实战》。

各种文件流:file,inputStream,outputStream等等,反正就是各种文件流,看书时你们自然会看到,不详细介绍。

虚拟机:虚拟机是必须学习的了,重点是GC部分,推荐看《深入理解Java虚拟机:JVM 高级特性与最佳实践》,一本就差不多够了,多看四五遍就行了。

其他:还有很多,如反射,注解,异常等。

2、JavaWeb 入门

学了上面那么多,啥程序、网站也没写出来,有点难受?没事,这个时候,我们就要开始撸网站了,如果是以 Java 作为开发语言的,那么 JavaWeb 是必须学的了。这个时候你可以入门学习下这些(注意,不用深入,快速找个视频入门就可以了)

1、mysql、html+css+js 、 tomcat、xml等。推荐看视频,自己去搜索 JavaWeb的视频,那么哪里不会补哪里,这些知识,几个小时就可以入门一门的了。

2、servlet+jsp 系列。

不建议直接学习框架,也是应该先学习 servlet,这些底层才是最重要滴。

3、三大框架

Servlet 写太麻烦了,只有认真学过 servlet 的人才能吹框架的好处,所以先学 servlet 在来学习框架,主要有三大框架:Spring + SpringMVC + Mybatis。

其实 SpringMVC 也是属于 Spring 吧,MVC 只是一种思想,这里学习顺序是先建议学习 Spring,直接看视频入门学习就可以了,后面在买书。视频还是那句话,B 站搜索。黑马的讲的不错,我当时也是看黑马的。

3、中间件的学习

必须中间件:redis,其他我也没学过,这学过这一门,Redis 感觉人人都得学啊,推荐书籍《Redis 设计与实现》、《Redis开发与运维》。我先看后者,感觉后者适合入门,然后在看前者的。

由于我这篇文章是给一个大致的学习方向的,我就不说的太详细了,不然得单独来一篇《Java学习路线》了。

对于 Java 的学习,我觉得你会了上面这些,我觉得可以去尝试找实习了,应该也能找的到,大二大三去体验一波学习还是挺好的。

文章首发于公众号『帅地玩编程』,更多经常文章欢迎搜索关注,已有150多篇原创,公众号回复『电子书』送你一份精选电子书

五、计算机基础的学习

看过我文章的都知道,我一直强大计算机基础的重要性,所以这里必须列举要学的有哪些。刚才说了选择一门语言深入,你在深入学习的过程中,肯定也在学习学校开设的专业课,包括:计算机网络 + 操作系统 + 数据库 + 汇编 + 计算机组成原理 + 编译原理 等等。

而这些,我认为是非常重要的,对于秋招的同学来说,只要你会这些,就算你是深入学习 Java的,然后你去应聘 C++ 岗,我觉得也问题不大,你和面试官说我不会 C++ 就可以了,大不了到时候转岗。我虽然是 Java 技术栈的,但是我面的公司,都不是 Java 技术栈的,例如 小米,Shopee,字节跳动,腾讯等。但是,这些都问题不大,你只要会这些基础 + 算法,而且,在秋招,特别是对于一些大公司,关于语言的,其实问的也不是很多,基础问的特别多,所以你会基础,面试会占很多优势。下面按照学习的优先级,给这些课程排个序。

其实给他们排优先级是不大好的,这样给他们排,感觉容易被大佬喷,不过没办法,对于小白来说,我还是想排以下顺序

1、计算机网络 + 操作系统

2、数据库 + 计算机组成原理(数据库相应你们可能已经先学过 MySQL 了)

3、汇编 + 编译原理

不过,如果你们还是在校的大一大二,那么可以根据你们课程的学习顺序来,但是,我建议有时间的可以提前学,不一定要等到学校教了才学,反正大部分老师讲的很一般,但时候你学过的话,可以当做复习,或者学其他。

书籍推荐

《计算机网络自顶向下》、《图解 http》、《深入理解计算机操作系统》、《汇编语言》(王爽写的)。具体要掌握到哪个程度可以看我之前的文章了。

【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

之前写过很多文章,所以这里不写的太具体了,具体的可以看我之前写过的文章。

六、总结

我觉得对于大学四年来学,上面这些是最核心的,也是必须学的。但是仅仅是上面这些还是不够的,上面的这些一两年就可以学完的。所以你还有很多其他时间,那么你可以学一些自己感兴趣的,多折腾,多豆鼓,而我上面学的,希望你都学。你也可以看我大学学过的一些核心基础知识:

我的经历/成长/经验

前两年都在折腾,特别是第一年,但是,我始终一直学习那些比较核心的课程。再次强调,这篇文章不是让你成为大神的,学完也不是多厉害,而是,给处于大学迷茫、不知道学啥的你,一个方向,无论你是否是科班,如标题所说,普普/大众。不过我相信,当你学完了这些,你应该会有自己的学习方向了。

最后,是希望各位还在校的学生,大一可以好好浪,但也要保持应有的学习时间,之后,就好好学习吧。不管你是名校还是非名校,我觉得你在只要这几年认真学,进大公司的几率,真的非常大,这绝对不是鸡汤。

上面设计到的工具以及书籍,我都提供了,可以在我的公众号『苦逼的码农』,回复『福利』即可获取。

另外,帅地把公众号的精华文章整理成了一本电子书,共 630页!目录如下

在这里插入图片描述

现在免费送给大家,在我的公众号帅地玩编程回复程序员内功修炼即可获取。

推荐阅读

大学四年,小白一路走来,分享一波我是如何学习、提高自己的算法
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

最后,给大家推荐一个 github,在这个github,有很多不错的电子书,并且分类整理了,或许你需要的可以在这里找到哦。点击前往Github

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。

2、老铁们,关注我的原创微信公众号「帅地玩编程」,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux)。

保存让你看完有所收获,不信你打我。。了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160394.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 渗透测试工具包 | 开源安全测试工具 | 网络安全工具

    渗透测试工具包 | 开源安全测试工具 | 网络安全工具项目介绍记录渗透测试开源工具。自动化渗透测试 AttackSurfaceMapper-自动化渗透测试工具,使用手册/测试流程。 vajra-自动化渗透测试. Savior-渗透测试报告自动生成工具!. 漏洞利用框架 hackUtils-它是一个用于渗透测试和网络安全研究的黑客工具包,渗透以及web攻击脚本。 msf框架: pocsscan攻击框架 Pocsuite攻击框架 Beebeeto攻击框架 …

  • LabelImg教程[通俗易懂]

    LabelImg教程[通俗易懂]目标检测中,原始图片的标注过程是非常重要的,它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置。本文介绍一款使用方便且能够标注多类别并能直接生成xml文件的标注工具——labelImg工具,并对其使用方法做一个介绍。本文仅针对ubuntu系统做使用介绍。1、下载LabelImg方式1:网址:https://github.com/tzu…

  • 如何偷窥到socket对应的内核缓冲区中有什么数据? 有多少数据?—利用recv的MSG_PEEK和ioctlsocket的FIONREAD

    如何偷窥到socket对应的内核缓冲区中有什么数据? 有多少数据?—利用recv的MSG_PEEK和ioctlsocket的FIONREAD很多时候,应用程序仅仅想知道内核缓冲区中有什么数据,或者想知道有多少数据可读,也就是说,应用程序仅仅想偷窥一下里面的数据,并不是想偷取,那怎么办呢?事实上,我们之前已经大致说过,现在,我们继续来复习一下recv的MSG_PEEK:服务端程序为:#include#include//winsock接口#pragmacomm

  • 什么叫小字辈_小字辈老电影观后感

    什么叫小字辈_小字辈老电影观后感原题链接本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

  • 单工半双工和全双工的区别_什么是单工双工半双工

    单工半双工和全双工的区别_什么是单工双工半双工一、单工1、数据只在一个方向上传输,不能实现双方通信。2、栗子:电视、广播。二、半双工1、允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,其实际上是切换的单工。2、栗子:对讲

  • 树莓派 1602A显示屏[通俗易懂]

    树莓派 1602A显示屏[通俗易懂]树莓派1602A显示屏下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器[img]http://dl2.iteye.com/upload/attachment/0128/7783/cefa073e-97ee-3d45-bddf-d7a878c232a1.png[/img…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号