土豆削皮 level
获赞
10
粉丝
10
关注
0
看过 TA
7
南京工程
IP属地:未知
暂未填写个人简介
私信
关注
2019-11-23 20:29
已编辑
南京工程
字节跳动 zset 延时队列怎么实现的 redis 数据结构有哪些?分别怎么实现的? binlog 日志和 redolog 日志清楚吗? 说了两个日志的作用以及两阶段提交 C++ 的动态多态怎么实现的? C++ 的构造函数可以是虚函数吗? 让你设计一个限流的系统怎么做? 令牌桶 让你设计一个延时任务系统怎么做 说了两个方案,一个是使用 redis 的 ZSET 来实现,考虑分片来抗高并发,使用 redis ...
一剑光寒十九粥:感谢楼主的分享,感觉有些难度,19级来强答一波(闲得慌) zset 实现延时队列可以以时间戳作为score存入zset,zrange --withscore 取出判断是否到了执行时间,到了则执行然后删除 string、list、set、zset、hash这五种基本数据结构,string底层是数组,list底层是链表,hash和set的底层应该都是hashmap,zset应该是跳跃表(但是跳跃表具体的结构已经忘了) 只清楚binlog记录了改变数据的ddl和dml语句,可以用来数据恢复和主从同步,redolog不清楚 c++ 不会 c++ 不会 令牌桶 简单的延时队列zset可以满足要求,时间轮算法不了解,复杂的话应该要上rabbitMQ这种专业的队列解决 innodb 和 myisam 最大的区别是前者支持事务而后者不支持,然后innodb是行锁(只有用到索引情况下是行锁,否则表锁),myisam是表锁,其它还有些差别忘了,现在常用的是innodb 索引模型?是说索引的底层数据结构吗,如果是的话有两种,一种是B+tree,一种是hash 两种,一种是append only file(aof),一种是快照,前者会随着时间的推移持久化文件会越来越大,持久化时间也会越来越长(虽然提供了持久化日志优化重写配置),而后者相对前者所需时间少,但比前者丢数据的概率要大,redis4.0还是5.0提供两种方式混用的配置 sync信号然后执行快照命令啥的,记不起了 不知道 常用的innodb,myisam,memory,innodb和myisam上面说过了,memory数据在内存中,查询速度最快,但是数据安全性和数据量级支撑要小一些 这个情况就比较多了,一般都喜欢问数据索引的最左原则,like如果以%开头也会失效,字符串类型要用引号引起来等等 不知道 悲观锁是直接把数据锁起来直至改进程完成操作(for update),乐观锁是自己维护一个版本号来完成,乐观锁适合读多写少的场景 不太清楚,应该是master推? 服务发现是怎么实现的?是指基于dns的服务发现还是基于etcd、consul的注册中心吗 不知道 redis集群? 轮询、随机、加权轮询 协程相对线程更加轻量级,也被称为用户态线程,例如go创建一个协程只需要2kb内存 信号、管道、共享内存 以上感觉自己的理解还是有点浅,另外宇宙条不考算法吗(逃),想知道lz的情况怎么样,如有回答不对的也可以纠正,祝lz面试顺利~
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务