工作快一年了,工作内容涉及到log收集、应用的部署和维护、后端开发等,这里结合网络上的相关知识点总结下后端开发需要掌握的知识点。以此评估自己的技能水平,也是自身发展的一种引导。PS:后续会不断完善。
元知识
获取其它知识的知识和方法,可以通过这些知识,获取下面的知识和技能。
- Google search
- StackOverFlow
- GitHub
- Quora
- Packt
- https://www.ibm.com/developerworks
基础
- 操作系统
- 进程/线程
- 并发/异步/同步
- IO
- 计算机网络
- HTTP协议
- 四层网络模型
- 三次握手/四次握手
- SSL/TLS
- TCP/UDP/Socket
- 数据结构和算法
- 时间复杂度/空间复杂度
- ADT(抽象数据类型)
- 栈
- 队列
- 堆
- 排序
- 树
- 图
- 递归
- 动态规划
- LeetCode
语言
- 语言的通用知识点(理解原理)
- 解释型语言/编译型语言
- 静态类型/动态类型
- 类型系统
- 基本数据类型
- 可变数据类型/不可变数据类型
- 参数的引用传递/副本传递
- 条件语句
- if else
- switch
- for
- while
- 逻辑表达式
- &
- ||
- !
- 面向对象/面向过程
- 类和对象(实例)
- 属性/状态
- 方法/函数
- 内存模型
- 程序执行时是如何在内存中分配的
- 堆和栈
- 递归时的内存分配
- 符号表
- 访问控制
- public/private/protect—Java
- __init__,__all__,_func—Python
- Public,private—Golang
- os/sys/io/net/stdin|out|err等模块熟练掌握
- 输入/输出
- db模块
- 字符串处理
- 并发/多线程
- 并行/多进程
- 异步/同步
对于语言学习,熟悉以上知识就可以开发应用了,重点是学习认识不同语言自身的优缺点,想Golang中的协程、对并发的支持,Python的开发效率和简洁等。
数据库
- SQL
- MySQL
- NoSQL
- Cassandra
- MongoDB
- Redis
- Memcache
- ORM
熟悉MySQL原理,分库分表,主从架构
工具
- Git
- Shell/Bash/Zsh
- Vim
- vscode/atom
- chrome
- Linux
- Docker
- Ansible
工程实践
- 编码规范(JSLint/各种Lint)
- 测试
- 单元测试
- 集成测试
- 黑盒测试
- AB测试
- 代码分析(Code Climate)
- 构建工具
- Makefile
- shell scripts
- CICD
- Jenkins
软技能
- 沟通交流
- 百度脑图
- 思维导图
- Blog
总结
本文主要是对自己工作中内容的总结,这篇文章还需要不断修改和打磨,文末会列出几个参考网站,以供读者参考。
- 知道创宇研发技能表v3.0:http://blog.knownsec.com/Knownsec_RD_Checklist/v3.0.html