- cookie, session, token 是什么,各有什么缺点?
- 字典树定义?
- 数据库用户表的设计?
MD5 + salt
- mysql 使用 uuid 作为主键有什么缺点?
uuid 是 128 位,即 16 字节的通用唯一标识,会根据当前时间、计数器、硬件标识等数据生成,保证唯一性,常用于分布式系统中作为主键。因此如果用作 mysql 的主键,mysql 的默认存储引擎是 innodb,会将记录按照主键升序排序构成聚簇索引(B+ 树),由于 uuid 的无规律性会导致记录分布散乱,在插入一条记录时,会产生随机 IO(目标页已经刷到磁盘并从缓存中移除),此外还会导致频繁的页分裂,增加磁盘 IO,而页分裂又导致页变得稀疏,被不规则填充,做一次 OPTIMIZE TABLE 来重建表并优化页的填充需要一定时间。
- 给定一组规则,比如遇到 “aaa” 替换为 “bbb”,实现字符串替换?
正则表达式
- topK:寻找数组中前 K 大的元素?
- B+ 树?
- 单例模式?
分为饿汉式与懒汉式。用 Go 实现:
饿汉式:在 init 函数里面初始化
懒汉式:使用 sync.Mutex 互斥锁或使用 sync.Once
- TCP 和 UDP 的区别?
- 为什么 TCP 是可靠的?
- 三次握手和四次挥手?