C++ 后端开发工程师的技术栈整理
C++ 后台开发岗位知识技能树
一、语言:
a)C/C++ 语言,对象生命周期,垃圾回收,标准库,错误与异常的处理,日志,面向对象的理解,设计模式,GDB的使用,代码高内聚低耦合
二、数据结构与算法:
a)线性表:链表,队列,栈 b)树:二叉树,红黑树,字典树,线段树等 c)图:图搜索,dijkstra算法,最小生成树 d)递归:回溯 e)排序:冒泡,插入,希尔,归并,快排,堆排序,桶排序 f)算法:贪心,动态规划,分治 g)跳表,散列表,布隆过滤器
《链表,队列与栈》
《排序与查找算法》
《哈希表与布隆过滤器》
《动态规划-背包问题》
三、数据库
a)持久型mySql i.MySql安装与配置 ii.Sq建表,索引,存储过程 iii.存储引擎myisam/innodb iv.数据库连接池 v.异步数据库请求 vi.数据库集群,分库分表,读写分离 b)缓存型Redis i.Redis编译安全,配置 ii.Redis命令使用 iii.Redis连接池/异步redis做法 iv.Redis集群,数据备份 v.缓存雪崩,缓存击穿
四、网络原理
a)命令:ping,telnet,ifconfig b)网络体系模型(ISO模型) c)Tcp :三次握手,四次挥手,滑动窗口,状态机 d)Udp :实时性,不带流量控制,udp的原理 e)http/https/http2.0/http3.0 f)Session,cookie,application g)网络安全,加密,数字签名 h)Wireshark抓包工具(windows),tcpdump(linux) i)Iperf(网络带宽)
五、操作系统
a)Linux使用(文件操作,系统操作) b)程序的编译,允许 c)Shell/vim的使用 d)LInux系统性能监控参数ps/netstat/ef e)进程管理 f)用户态/内核态 g)内存管理,内存池,内存泄漏 h)磁盘文件系统,虚拟文件系统,文件缓存 i)磁盘IO
六、网络编程
a)Socket编程,tcp/udp b)网络IO模型(fd),阻塞非阻塞,异步,同步 c)IO多路复用select/poll/epoll d)Epoll reactor, proactor e)Time_wait/close_wait大量 f)C0K/C000K/C0M g)网络框架的理解(libevent/libev, 协程ntyco,libco
七、分布式
a)RPC,grpc,tars,brpc,srpc(http,RPC调用) b)简单rpc协议设计/框架搭建 c)协议传输的时候,序列化反序列化 d)服务注册,服务发现, e)容灾,降级熔断,流量控制 f)高并发,高可用 g)分布式锁
八、云原生
a)了解腾讯云/阿里云 b)Docker使用 c)Docker编排,网络 d)K8s管理 九、软技能 a)沟通能力 b)组织能力 c)协调能力 d)需求分析
参考书籍:
1.MySQL 《高性能MySQL 第三版》 2.Nginx 《深入理解Nginx:模块开发与架构分析(第二版)》 3.Redis:《Redis设计与实现》 4.Linux内核:《深入Linux内核架构》 5.数据结构与算法:《算法导论》 6.性能分析:《性能之巅 洞悉系统,企业与云己算》 7.MongoDB 《MongoDB权威指南》 8.Ceph 《Cep分布式存储学习指南》 9.Docker《Docker容器与容器云》 10.TCP/IP 《Tcp/ip详解 卷一,卷二,卷三》 11.Linux系统编程《Unix高级环境编程》 12.计算机:《深入理解计算机系统》 13.ZeroMQ:《ZeroMQ:云实带极速消息通信库》 14.DPDK《深入浅出DPDK》
