- 自我介绍
- 重复计费如何处理的?
- 使用redis记录trace三分钟
- 有挑战的技术(计费逻辑)
- 计费使用的redis技术,不使用多个原子操作,
- lua跟redis的事务的区别和优势
- redis的事务基本原理为乐观锁,一次命令的批量执行
- lua脚本原理为使用脚本相当于一个redis命令,可以加入自定义的逻辑
- 都是实现了原子性,一致性,隔离性和持久性,执行过的命令不会回滚
- redis为什么那么快?
- 网络模型:IO多路复用(多路指的是多个网络连接,复用是复用同一个线程)
- 数据在内存存储
- 采用单线程:省区很多上下文切换,和CPU消耗,不存在锁竞争
- 数据结构简单
- redis的持久化
- redis数据过期的淘汰策略
- 为什么用zk来通知
- 因为要同步到每台机器上,使用的是ZK的广播特性
- 什么情况下用mq
- 应用解藕
- 一不处理
- 限流削峰
- mq的推和拉的模式哪个好,有什么优缺点
- php支持多继承么?
- 不支持,只支持单继承
- php支持函数重名吗?
- 不支持,php中不允许函数重名
- go通过什么关键字去内存分配的
- new:new()关键字是go语言中的一种内置函数,他可以用来分配内存空间,并返回一个指向该内存空间的指针
- 值类型和引用类型的传递区别
- 切片底层数据结构
- 是对数组一个连续片段的引用,是一个引用类型
- 长度可变的数组
- go中的键值对数据结构
- map:线程不安全,可以加读写锁
- sync.map:线程安全
- new和make的区别
make
的作用是初始化内置的数据结构,也就是切片、哈希表和 Channel, 返回类型的引用而不是指针new
的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针