最近看了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 |
设计模式 | 软件架构,大量运用在第三方库 |
软件测试 | 测试思维,有助于提高项目稳定性 |
产品 | 技术只是实现方式,做成什么样才是最重要的,万物皆产品 |
最核心的内容
操作系统、数据结构、网络和设计模式