一种典型的开发要求--后端开发需要的技能
来源于:https://mp.weixin.qq.com/s/0c16oG4I-16IfoPoFOeuBQ
I、后端开发将复杂问题拆解成小模块,再抽象成对应的数据结构,最后进行存储和数据动态流转。
完成基本功能之后就需要面临更高用户量、更端响应时间、更稳定运行这些高阶目标,也就是常说的高并发&高可用。
日常开发过程中是如何运用上面这些点的:
- 编程语言:我们使用Go来写代码,使用某种数据结构来完成行为抽象
- 存储系统:我们把数据持久化存储到MySQL,同时使用Redis作为缓存来加速响应
- 网络技术:我们的编写的程序要依赖别的服务,通过微服务框架来实现相互通信
- 操作系统:我们把完成的程序通过自动化部署到运行Linux系统的服务器上
- 网络通信:外部用户使用手机通过移动互联网HTTP请求与我们的服务交互数据,同时为了提高响应我们会部署CDN
- 日志系统:我们的程序上线后会打印日志,需要日志收集&检索系统来帮助我们定位问题
- 监控体系:有时候会有问题,需要一套时序数据库完成记录异常触发报警系统
- 分布式和容灾:随着用户的增多,我们开始多机房部署进行扩容和容灾处理
硬技能
- 编程语言的掌握:Java、C++、Golang、Python等一个或多个
- 操作系统原理的掌握:Linux/Unix、计算机原理
- 常用数据结构和算法:数据结构(数组/链表/树等)、算法(动态规划/贪心/回溯等)
- 存储系统:MySQL、Redis、MongoDB等关系型&非关系型数据库
- 组件:消息队列(kafka、rocketmq等)、检索系统(ES、ClickHouse等)
- 网络编程:TCP/IP协议的理解、网络库的使用
- 服务端编程:多进程、多线程、协程、服务端框架等
软技能
- 学习能力要求:自驱能力(主动学习&自我驱动)、刨根问底、结果导向
- 沟通协作能力:能把事情讲清楚,让伙伴明白,看着简单实则很难
II、具体的知识点:
一、编程语言
1、C语言
举例:static关键字 静态变量(修饰局部变量,作用域是局部作用域的,可见域在函数内;修饰全局变量,作用域在本文件内,可见域在文件内;修饰函数,作用域在本文件内)
内存中存储数据区的解释:https://blog.csdn.net/jirryzhang/article/details/79518408
二、操作系统(Linux/Unix、计算机原理)
三、数据结构和算法
1、数据结构和算法汇总:https://www.cnblogs.com/flashsun/p/10695000.html
2、二叉树:https://www.cnblogs.com/sujing/p/11110292.html
四、存储系统(MySQL、Redis、MongoDB等关系型&非关系型数据库)
数据库中的二叉树应用:https://xuliugen.blog.csdn.net/article/details/79450295?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_paycolumn_v3&utm_relevant_index=9
五、网络编程(TCP/IP协议的理解、网络库的使用)
1、图解网络:https://www.cnblogs.com/flashsun/p/14266148.html
2、图解TCP:https://www.cnblogs.com/flashsun/p/14322660.html
六、多线程编程
1、图解线程池:https://www.cnblogs.com/flashsun/p/14368520.html
2、线程安全:https://www.cnblogs.com/lixinjie/p/a-answer-about-thread-safety-in-a-interview.html
七、组件(消息队列(kafka、rocketmq等)、检索系统(ES、ClickHouse等))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通