今日头条java工程师社招面经(接上)

7 问我知不知道有一条命令可以实现上面这个功能。不知道

8 Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么,不清楚。

9 Redis的list是怎么实现的,我说用ziplist quicklist实现的,ziplist压缩空间,quicklist实现链表。

10 sortedset怎么实现的,使用dict skiplist实现的,问我skiplist的数据结构,大概说了下是个实现简单的快速查询结构。

11 了解什么消息队列,rmq和kafka,没细问

12 写题时间到。第一题:写一个层序遍历。

13 第二题:写一个插入树节点到一颗排序树的插入方法,使用递归方式找到插入位置即可。

14 第三题:一个有向图用邻接矩阵表示,并且是有权图,现在问怎么判断图中有没有环。

15 我说直接dfs走到原点即为有环,刚开始写的时候我又问了一嘴是不是只要找到一个就行,面试官说是的,然后我说这样应该用bfs,有一次访问到原节点就是有环了。

16面试官问我不用递归能不能做这个题,其实我都还没开始写。然后我就说没有思路,他提示我拓扑图。我没明白拓扑图能带来什么好处。现在一想,好像当访问过程中找不到下一个节点时就说明有环。做一个访问标记应该就可以。

17 第四题:一个二叉树,找到二叉树中最长的一条路径。

我先用求树高的方式求出了根节点的左右子树高度,加起来便是。

18 然后面试官提示需要考虑某个子树深度特别大的情况,于是我用遍历的方式刷新最大值,用上面那个方法遍历完整个树即可。

19 面试官说复杂度比较高,但是由于时间问题就说结束了。

#字节跳动##面经##社招##Java工程师#
全部评论
楼主几年Java
1 回复
分享
发布于 2021-03-18 10:25
7 说的是scan吧,面试官说的实现上面这个功能是说分成几个节点这个功能吗?我不知道是不是有这个命令可以实现这个功能还是说和scan的底层实现有关,求大佬指点🤗
1 回复
分享
发布于 2021-03-18 17:23
滴滴
校招火热招聘中
官网直投
8 打错了。aof(append only file)和rdb。追加日志和保存快照。追加日志就是将所有操作以命令形式记录在一个日志上,和一个日志有关我忘了。保存快照有好几种,我也忘了。记性不好了😂
1 回复
分享
发布于 2021-03-18 17:25
9. 双向链表和ziplist,双向链表就是普通的双向链表没什么好说的,ziplist是redis设计出来用来节约空间的,和数组有些像,因此也有它自己的限制
1 回复
分享
发布于 2021-03-18 17:26
10. sortedSet就是zset,还把我整懵了。ziplist和(跳跃表+哈希),发现各种数据结构里面都由ziplist,跳跃表的查找方法和二分查找相似,为logn
1 回复
分享
发布于 2021-03-18 17:28
11. kafka。这一块如何实现去重和不丢失是考察重点。去重就是简单的去重,不丢失分为同步和异步,需要修改相应的配置。
点赞 回复
分享
发布于 2021-03-18 17:29
12. 层序遍历,老生常谈,队列
点赞 回复
分享
发布于 2021-03-18 17:30

相关推荐

点赞 39 评论
分享
牛客网
牛客企业服务