后端面试
2020-02-11 11:06:23 0 举报
AI智能生成
互联网后端面试所具备的知识结构树
作者其他创作
大纲/内容
算法
数组
连续最大和、众数、中位数、重复数字
链表
链表的环入口、交叉点、复制链表
栈和队列
两个栈模拟队列、两个栈维护栈的最小值
堆
树
二叉树、树的遍历、镜像、最近公告祖先
排序
快速排序、堆排序、归并排序
剑指offer67
基础知识
操作系统
死锁
产生的四个必要条件:请求保持、不可剥夺、互斥、循环等待
inode
硬连接和软连接
select、poll、epoll
进程和线程
进程:程序关于数据集的一个运行过程,资源分配的基本单位。线程:cpu调度的基本单位
进程间通信
管道、命名管道、信号、信号量、消息队列、共享内存、套接字
线程间通信
互斥量(互斥锁、条件变量、读写锁)、信号量、信号
网络
tcp的三次握手和四次挥手
http1.0、http1.1、http2.0的区别
https的原理
非对称加密和对称加密两个过程
数据库
mysql
索引
B+树:高度是logb(N)
事务
属性
ACID
问题
更新丢失、脏读、不可重复读
隔离级别
读未提交、读提交、可重复读、序列化
实现方式
MVCC多版本并发控制
主从同步
binlog:master binlog、master binlog dump、slave io、slave sql
myisam和innodb区别
最大区别是innodb支持事务安全、行锁、外键,比较适合update比较多的
redis
五种基本类型:string、list、hash、set、zset
内部数据结构
skiplist(zset)
多级链表减少查询次数
ziplist:双向链表,存储压缩,内存块,减少内存碎片(字符串或者整数)
quicklist:双向链表,每个节点就是一个ziplist(list)
sds:可变长字符串,不同大小用不同大小的header(string)
robj(集合5种对外类型,用有数据类型和数据指针)
dict:哈希表实现,拉链法解决冲突(hash,或者zset)
分布式
一致性哈希
原理
容错和扩展
虚拟节点
分布式一致性
raft
三种状态:follower、candidate、leader
两种超时:选举超时、心跳超时
两种操作:leader选举、日志复制
请求追踪
requestid
ID生成器
构成
64bit:1(无符号)+9(modeltype)+4(region)+50(sequence)
可用性
1、TP999 1ms。2、主备切换
性能
1、qps5w/s。2、双buffer预分配段。
反向代理nginx
分布式数据库etcd
分布式锁
悲观锁、乐观锁
统一配置
统一命名服务
name:iplist
服务发现与注册
master/slave
通过etcd的lock
监控
supervisor
hadoop
节点
hdfs
git和svn的区别
语言
C/C++
虚函数和虚函数表
虚析构函数
动态析构,防止内存泄漏
static和const
从初始化、共享、作用域上考虑
C++11新特性
overide、final、线程、智能指针、for、auto、nullptr、lambda
const和define
处理阶段不同、内存分配不同
字节对齐
结构体字节对齐和联合体大小
stl中vector、list、map、set的实现
红黑树:根到叶子的黑点数都一样,导致最长的不超过最短的2倍
AVL树:左右节点的高度差不超过1
python
装饰器@
多进程和多线程的选择
全局锁,cpu密集型和io密集型
lambda表达式
类似函数,没有名字,有参数和返回
yield生成器
迭代器,执行到yield时中断并返回,下次循环执行到继续执行,xrange就是
内存管理
内存池pymalloc和malloc,引用计数
Golang
反射
TypeOf ValueOf Elem Kind Field Ptr Tag MethodByName
接口
写一个通用排序函数
defer和recover
写一个函数检查是否panic
并发
channel/select
GC
三色标记、如何减少GC
GPM模型
调度、和callback的区别
实现set
用map。value用empty struct
项目
分布式后端架构
整体架构
接入层:nginx、协议转换(grpcgateway负责http1.x和http2.0的互转)、流量负载均衡(upstream多server)
逻辑层
session验证,部分业务逻辑,避免循环依赖
数据库交互层
数据库交互,gorm,部分业务逻辑
数据库
redis
session、定时器(用于消息聚合)、短信频率限制
etcd
分布式锁:关注、id生成器
mysql
用到事务的地方:添加成员到队伍中的时候做各种操作,最后做检查有问题可以回滚
第三方接口层
极光api
wechat
业务难点
赛事树、粉丝关注离散化、评论三级结构、timeline索引、报名可重入防手抖、马甲账号设计
客户端数据同步
分布式id生成器
gorm
修复save的bug,affectrow是0就insert
支持protobuf
在序列化和反序列化的时候分别进行marshal和unmarshal
zaplog
支持按照天异步切割、压缩
多协程安全
自定义日志格式
难点
0 条评论
下一页