热腾腾的头条后端三面面经
紧张了一天等来了三面,人生中第一次三面,原谅我太菜。祝自己好运~
- 项目介绍 分布式锁
 - 分布式锁除了 redis 还有其他实现吗,我说有数据库和 zookeeper,说了数据库的实现,zk 不了解
 - 团队之间如何分工
 - 题目一:链表奇数位升序,偶数位降序,如何改为有序链表
- 遍历一次将奇数和偶数分别存储到两个列表中,然后合并
 - 如何不用额外存储空间:先遍历一遍将单向链表改成双向链表,然后分别从两头开始遍历
 - 评论区同学说可以把偶数节点连起来然后反转最后再合并两个链表,俺当时也没想出什么好做法,总之面试官的意思是想要 O(1)的空间复杂度😂
 
 - 题目二:百万的数据,找出最大的 100 个
- 用最小堆
 - 如果这 100 万个数据都是 0-100 之间的有什么其他办法,用一个大小为 100 的哈希结构存储数据
 - 如果数据是 100 亿,大到内存存不下怎么办,我说就分次读取
 
 - redis 有哪些数据结构
 - redis 的有序列表怎么实现
 - 跳表有什么优势,比如和二叉树比较
 - mysql 用的是什么数据结构存储
 - b+ 数是什么样的,b 数和 b+ 数的区别,为什么用 b+ 不用 b 数
 - 题目三:有一个函数 random(5) 产生随机数 0-5,如何用它来实现 random(7)
- 产生随机数的概率得是均匀的
 - 更新一下, 好多人回复了这道题的做法,我也不知道对错,这里是leetcode里random 7实现random 10 官方题解
 
 - 场景设计题:抖音点赞,QPS 是百万级,如何设计
- 用 redis 做缓存
 - 数据最终写到哪:数据库
 - 怎么写:定期写入
 - 有没有不一致问题:机器出问题数据丢了就可能不一致吧
 - 怎么解决:redis 的持久存储 rdb 和 aof
 - 磁盘出问题怎么办,rdb 和 aof 都有问题:redis 集群,用多台 redis 保证高可用
 - redis 集群怎么设计的:一台写其他读
 
 
上面我给出的回答可能不是对的,只是我当时所想到的,并不完整。大家有什么想法可以在评论区指正。
#字节跳动##校招##Java工程师##面经#
查看18道真题和解析

