跳转到内容

学习路线

此内容尚不支持你的语言。

本教程适合所有想要入门编程或者想系统的学习编程的人, 当然也包括没有任何编程基础的纯纯纯小白, 同时也适合学过一点点, 想要系统梳理一下知识体系的人。

  • 会基础的电脑操作, 比如下载安装软件
  • 会使用百度、Google 等搜索引擎

这一步非常重要, 一定要先选好方向, 不要盲目开始学习, 不然你大概率会放弃, 或者学了很久都不知道自己在学什么, 不知道学了能干嘛。

还有, 不要去问别人什么方向好, 什么方向有前途, 什么方向工资高, 你应该去了解每个方向是做什么的, 然后根据自己的兴趣去选择, 兴趣是最好的老师, 如果你对一个方向没有兴趣, 那么你很难坚持下去, 也很难学的好。

当然, 如果你只是单纯的想要找一份工作, 那么你可以去了解一下各个方向的就业情况, 然后选择一个就业情况比较好的方向, 但是这也不意味着你可以不考虑自己的兴趣, 如果你对一个方向没有兴趣, 那么你很难在这个方向上有深入的发展, 也很难在这个方向上有好的职业发展。

还有不要去问别人什么语言最好, 什么语言最有前途, 什么语言工资最高, 语言只是工具, 没有最好的语言, 只有最合适的语言, 你应该根据自己的方向去选择语言, 而不是根据语言去选择方向。

举个栗子, 如果你想要做前端开发, 那么你应该选择 JavaScript, 如果你想要做 iOS 开发, 那么你应该选择 Swift, 如果你想要做 Android 开发, 那么你应该选择 Kotlin, 如果你想要做后端开发, 那么你可以选择 Java、Go、Python、PHP、Node.js 等等, 如果你想要做数据科学, 那么你应该选择 Python, 如果你想要做游戏开发, 那么你可以选择 C#、C++ 等等。

当你学好了一门语言之后, 再去学习其他语言就会非常容易了, 因为语言之间的思想是相通的, 只是语法不同而已。

  • 如果你不知道自己的兴趣是什么, 那可以先从前端开始学, 因为前端的学习曲线相对来说比较平缓, 而且可以很快的看到效果, 这样可以增加你的自信心, 让你有动力继续学下去。
  • 如果你对人工智能感兴趣, 那么你可以选择 Python。
  • 如果你想要做移动端开发, 那么你可以选择 Flutter 或者 React Native。
  • 如果你想要做游戏开发, 那么你可以选择 Unity (C#) 或者 Unreal Engine (C++)。
  • 如果你想要做后端开发, 那么你可以选择 Java, Go, Node.js 等等, 这里推荐优先选择 Java 或者 Go。

这里的资源不分先后, 你可以根据自己的喜好选择适合自己的资源。

这里我推荐使用 Windows 或者 macOS, 不推荐使用 Linux 作为日常使用的操作系统, 当然如果你是一个有经验的 Linux 用户, 那么你可以忽略这一条。

如果你选择使用 Windows, 那么我推荐你使用 Windows 10 或者 Windows 11, 不推荐使用 Windows 7 或者更早的版本。

如果你选择使用 macOS, 那么我推荐你使用 macOS 10.15 (Catalina) 或者更高的版本。

为什么不推荐使用 Linux 作为日常使用的操作系统呢? 因为 Linux 作为桌面操作系统来说, 生态还不够完善, 很多软件都没有 Linux 版本, 而且很多硬件的驱动支持也不够好, 如果你是一个新手, 那么你可能会遇到很多问题, 这些问题可能会让你放弃学习编程。

但是如果你是一个有经验的 Linux 用户, 那么你可以忽略这一条, 因为你已经知道如何解决这些问题了。

当然, 如果你想要学习 Linux, 那么你可以在 Windows 上使用 WSL (Windows Subsystem for Linux) 或者使用虚拟机, 如果你使用的是 macOS, 那么你可以使用虚拟机。

如果你使用的是 Windows 10 版本 2004 以及更高 (Build 19041 and higher) 或者 Windows 11, 那么你可以使用 WSL2 (Windows Subsystem for Linux 2), WSL2 是一个在 Windows 上运行 Linux 的工具, 它可以让你在 Windows 上运行 Linux 程序, 而不需要使用虚拟机。

  1. 以管理员身份打开 PowerShell 或者 Windows 命令提示符, 然后输入以下命令:
Terminal window
wsl --install
  1. 重启电脑
  2. 打开 Microsoft Store, 搜索 Ubuntu, 然后安装 (也可以安装其他的 Linux 发行版)
  3. 打开 Ubuntu, 然后设置用户名和密码

如果安装遇到问题, 或者想要更详细的安装步骤, 可以参考微软官方文档: https://learn.microsoft.com/zh-cn/windows/wsl/install

如果想要更改 WSL 的安装位置, 可以参考这篇文章: https://www.jianshu.com/p/507357486dbf

如果你使用的是 Windows 11, 那么 WSL2 已经原生支持 GUI 应用了, 你可以直接在 WSL2 中安装 GUI 应用, 然后在 Windows 中运行。

如果你使用的是 Windows 10, 那么你需要升级到 Windows 10 版本 21H2 或者更高的版本, 并且安装 KB5014023 更新, 然后就可以使用 WSLg 运行 GUI 应用了。

参考微软官方文档: https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps

这里我推荐使用 VS Code (Visual Studio Code), 它是一个免费开源的代码编辑器, 支持非常多的编程语言, 而且有非常丰富的插件生态系统, 可以让你的开发效率大大提升。

当然如果你有自己喜欢的代码编辑器, 那么你也可以使用自己喜欢的代码编辑器, 比如 Atom, Sublime Text, Notepad++ 等等。

如果你使用的是 JetBrains 全家桶, 那也是非常不错的选择, 如果你是学生, 那么你可以免费使用 JetBrains 全家桶, 如果你是老师, 那么你也可以免费使用 JetBrains 全家桶。

  1. 访问 VS Code 官网: https://code.visualstudio.com/
  2. 点击下载按钮
  3. 安装

如果你使用的是 WSL2, 那么你需要安装 WSL 插件, 这样你就可以在 VS Code 中直接编辑 WSL2 中的文件了。

  1. 打开 VS Code
  2. 点击左侧的插件图标
  3. 搜索 WSL
  4. 安装 Remote - WSL 插件

这里我推荐一些常用的插件, 你可以根据自己的需要选择安装。

  1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code - 中文语言包
  2. GitLens - Git 增强工具
  3. Error Lens - 错误提示增强工具
  4. Codeium - 免费的代码补全工具

这里说的终端和命令行, 在 Windows 上就是 PowerShell 或者 CMD, 在 macOS 上就是终端, 在 Linux 上就是终端。

为什么要学习终端和命令行呢? 因为在开发中, 你会经常使用终端和命令行, 而且很多工具都只有命令行版本, 没有图形界面版本, 所以学习终端和命令行是非常有必要的。

可能你会觉得终端和命令行很难, 但是其实只要你掌握了常用的命令, 就可以应付大部分的开发场景了。

Windows 推荐使用 PowerShell 或者 Git Bash, 不推荐使用 CMD, 因为 CMD 的功能比较弱。

PowerShell 7 是一个跨平台的命令行 shell, 它可以在 Windows, macOS, Linux 上运行, 而且功能比 Windows 自带的 PowerShell 5.1 更加强大, 所以我推荐你安装 PowerShell 7。

  1. 访问 PowerShell 官网: https://learn.microsoft.com/zh-cn/powershell/
  2. 点击安装 PowerShell
  3. 下载安装包
  4. 安装

如果你使用的是 Windows, 那么我推荐你安装 Git Bash, 它是 Git for Windows 附带的一个命令行工具, 它可以让你在 Windows 上使用 Linux 命令。

  1. 访问 Git 官网: https://git-scm.com/
  2. 点击下载按钮
  3. 安装

安装完成之后, 你就可以在开始菜单中找到 Git Bash 了。

这里只介绍一些常用的命令, 如果你想要学习更多的命令, 可以参考微软官方文档: https://learn.microsoft.com/zh-cn/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-7.4

命令描述示例
pwd显示当前目录pwd
ls列出当前目录下的文件和目录ls
cd切换目录cd ..
mkdir创建目录mkdir test
rmdir删除目录rmdir test
touch创建文件touch test.txt
rm删除文件rm test.txt
cat查看文件内容cat test.txt
echo输出内容echo "Hello World"
clear清屏clear
history查看历史命令history
cp复制文件cp test.txt test2.txt
mv移动文件mv test.txt test2.txt
which查看命令所在位置which node
code用 VS Code 打开当前目录或文件code .

注意: 上面的有些命令在 CMD 中是不能使用的, 比如 touch, cat, which 等等, 所以我推荐你使用 PowerShell 7 或者 Git Bash。

命令描述示例
pwd显示当前目录pwd
ls列出当前目录下的文件和目录ls
cd切换目录cd ..
mkdir创建目录mkdir test
rmdir删除目录rmdir test
touch创建文件touch test.txt
rm删除文件rm test.txt
cat查看文件内容cat test.txt
echo输出内容echo "Hello World"
clear清屏clear
history查看历史命令history
cp复制文件cp test.txt test2.txt
mv移动文件mv test.txt test2.txt
which查看命令所在位置which node
code用 VS Code 打开当前目录或文件code .
man查看命令的帮助文档man ls
chmod修改文件权限chmod 755 test.sh
chown修改文件所有者chown user:user test.txt
grep在文件中搜索内容grep "hello" test.txt
find在目录中搜索文件find . -name "*.txt"
tar压缩和解压缩文件tar -czf test.tar.gz test
curl发送网络请求curl https://www.baidu.com
wget下载文件wget https://www.baidu.com
ssh远程登录ssh user@host
scp远程复制文件scp test.txt user@host:~
sudo以管理员身份运行命令sudo apt-get install git
apt-get包管理器 (Debian/Ubuntu)sudo apt-get install git
yum包管理器 (CentOS/Fedora)sudo yum install git
brew包管理器 (macOS)brew install git
  • Warp: 一个现代化的终端, AI 驱动, 支持命令补全, 智能提示等等, 非常好用, 推荐使用 (支持 macOS, Linux, 还在 Beta 测试阶段, 免费使用)
  • Tabby: 一个现代化的终端, 支持 Windows, macOS, Linux, 免费使用

Git 是一个版本控制系统, 它可以帮助你管理代码的版本, 以及多人协作开发。

为什么要学习 Git 呢? 因为在开发中, 你会经常使用 Git, 而且几乎所有的公司都在使用 Git 进行代码版本控制和协作开发, 所以学习 Git 是非常有必要的。

  1. 访问 Git 官网: https://git-scm.com/
  2. 点击下载按钮
  3. 安装

打开终端, 输入以下命令:

Terminal window
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

这里推荐一个非常好的 Git 学习游戏: https://learngitbranching.js.org/

还有一个非常好的 Git 教程: https://www.liaoxuefeng.com/wiki/896043488029600

命令描述示例
git init初始化一个 Git 仓库git init
git clone克隆一个远程仓库git clone https://github.com/username/repo.git
git status查看工作区状态git status
git add添加文件到暂存区git add .
git commit提交暂存区到本地仓库git commit -m "first commit"
git log查看提交历史git log
git diff查看文件的修改内容git diff
git branch查看分支git branch
git checkout切换分支git checkout main
git merge合并分支git merge dev
git remote查看远程仓库git remote -v
git push推送到远程仓库git push origin main
git pull拉取远程仓库git pull origin main
git fetch获取远程仓库的最新状态git fetch origin
git reset重置当前分支到指定状态git reset --hard HEAD
git stash暂存当前工作区git stash
git tag查看标签git tag

GitHub 是一个代码托管平台, 它可以让你托管你的 Git 仓库, 以及和其他人协作开发。

为什么要学习 GitHub 呢? 因为在开发中, 你会经常使用 GitHub, 而且几乎所有的开源项目都托管在 GitHub 上, 所以学习 GitHub 是非常有必要的。

  1. 访问 GitHub 官网: https://github.com/
  2. 点击 Sign up 按钮
  3. 填写注册信息
  4. 完成注册

这里推荐 GitHub 官方的 Hello World 教程: https://docs.github.com/cn/get-started/start-your-journey/hello-world

  1. 创建仓库
  2. Fork 仓库
  3. 提交 Pull Request
  4. 创建 Issue
  5. 管理仓库的设置
  6. 管理仓库的 Collaborators
  7. 管理仓库的 Teams
  8. 管理仓库的 Webhooks
  9. 管理仓库的 Secrets
  10. 管理仓库的 Environments
  • HTML: 标记语言, 用于创建网页结构
  • CSS: 样式表语言, 用于美化网页
  • JavaScript: 编程语言, 用于实现网页的交互效果
  • Java: 一门面向对象的编程语言, 非常流行, 很多公司都在使用
  • Go: 一门由 Google 开发的编程语言, 语法简单, 性能优秀, 越来越多的公司在使用
  • Python: 一门简单易学的编程语言, 非常适合初学者, 同时也是人工智能领域的首选语言
  • Node.js: 一个基于 Chrome V8 引擎的 JavaScript 运行时, 可以让 JavaScript 运行在服务端
  • Kotlin: 一门由 JetBrains 开发的编程语言, 可以编译成 Java 字节码, 也可以编译成 JavaScript, 也可以编译成本地代码
  • Rust: 一门由 Mozilla 开发的编程语言, 内存安全, 性能优秀, 但是学习曲线比较陡峭
  • Flutter: 一个由 Google 开发的移动端 UI 框架, 可以使用 Dart 语言开发 iOS 和 Android 应用
  • React Native: 一个由 Facebook 开发的移动端 UI 框架, 可以使用 JavaScript 开发 iOS 和 Android 应用
  • Swift: 一门由 Apple 开发的编程语言, 用于开发 iOS, macOS, watchOS, tvOS 应用
  • Kotlin: 一门由 JetBrains 开发的编程语言, 用于开发 Android 应用
  • Unity: 一个跨平台的游戏引擎, 可以使用 C# 语言开发游戏
  • Unreal Engine: 一个跨平台的游戏引擎, 可以使用 C++ 语言开发游戏
  • Godot: 一个跨平台的游戏引擎, 可以使用 GDScript 语言开发游戏
  • Python: 一门简单易学的编程语言, 非常适合初学者, 同时也是人工智能领域的首选语言
  • R: 一门用于统计计算和统计制图的编程语言, 非常适合数据科学领域
  • Julia: 一门高性能的编程语言, 非常适合科学计算领域
  1. 学习 HTML 和 CSS
  2. 学习 JavaScript
  3. 学习 Git 和 GitHub
  4. 学习一门前端框架 (React, Vue, Angular 等等)
  5. 学习一门前端构建工具 (Webpack, Vite 等等)
  6. 学习一门 CSS 预处理器 (Sass, Less, Stylus 等等)
  7. 学习一门 CSS 框架 (Tailwind CSS, Bootstrap, Element UI 等等)
  8. 学习一门前端状态管理工具 (Redux, MobX, Vuex 等等)
  9. 学习一门前端路由工具 (React Router, Vue Router 等等)
  10. 学习一门前端 UI 组件库 (Ant Design, Element UI, Vant 等等)
  11. 学习一门前端测试工具 (Jest, Mocha, Jasmine 等等)
  12. 学习一门前端性能优化工具 (Lighthouse, WebPageTest 等等)
  13. 学习一门前端安全工具 (OWASP ZAP, Burp Suite 等等)
  14. 学习一门前端部署工具 (Docker, Kubernetes 等等)
  15. 学习一门前端监控工具 (Sentry, LogRocket 等等)
  1. 学习一门编程语言 (Java, Go, Python, Node.js 等等)
  2. 学习 Git 和 GitHub
  3. 学习计算机网络
  4. 学习操作系统
  5. 学习数据库 (MySQL, PostgreSQL, MongoDB 等等)
  6. 学习一门后端框架 (Spring Boot, Django, Flask, Gin, Express 等等)
  7. 学习一门中间件 (Redis, RabbitMQ, Kafka 等等)
  8. 学习一门搜索引擎 (Elasticsearch, Solr 等等)
  9. 学习一门网关 (Nginx, Kong 等等)
  10. 学习一门容器技术 (Docker, Kubernetes 等等)
  11. 学习一门 CI/CD 工具 (Jenkins, GitLab CI, GitHub Actions 等等)
  12. 学习一门测试工具 (JUnit, pytest, Jest 等等)
  13. 学习一门性能优化工具 (JMeter, Gatling 等等)
  14. 学习一门安全工具 (OWASP ZAP, Burp Suite 等等)
  15. 学习一门监控工具 (Prometheus, Grafana 等等)
  16. 学习一门日志工具 (ELK, Loki 等等)
  1. 学习一门编程语言 (Dart, JavaScript, Swift, Kotlin 等等)
  2. 学习 Git 和 GitHub
  3. 学习一门移动端框架 (Flutter, React Native 等等)
  4. 学习一门移动端 UI 组件库 (Element UI, Vant 等等)
  5. 学习一门移动端状态管理工具 (Redux, MobX, Vuex 等等)
  6. 学习一门移动端路由工具 (React Router, Vue Router 等等)
  7. 学习一门移动端测试工具 (Jest, Mocha, Jasmine 等等)
  8. 学习一门移动端性能优化工具 (Lighthouse, WebPageTest 等等)
  9. 学习一门移动端安全工具 (OWASP ZAP, Burp Suite 等等)
  10. 学习一门移动端部署工具 (Docker, Kubernetes 等等)
  11. 学习一门移动端监控工具 (Sentry, LogRocket 等等)
  1. 学习一门编程语言 (C#, C++, GDScript 等等)
  2. 学习 Git 和 GitHub
  3. 学习一门游戏引擎 (Unity, Unreal Engine, Godot 等等)
  4. 学习一门游戏 UI 框架 (Unity UI, Unreal Motion Graphics 等等)
  5. 学习一门游戏物理引擎 (Unity Physics, Unreal Engine Physics 等等)
  6. 学习一门游戏动画系统 (Unity Animation, Unreal Engine Animation 等等)
  7. 学习一门游戏音频系统 (Unity Audio, Unreal Engine Audio 等等)
  8. 学习一门游戏 AI 系统 (Unity AI, Unreal Engine AI 等等)
  9. 学习一门游戏网络系统 (Unity Network, Unreal Engine Network 等等)
  10. 学习一门游戏测试工具 (Unity Test Framework, Unreal Engine Test Framework 等等)
  11. 学习一门游戏性能优化工具 (Unity Profiler, Unreal Engine Profiler 等等)
  12. 学习一门游戏部署工具 (Docker, Kubernetes 等等)
  13. 学习一门游戏监控工具 (Sentry, LogRocket 等等)
  1. 学习一门编程语言 (Python, R, Julia 等等)
  2. 学习 Git 和 GitHub
  3. 学习数学基础 (线性代数, 概率论, 数理统计 等等)
  4. 学习一门数据分析工具 (NumPy, Pandas 等等)
  5. 学习一门数据可视化工具 (Matplotlib, Seaborn 等等)
  6. 学习一门机器学习库 (Scikit-learn, TensorFlow, PyTorch 等等)
  7. 学习一门深度学习库 (TensorFlow, PyTorch, Keras 等等)
  8. 学习一门自然语言处理库 (NLTK, SpaCy, Hugging Face 等等)
  9. 学习一门计算机视觉库 (OpenCV, Pillow 等等)
  10. 学习一门数据挖掘工具 (Spark, Flink 等等)
  11. 学习一门数据仓库工具 (Hive, Presto 等等)
  12. 学习一门数据管道工具 (Airflow, Luigi 等等)
  13. 学习一门数据版本控制工具 (DVC, Pachyderm 等等)
  14. 学习一门数据建模工具 (MLflow, Kubeflow 等等)
  15. 学习一门数据部署工具 (Docker, Kubernetes 等等)
  16. 学习一门数据监控工具 (Prometheus, Grafana 等等)

计算机基础是非常重要的, 如果你想要成为一名优秀的程序员, 那么你必须要学好计算机基础。

学习编程最好的方式就是实战, 只有通过实战, 你才能真正的掌握所学的知识。

  1. 个人博客
  2. 待办事项应用
  3. 天气预报应用
  4. 计算器
  5. 时钟
  6. 井字棋游戏
  7. 贪吃蛇游戏
  8. 俄罗斯方块游戏
  9. 图片轮播
  10. 表单验证
  11. 分页组件
  12. 模态框组件
  13. 下拉选择组件
  14. 日期选择组件
  15. 表格组件
  16. 树形组件
  17. 图表组件
  18. 地图组件
  19. 富文本编辑器
  20. Markdown 编辑器
  1. 个人博客系统
  2. 待办事项 API
  3. 用户管理系统
  4. 权限管理系统
  5. 文件上传下载系统
  6. 邮件发送系统
  7. 短信发送系统
  8. 消息推送系统
  9. 定时任务系统
  10. 分布式锁
  11. 分布式事务
  12. 分布式 ID 生成器
  13. 分布式缓存
  14. 分布式会话
  15. 分布式搜索
  16. 分布式日志
  17. 分布式监控
  18. 分布式链路追踪
  19. 分布式配置中心
  20. 分布式服务注册与发现
  1. 个人博客系统
  2. 待办事项应用
  3. 论坛系统
  4. 电商系统
  5. 在线教育系统
  6. 在线医疗系统
  7. 在线金融系统
  8. 在线旅游系统
  9. 在线餐饮系统
  10. 在线电影系统
  11. 在线音乐系统
  12. 在线阅读系统
  13. 在线直播系统
  14. 在线游戏系统
  15. 在线办公系统
  16. 在线客服系统
  17. 在线考试系统
  18. 在线问卷系统
  19. 在线投票系统
  20. 在线抽奖系统

参与开源项目是提升自己的一个非常好的方式, 通过参与开源项目, 你可以学习到别人的代码风格, 以及别人的设计思想, 同时也可以提升自己的代码质量, 以及自己的沟通能力。

  1. 找到一个自己感兴趣的开源项目
  2. 阅读项目的文档, 了解项目的功能
  3. 阅读项目的代码, 了解项目的实现
  4. 找到项目的 Issue 列表, 找到一个自己可以解决的 Issue
  5. Fork 项目
  6. 在自己的 Fork 中修复 Issue
  7. 提交 Pull Request
  8. 等待项目维护者的审核
  9. 如果有问题, 根据维护者的反馈进行修改
  10. 如果通过了审核, 那么你的代码就会被合并到主分支

写博客是提升自己的一个非常好的方式, 通过写博客, 你可以整理自己的知识, 同时也可以帮助别人, 让自己的知识更加深入。

  1. 选择一个博客平台 (WordPress, Hexo, Hugo, VuePress 等等)
  2. 选择一个域名 (可选)
  3. 选择一个托管平台 (GitHub Pages, Vercel, Netlify 等等)
  4. 开始写博客
  5. 定期更新博客
  6. 分享博客到社交媒体

刷算法题是提升自己的一个非常好的方式, 通过刷算法题, 你可以提升自己的逻辑思维能力, 以及自己的编码能力, 同时也可以为面试做准备。

  1. 数组
  2. 链表
  3. 队列
  4. 哈希表
  5. 字符串
  6. 双指针
  7. 滑动窗口
  8. 位运算
  9. 数学
  10. 递归
  11. 分治
  12. 动态规划
  13. 贪心
  14. 回溯
  15. 并查集
  16. 字典树
  17. 线段树
  18. 树状数组
  19. 字符串匹配
  20. 排序
  21. 搜索

看技术书籍是提升自己的一个非常好的方式, 通过看技术书籍, 你可以系统的学习一个知识, 而不是零散的学习。

看技术视频是提升自己的一个非常好的方式, 通过看技术视频, 你可以直观的学习一个知识, 而不是通过文字来学习。

参加技术社区是提升自己的一个非常好的方式, 通过参加技术社区, 你可以认识很多志同道合的人, 以及学习到别人的经验。

参加技术会议是提升自己的一个非常好的方式, 通过参加技术会议, 你可以认识很多志同道合的人, 以及学习到最新的技术。

参加技术比赛是提升自己的一个非常好的方式, 通过参加技术比赛, 你可以锻炼自己的能力, 以及学习到别人的经验。

简历是面试的第一关, 你的简历必须要有吸引力, 不然你连面试的机会都没有。

  1. 个人信息
  2. 联系方式
  3. 教育经历
  4. 工作经历
  5. 项目经历
  6. 技能列表
  7. 获奖经历
  8. 开源贡献
  9. 博客链接
  10. 其他
  1. 简历不要太长, 最好一页
  2. 简历不要有语法错误
  3. 简历不要有拼写错误
  4. 简历不要有虚假信息
  5. 简历不要太花哨
  6. 简历不要使用奇怪的字体
  7. 简历不要使用奇怪的颜色
  8. 简历不要使用奇怪的格式
  9. 简历不要使用奇怪的模板
  10. 简历不要使用奇怪的图片

面试的基础知识非常重要, 你必须要掌握好基础知识, 不然你很难通过面试。

  1. OSI 七层模型
  2. TCP/IP 四层模型
  3. TCP 和 UDP 的区别
  4. TCP 的三次握手和四次挥手
  5. TCP 的流量控制和拥塞控制
  6. HTTP 和 HTTPS 的区别
  7. HTTP 的方法
  8. HTTP 的状态码
  9. Cookie 和 Session 的区别
  10. DNS 的工作原理
  11. ARP 的工作原理
  12. ICMP 的工作原理
  13. DHCP 的工作原理
  14. NAT 的工作原理
  15. 正向代理和反向代理的区别
  16. 负载均衡的原理
  17. CDN 的原理
  18. DNS 解析的过程
  19. 输入 URL 到页面显示的过程
  20. 跨域的解决方案
  1. 进程和线程的区别
  2. 进程的状态
  3. 进程间通信的方式
  4. 线程间通信的方式
  5. 死锁的条件
  6. 死锁的预防
  7. 死锁的避免
  8. 死锁的检测
  9. 死锁的解除
  10. 内存管理的方式
  11. 虚拟内存的原理
  12. 页面置换算法
  13. 磁盘调度算法
  14. 文件系统的原理
  15. 硬链接和软链接的区别
  16. 中断的原理
  17. 系统调用的原理
  18. 上下文切换的原理
  19. 调度算法
  20. 同步和互斥的原理
  1. 数据库的三大范式
  2. 数据库的事务
  3. 事务的 ACID 特性
  4. 事务的隔离级别
  5. 数据库的锁
  6. 数据库的索引
  7. 索引的类型
  8. 索引的原理
  9. 索引的优化
  10. SQL 的优化
  11. 数据库的分库分表
  12. 数据库的主从复制
  13. 数据库的读写分离
  14. 数据库的容灾备份
  15. 数据库的性能优化
  16. NoSQL 和 SQL 的区别
  17. CAP 定理
  18. BASE 理论
  19. 数据库的一致性
  20. 数据库的分布式事务
  1. 数组和链表的区别
  2. 栈和队列的区别
  3. 哈希表的原理
  4. 字符串匹配算法
  5. 排序算法
  6. 二分查找
  7. 双指针
  8. 滑动窗口
  9. 位运算
  10. 数学
  11. 递归
  12. 分治
  13. 动态规划
  14. 贪心
  15. 回溯
  16. 并查集
  17. 字典树
  1. 单例模式
  2. 工厂模式
  3. 抽象工厂模式
  4. 建造者模式
  5. 原型模式
  6. 适配器模式
  7. 桥接模式
  8. 组合模式
  9. 装饰器模式
  10. 外观模式
  11. 享元模式
  12. 代理模式
  13. 策略模式
  14. 模板方法模式
  15. 观察者模式
  16. 迭代器模式
  17. 责任链模式
  18. 命令模式
  19. 备忘录模式
  20. 状态模式
  21. 访问者模式
  22. 中介者模式
  23. 解释器模式
  24. 空对象模式

项目经验是面试的重点, 你必须要准备好自己的项目经验, 不然你很难通过面试。

  1. 准备 2-3 个自己最熟悉的项目
  2. 准备项目的背景
  3. 准备项目的功能
  4. 准备项目的技术栈
  5. 准备项目的架构
  6. 准备项目的难点
  7. 准备项目的解决方案
  8. 准备项目的优化
  9. 准备项目的成果
  10. 准备项目的个人贡献
  1. 项目的背景
  2. 项目的功能
  3. 项目的技术栈
  4. 项目的架构
  5. 项目的难点
  6. 项目的解决方案
  7. 项目的优化
  8. 项目的成果
  9. 项目的个人贡献

算法题是面试的重点, 你必须要准备好算法题, 不然你很难通过面试。

  1. 刷 LeetCode
  2. 刷剑指 Offer
  3. 刷编程之美
  4. 刷牛客网
  5. 刷左程云的算法课
  6. 刷极客时间的算法课
  7. 刷拉勾教育的算法课
  8. 刷 Coursera 的算法课
  9. 刷 edX 的算法课
  10. 刷 MIT 的算法课
  1. 数组
  2. 链表
  3. 队列
  4. 哈希表
  5. 字符串
  6. 双指针
  7. 滑动窗口
  8. 位运算
  9. 数学
  10. 递归
  11. 分治
  12. 动态规划
  13. 贪心
  14. 回溯
  15. 并查集
  16. 字典树
  17. 线段树
  18. 树状数组
  19. 字符串匹配
  20. 排序
  21. 搜索

系统设计是面试的重点, 你必须要准备好系统设计, 不然你很难通过面试。

  1. 学习系统设计的基础知识
  2. 学习系统设计的案例
  3. 练习系统设计的题目
  4. 看系统设计的书籍
  5. 看系统设计的视频
  6. 看系统设计的博客
  7. 参加系统设计的讨论
  8. 参加系统设计的比赛
  9. 参加系统设计的面试
  10. 总结系统设计的经验
  1. 理解需求
  2. 定义系统的功能
  3. 定义系统的非功能需求
  4. 定义系统的约束
  5. 定义系统的假设
  6. 定义系统的范围
  7. 定义系统的架构
  8. 定义系统的模块
  9. 定义系统的接口
  10. 定义系统的数据模型
  11. 定义系统的数据流
  12. 定义系统的控制流
  13. 定义系统的错误处理
  14. 定义系统的性能
  15. 定义系统的可扩展性
  16. 定义系统的可用性
  17. 定义系统的可靠性
  18. 定义系统的安全性
  19. 定义系统的可维护性
  20. 定义系统的可部署性

行为面试是面试的重点, 你必须要准备好行为面试, 不然你很难通过面试。

  1. 了解行为面试的原理
  2. 了解行为面试的常见问题
  3. 准备行为面试的答案
  4. 练习行为面试的答案
  5. 总结行为面试的经验
  1. 介绍一下你自己
  2. 为什么想要来我们公司
  3. 为什么想要换工作
  4. 你对我们公司有什么了解
  5. 你对这个职位有什么了解
  6. 你的优点是什么
  7. 你的缺点是什么
  8. 你最大的成就是什么
  9. 你最大的失败是什么
  10. 你遇到的最大的困难是什么
  11. 你如何解决这个困难
  12. 你如何和团队合作
  13. 你如何和领导合作
  14. 你如何和同事合作
  15. 你如何处理冲突
  16. 你如何处理压力
  17. 你如何处理批评
  18. 你如何处理失败
  19. 你如何处理成功
  20. 你未来的职业规划是什么

薪资谈判是面试的最后一步, 你必须要准备好薪资谈判, 不然你可能会吃亏。

  1. 了解市场行情
  2. 了解公司的薪资范围
  3. 了解自己的价值
  4. 准备好自己的期望薪资
  5. 准备好自己的底线薪资
  6. 准备好自己的谈判策略
  7. 练习薪资谈判
  8. 总结薪资谈判的经验
  1. 不要先开口说薪资
  2. 不要接受第一个薪资
  3. 不要把薪资作为唯一的考虑因素
  4. 要了解公司的福利
  5. 要了解公司的晋升机会
  6. 要了解公司的培训机会
  7. 要了解公司的工作环境
  8. 要了解公司的工作时间
  9. 要了解公司的假期
  10. 要了解公司的其他福利

编程是一个需要持续学习的行业, 你必须要不断的学习新的知识, 不然你就会被淘汰。

  1. 制定学习计划
  2. 每天学习一点
  3. 做笔记
  4. 写博客
  5. 做项目
  6. 参与开源项目
  7. 参加技术社区
  8. 参加技术会议
  9. 参加技术比赛
  10. 总结经验
  1. 保持好奇心
  2. 保持耐心
  3. 保持坚持
  4. 保持谦逊
  5. 保持开放
  6. 保持积极
  7. 保持乐观
  8. 保持专注
  9. 保持思考
  10. 保持实践

学习编程是一个漫长的过程, 你必须要保持耐心, 保持坚持, 保持好奇心, 保持学习的态度, 才能成为一名优秀的程序员。

如果你有任何问题, 或者想要交流, 或者想要分享你的学习经验, 欢迎在评论区留言。

如果你觉得这篇文章对你有帮助, 欢迎点赞、收藏、转发。

谢谢你的阅读。

t1