很多人对自我的学习路线没有清楚的定位,鉴于此,我就来写一篇适合普通大众的学习路线,就从大一入学那一刻开始入门说起,虽然不一定适合你,但或许能给没有明确目标的人带来一些学习的方向,那么这篇文章,我就觉得值了。

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

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

1、入门语言的选择

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

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

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

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

2、书籍以及视频的介绍

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

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

(1)、C语言

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

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

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

(2)Java

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

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

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

(3)Python

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

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

开发工具我当时是用 pycharm

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

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

二、数据结构与算法

大学第一学期你入门了某种语言之后,就要开始学习数据结构与算法L。当然,不一定是第一学期,对于非科班的也一样,也是建议这个学习顺序。当然,你有自己的目标,完全可以按照自己的来。可能你会听到工作都基本没用到这些知识啊,或者库函数都帮我们封装好了啊,我们干嘛要学。

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

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

1、基础数据结构的学习

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

2、链表、队列、栈

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

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

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

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

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

2、算法的学习

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

1、十大排序算法

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

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

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

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

3、保持算法的学习

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

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

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

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

你可以学习过很多种语言,但你一定要有一门拿的出手的语言,所以把上面的学习了之后,这个时候你可能是大二,最多大三,那你就应该选择一门语言来深入学习了,一般可选的有四门:C++,Java,Python,Go,如果你想从事后端开发岗位 ,那么 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 的学习,我觉得你会了上面这些,我觉得可以去尝试找实习了,应该也能找的到,大二大三去体验一波学习还是挺好的。

五、计算机基础的学习

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

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

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

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

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

3、汇编 + 编译原理

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

书籍推荐

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

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

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

六、总结

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

不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来相关推荐

  1. 计算机科班与非科班学编程有什么差距?

    先说观点:在没学计算机专业之前,大家都是零基础. 计算机专业科班出身学编程确实有优势,但是这并不意味着非计算机专业就一定比科班出身的差,技术都是不断更新迭代的,能坚持学到最后的才是真正具有专业精神的人 ...

  2. Java后端学习路线(适合科班、非科班和已工作的仔)

    前言 今天看到一篇关于后端学习的硬核博文,感觉原博主说的很详细,涉及面很广,很适合正准备提升自己的小伙伴,故转载此文,与大家共勉,原作者用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,原 ...

  3. 揭秘!双非渣本Android四年磨一剑,学习路线+知识点梳理

    第一次观看我文章的朋友,可以关注.点赞.转发一下,每天分享各种干货技术和程序猿趣事 由于涉及到的面试题较多导致篇幅较长,我根据这些面试题所涉及到的常问范围总结了并做出了一份学习进阶路线图​​​​​​​ ...

  4. 科班和非科班都适用的 Java 学习路线

    很多面试官在基础考察的时候都是直接是根据书来问,因为这些面试官也是从学生时代过来的,而他们可能和你看的是同一本书.也就是如果你和面试官的知识体系结构一样的话,面试官问出来的问题,你自然可以回答得很好. ...

  5. 计算机科班与非科班概述

    这些理论课是考研的重点,但对于开发而言,有用的只有数据结构的实现部分,操作系统的部分内容,数据库的应用, 计算机网络网络层及其以下的东西,应该属于网络工程师的范畴,程序员需要重点掌握的,一般也就传输层 ...

  6. 揭开程序员身上的「专业面纱」:非科班程序员,都来自哪些专业?

    [文章来源微信公众号:每天学编程] 专业选择重不重要?这几乎成了每年高考后的「全民话题」.有人说「专业决定就业」,有人说「职业无关专业」.对于程序员群体而言,大学专业对他们的职业选择发展又有着怎样的影 ...

  7. 如何看待培训机构出来的非科班程序员

    看着身边的同学和朋友的情况,有感而发,打算从各方面角度说一说这件事. 近几年,互联网创业潮让IT技术人员的需求大大增加,各类IT培训机构风生水起,办得如火如荼.大多培训机构都是以保底工资nk,年薪轻松 ...

  8. 计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路

    emm,几个月没写博客了,究其原因,还是觉得自己太菜了吧. 我从17年底开始写博客,最初只是为了记录一下自己技术生涯的一些学习细节,将某些知识,以文章的形式记录下来,内容比较随意,主要是方便以后自己回 ...

  9. 【Java面经】非科班渣硕转行及求职分享

    背景介绍 楼主某末流985渣硕一枚,磕盐不会,偶然接触了下编程,然后又稍微学了学Java,后面就走上了程序猿的道路,今年四月侥幸去菊厂实习了一波(虽然没学到东西). 秋招拿了几个一般的offer(大佬 ...

最新文章

  1. directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?
  2. 为什么会用这个工具的产品经理,越来越值钱?
  3. 【转】ARC下dealloc过程及.cxx_destruct的探究
  4. Windows7下安装配置PHP开发环境
  5. 关于反射中.getDeclaredContructor()返回构造方法顺序的问题(转)
  6. Angular服务器端渲染
  7. 暑假前挑战赛1—— A,B题解
  8. Atitit.现实生活中最好使用的排序方法-----ati排序法总结
  9. MySQL常用函数之聚合函数
  10. 端口扫描工具Zenmap超详细使用方法+使用案例(windows)
  11. 斐讯 k3 设置 虚拟服务器,斐讯K3无线中继设置教程(无线扩展)
  12. 《SteamVR2.2.0快速入门》(Yanlz+Unity+XR+OpenVR+OpenXR+SteamVR+Valve+Vive+Oculus+Quickstart+HMD+立钻哥哥++ok++)
  13. MindSpore前馈神经网络运用
  14. 【安装windows10 RTX3090 tensorflow的开发环境】
  15. 竟领先15% 解密飞行堡垒吃鸡重装版强悍性能
  16. 秦刚推荐:做流量的本质就是做用户
  17. 字符串数组大写小写互相转换
  18. 安利7个冷门好用的在线工具,每一个都足够惊艳
  19. 什么是待办事项?日常办事项清单怎么写
  20. 源生的html属性js,源生JS怎样实现todolist功能

热门文章

  1. 刚刚 我们“翻”了马斯克的办公室
  2. ppt模板如何制作微立体效果?
  3. [原创]PS制作迷彩
  4. C# 操作地址 从内存中读取写入数据(初级)
  5. 花钱购买制作精美的留言板或者留言板设计的HTML + CSS + DIV 源码
  6. 为什么那么多会声会影的注册机都有毒?
  7. Mac 数字键盘中数字键(0-9)不能用,解决方法:
  8. 电气工程和电子信息专业哪个好?
  9. (九)51单片机——DS1302时钟
  10. ACE 2005 Data Prep 数据预处理