最近看了Github上一位大佬分享的学习路线,Coding Interview University ,如何成为软件工程师,在他基础上加上本人的体会,整理了这篇学习路线,希望可以不断完善。完全适合0基础入门。

写在前面

能翻墙的最好翻墙,Youtube、Google都有更优质内容。让我们开始吧。

1.启蒙

计算机科学速成课 ,一共40集,让你对计算机科学有大概了解,计算机的历史、现在和未来发展,看完之后你的大脑对计算机会有清晰的轮廓,以后写Hello word也明白是怎么回事。从此,计算机的种子种在了你心里。

2.计算机组成原理

计算机组成原理 ,对上述视频更细化的学习,认识计算机硬件及其原理。包括逻辑运算、总线等知识。

3.操作系统

操作系统 ,认识操作系统,了解进程、线程、同步互斥等概念。

Linux操作入门 ,命令行、shell、权限等相关知识、非常重要。

4.C语言

为什么是C语言,因为学完上面的知识,你最能理解C语言。

C语言视频教程 ,配合Github上的项目练手。

顺便了解编译原理,当做科普。

5.计算机网络

网络编程 ,了解TCP/IP以及相关网络知识。

6.数据结构和算法

基于C语言的 数据结构和算法 ,入门级,以后还需要再深入。无论哪个方向,想成为高级工程师必须要算法好。

比如图片、视频、压缩等算法。

7.数据库

使用篇:MySQL

高级篇:深入原理

8.设计模式

负责软件架构。推荐大话设计模式。

9.分方向

有了以上基础知识,接下来就可以开始针对方向 ,任何感兴趣的都可以学习和尝试。

你会发现都不难。学习方式和C语言相同,视频、官网和Demo,总之多练习。

基础: 版本控制(Git、SVN)、测试(单元测试、Mock)

前端:HTML5、CSS、JavaScript、Vue…

后台:Java、Go、MySQL、Redis、分布式、微服务…

Android: Java、Kotlin、布局、控件、图片、视频、Gradle…

IOS: Objective-C、Swift、布局、控件、图片、视频…

Windows: C#、.net、布局、控件…

游戏: Unity3D、Cocos2D…

持续集成:Python、Docker、Jenkins、K8S…

其他:大数据、区块链、云计算、神经网络、机器学习,一路前行,没有尽头…

关于练习的Demo

直接在搜索引擎里或者Github搜索XX入门项目即可。

然后找到简单的项目,先看懂,然后抄一篇,最后自己扩充。

要做总结,市场上的教程大都是偏入门,运用比较少。

一定要多做项目。看开源项目。

10.总结

主要围绕以下个主题(下面的黑体字)进行循环学习。

从了解、熟悉再到可以手动写出来

专题 说明
启蒙 用于启蒙,了解
数学基础 程序员的数学1,2,3
LeetCode刷题
语言基础 C语言,编译器
嵌入式编程 硬件基础, 编译原理,裸机编程:比如单片机等等
操作系统 原理
Linux使用
写一个操作系统
计算机网络 网络的组成和各种协议
数据结构与算法 数组和链表为基础的多种数据结构
数据库 原理
日常使用
编程语言:Java、Python、Go
计算机图形学 渲染原理
Web
Android
IOS
Flutter
设计模式 软件架构,大量运用在第三方库
软件测试 测试思维,有助于提高项目稳定性
产品 技术只是实现方式,做成什么样才是最重要的,万物皆产品

最核心的内容
操作系统、数据结构、网络和设计模式