1.redis 基础知识及原理
2.数据库索引,事务,MVCC,分表
3.服务端socket编程
4.微信抢红包需求,怎么实现,从数据结构,到业务逻辑,到具体实现,考虑高并发分布式一些东西
http://colobu.com/2015/05/04/weixin-red-packets-design-discussion/
5.微信红包的随机算法
5.红黑树、AVL树、Hash树、Tire树、B树、B+树,bitmap,布隆过滤器
B树、B+树、红黑树:https://www.jianshu.com/p/86a1fd2d7406
红黑树的删除节点流程:
①删除节点为叶节点
②删除节点只有一个子节点(此时只存在删除节点为黑,子节点为红这一种情况)
③删除节点有两个子节点(跟平衡树一样,找到中序遍历的直接下一节点跟当前节点交换数值),变为删除这个后继节点,就成为了情况①或者②
哈希树:哈希树可以广泛应用于那些需要对大容量数据进行快速匹配操作的地方。例如:数据库索引系统、短信息中的收条匹配、大量号码路由匹配、信息过滤匹配。
参考资料:https://blog.csdn.net/yang_yulei/article/details/46337405
基数树:多用于linux下的内存管理,把页指针和描述页状态的结构映射起来,使能快速查询一个页的信息。
参考资料:https://blog.csdn.net/yang_yulei/article/details/46371975
字典树:字典树,又称为单词查找树,Tire树,是一种树形结构,它是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(不仅限于字符串),经常被搜索引擎系统用于文本词频统计。
参考资料:https://www.cnblogs.com/xujian2014/p/5614724.html
字典树的基本性质:
①根节点不包含字符,除根节点外的每一个子节点都包含一个字符
②从根节点到某一节点。路径上经过的字符连接起来,就是该节点对应的字符串
③每个节点的所有子节点包含的字符都不相同
bitmap:
1)可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下。
2)去重数据而达到压缩数据
优点:
1. 运算效率高,不进行比较和移位;
2. 占用内存少,比如最大的数MAX=10000000;只需占用内存为MAX/8=1250000Byte=1.25M。
缺点:
1. 所有的数据不能重复,即不可对重复的数据进行排序。(少量重复数据查找还是可以的,用2-bitmap)。
2. 当数据类似(1,1000,10万)只有3个数据的时候,用bitmap时间复杂度和空间复杂度相当大,只有当数据比较密集时才有优势。
参考:https://blog.csdn.net/pipisorry/article/details/62443757?utm_source=itdadao&utm_medium=referral
布隆过滤器:https://blog.csdn.net/pipisorry/article/details/64127666
6.数据库
7.计算机网络
(1)TCP报头格式/UDP报头格式
(2)TCP/UDP区别(不仅是宏观上的,最好能根据各自的机制讲解清楚)
(3)HTTP状态码(最好结合使用场景,比如在缓存命中时使用哪个)
(4)HTTP协议(一些报头字段的作用,如cace-control、keep-alive)
(5)OSI协议、TCP/IP协议以及每层对应的协议。
(6)SESSION机制、cookie机制
(7)TCP三次握手、四次挥手(这个问题真的要回答吐了,不过真的是面试官最喜欢问的,建议每天手撸一遍,而且不只是每次请求的过程,各种FIN_WAIT、TIME_WAIT状态也要掌握)。
(8)打开网页到页面显示之间的过程(涵盖了各个方面,DNS解析过程,Nginx请求转发、连接建立和保持过程、浏览器内容渲染过程,考虑的越详细越好)。
(9)http和https区别,https在请求时额外的过程,https是如何保证数据安全的
(10)IP地址子网划分
(11)POST和GET区别
(12)DNS解析过程
(13)TCP如何保证数据的可靠传输的(这个问题可以引申出很多子问题,拥塞控制慢开始、拥塞避免、快重传、滑动窗口协议、停止等待协议、超时重传机制,最好都能掌握)
(14)地址解析协议ARP
(15) 交换机和路由器的区别
(16)OSI7层模型(TCP4层)
每层的协议
url到页面的过程
(17)HTTP
http/https 1.0、1.1、2.0
get/post 以及幂等性
http 协议头相关
网络攻击(CSRF、XSS)
(18)TCP/IP
三次握手、四次挥手
拥塞控制(过程、阈值)
流量控制与滑动窗口
TCP与UDP比较
子网划分(一般只有笔试有)
DDos攻击
(19)IO/NIO/AIO
三者原理,各个语言是怎么实现的
Netty
Linux内核select poll epoll