服务端技术栈知识体系

Share on:
200 Words | Read in about 1 Min | View times

本人大学专业是软件工程(数字媒体技术),目前从事游戏服务端开发,在工作中也会经常面试候选人。结合大学计算机知识、工作经验和面试经历,本人总结了适合服务端开发的技术栈知识体系。

本系列文章的特点是重点解析知识背后的原理,而不止是停留在使用层面。我认为知其然而不知其所以然是不可取的,我们要在学习实践的过程中搞懂每一个技术点背后的细节,才能称得上掌握了这项技术。本系列文章希望能帮助愿意在计算机编程领域挖掘背后原理的同学,同时也不断激励我继续深入学习。

阅读本系列文章适合具备一定计算机编程基础的同学。

本系列文章将包括以下领域:

这些问题如果全部吃透,就能在面试、工作中解决大部分问题。服务端技术栈知识体系的大纲请看下图:

服务端技术栈知识体系

数据结构与算法

数据结构

  • 数组、链表
  • 栈、堆、队列
  • 字典
  • 树:BST、AVL、RB、B/B+、Tie

排序算法

  • 选择排序
  • 插入排序
  • 冒泡排序
  • 快速排序
  • 归并排序
  • 堆排序
  • 希尔排序

算法

  • 分治法
  • 二分查找
  • DFS、BFS
  • 贪心算法
  • 动态规划
  • 滑动窗口: 双指针、快慢指针

操作系统

Linux常见命令

  • ss、ifconfig、netstat、traceroute、telnet
  • vim、cat、touch、more、less、head、tail
  • top、vmstat、sar、mpstat、iostat、dstat

文件与文件系统

  • 文件结构、文件类型
  • 文件权限
  • VFS

内存与虚拟内存

  • 虚拟内存、虚拟地址空间
  • 内存分段
  • 内存分页
  • 段页式管理
  • 内存交换、页面置换算法
  • 空闲内存管理

进程、线程、协程

  • 进程、线程、协程的比较
  • 进程通信方式:信号、信号量、管道/命名管道、Socket、共享内存、消息队列
  • 线程同步方式:锁机制(互斥体、条件变量、读写锁)、信号量、信号

内核空间与用户空间

  • 内核空间、用户空间的比较
  • 进程用户态、内核态

CPU调度算法

  • FIFO
  • 最短作业优先
  • 最短剩余时间优先

死锁

  • 资源
  • 死锁、死锁检测、死锁恢复、死锁避免

网络

OSI七层模型、TCP/IP四层模型

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

网络协议

  • TCP三握四挥
  • TCP状态机:CLOSE_WAIT、TIME_WAIT
  • 连接的含义
  • TCP可靠性保证:校验和、确认机制、重传机制、拥塞控制、流量控制
  • TCP、UDP的比较
  • TCP、KCP的比较
  • HTTPS TLS握手过程
  • CA、证书、证书链

I/O模型

  • 同步I/O、异步I/O
  • 阻塞I/O、非阻塞I/O
  • I/O多路复用

select、poll、epoll

  • select、poll、epoll的比较
  • epoll水平触发、边缘触发

reactor模型、proactor模型

  • libevent分析
  • netty分析

网络字节序

  • 大端、小端

数据库

关系型数据库的判定依据

  • 三范式

MySQL存储引擎与底层数据结构

  • B+树
  • InnoDB、MyISAM存储方式的区别

MySQL索引

  • 聚簇索引
  • 非聚簇索引

MySQL事务特性

  • ACID
  • 原子性的实现原理:Undo Log
  • 持久性的实现原理:Redo Log
  • 隔离性的实现原理:事务的隔离级别、MVCC
  • 一致性的实现原理:原子性+持久性+隔离性

MySQL锁机制

  • 表锁、行锁、页锁、间隙锁
  • 死锁

SQL内外连接

  • 内连接:左右都匹配
  • 左外连接:左全体+右匹配
  • 右外连接:右全体+左匹配
  • 全外连接:左全体+右全体
  • 交叉连接:笛卡尔积

Redis数据结构与底层实现

  • String:int、embstr、raw
  • List:ziplist、linked list
  • Hash: ziplist、hashtable
  • Set: hashtable、intset
  • ZSet:ziplist、skiplist

Redis持久化与原理

  • RDB
  • AOF

Redis单线程实现的优势

Redis集群与主从复制

  • 集群
  • Gossip协议:MEET、PING、PONG、FAIL、PUBLISH
  • 哨兵机制: Raft一致性算法

RESP协议

应用技术

protobuf

  • pb协议的优缺点
  • pb协议的实现:T-L-V

JWT

  • JWT结构
  • JWT适用范围

Cron表达式

MVC与MVVM

unicode与utf-8

  • unicode编码
  • utf-8实现原理

分布式系统设计

高可用方案

  • Zookeeper
  • 哨兵机制

消息队列

  • Kafka:Broker、Topic、Partition

悲观锁

  • 互斥锁
  • 自旋锁
  • 读写锁:读优先锁、写优先锁、公平读写锁

乐观锁

无锁机制

  • CAS
  • CAS的缺点:ABA问题

分布式锁

  • Redlock

缓存穿透、缓存击穿、缓存雪崩

  • 缓存穿透、缓存击穿、缓存雪崩的区别
  • 解决方法

一致性哈希算法

编译原理

gcc工作流程

  • 预编译/预处理、编译、汇编、链接、装入

静态库与动态库

静态链接与动态链接

内部链接与外部链接

软件工程

设计模式

  • 六大原则:单一职责原则、开闭原则、里氏替换法则、依赖倒置原则、接口隔离原则、迪米特原则
  • 23种设计模式
Prev Post: 『SSL certificate and nginx config』