小红书-后端开发-二面

公司名:小红书
岗位名:后端开发
面试部门:社区电商
面试轮次:二面
时间:30min

感觉面试官更注重项目,另外,这个B+树双向链表的优势,我说可以O(n)范围查询,面试官说B+树的中序遍历也是O(n),为什么要加个双向链表,多此一举。有无佬可以指点一下。

问题如下:
+ 自我介绍
+ 算法:反转链表的前半部分
+ mysql索引结构
+ 双向链表为什么更快,B+树的中序遍历时间复杂度也是O(n)啊
+ 最左前缀原则
+ 索引覆盖
+ SSO和OAuth2
+ 项目鉴权流程
+ 为什么rpc框架要使用thrift
+ 反问

#24届软开秋招面试经验大赏#
全部评论
b+数双向链表的优势是支持范围查询
6 回复 分享
发布于 2023-10-15 10:35 广东
范围查找当多个行记录不在同一个页时,可以直接通过指针去找下一个页的行记录,没有双向链表的话就又得从根节点去找或者回溯
2 回复 分享
发布于 2023-10-26 20:44 广东
B+树的双向链表优势在于它提供了一种更高效的方式来执行范围查询。虽然中序遍历也能够在O(n)时间内完成,但使用双向链表可以进一步提高范围查询的效率。这里有几点可以考虑: 减少重复遍历:在执行范围查询时,中序遍历B+树会导致重复访问节点,因为它会访问范围之外的节点。而双向链表可以只访问需要的节点,从而减少了重复遍历的开销。 降低I/O开销:B+树的节点通常存储在磁盘上,范围查询可能涉及大量的I/O操作。通过双向链表,可以将查询结果按顺序链接在一起,减少了磁盘访问的次数,从而降低了I/O开销。 提高缓存利用率:双向链表可以将范围查询结果缓存在内存中,而不必每次都从磁盘读取。这样可以更好地利用缓存,加快查询速度。 综上所述,虽然中序遍历B+树也可以完成范围查询,但是使用双向链表可以进一步提高查询效率,特别是在涉及大量范围查询或者需要频繁执行查询的情况下。
1 回复 分享
发布于 2024-03-12 19:19 安徽
我秋招面了很多公司,大家有兴趣的话可以去我的个人网站看看:http://space.eyescode.top/blog
1 回复 分享
发布于 2023-10-15 10:08 广东

相关推荐

12-04 04:20
门头沟学院 Java
1. 简单介绍项目背景、开发流程及系统核心功能。2. 分布式场景下如何解决用户连续两次提交的问题?3. 仅开发后端接口吗?是否涉及前端工作?4. 后端部分是从0到1独立开发,还是基于现有项目二次修改?5. 请讲解JWT在项目中的具体执行流程。6. 未搭建前端但登录功能需前后端紧密配合,对此是如何处理的?7. JWT与OAuth 2.0之间是什么关系?8. 请说明JWT与OAuth 2.0的对比过程及结论。9. 项目中生成的Token除用户名和密码外,还包含哪些信息?10. 调研过业界登录功能的其他实现方式吗?除了JWT之外还有哪些?11. 项目中ES存储的题库内容总量有多少?12. 请解释什么是倒排索引。13. ES中的数据是如何导入的?是否结合了数据库使用?14. 该场景下直接使用事务是否可行?为什么?15. 使用RocketMQ时,是否调研过其他开源消息队列?对比结果如何?16. 消息队列中如何处理消息的幂等消费问题?17. 了解类加载的完整过程吗?请简要说明。18. 类初始化时,静态代码块、常量、复合函数的执行顺序是什么?(结合代码判断输出结果)19. 请讲解JVM的内存结构。20. 常见的垃圾回收器有哪些?21. G1相对于CMS有哪些核心提升?22. 如何认定“价值比较大”?(结合上下文场景说明)23. 了解JVM的相关参数吗?请举例说明。24. 项目中目前使用的是什么垃圾回收器?25. Spring中注入Bean有几种方式?26. 请讲解Spring中AOP的原理及应用场景。27. 场景题:设计美团话费充值功能的MySQL表结构,需要设计几张表才能实现核心功能?28. 针对充值记录表,编写对应的建表语句。
查看28道真题和解析
点赞 评论 收藏
分享
12-14 14:24
已编辑
门头沟学院 Java
八股很久没复习,回答的一坨大学期间最得意的项目是什么?为什么要做这个电商商城项目?这个电商商城项目里你是自己独立完成还是合作完成的?最近一年你印象最深刻的开发卡点是什么?Java 中线程控制的方法有哪些呢?AOP(面向切面编程)是什么?过滤器和拦截器有什么区别?注解的原理可以简单讲一下 @Autowired 注解吗?它和 @Resource 的区别是什么?你熟练 MySQL 数据库索引,索引的分类可以讲一下吗?怎么创建一个 MySQL 索引?哪些情况会导致 MySQL 索引失效?事务的四个特性和四个隔离级别分别是什么?使用 Redis 做缓存会存在什么问题?秒杀系统中如何保证缓存和数据库的一致性?项目中用到的登录相关技术(Cookie、Session、SSO、JWT 等),可以解释并说明它们之间的区别吗?可以简单介绍几种常用的数据结构及其特点吗?对于难以复现、几率极低的 bug,你会按哪些步骤处理?你更喜欢接手已有项目还是做全新的项目?为什么?如果设计一个新项目,应该优先考虑什么?新加入团队,你觉得自己该怎么做才能更快融入团队、进入工作状态?最近有关注什么技术热点吗?你使用过或了解过哪些数据库?可以简述 MySQL、Redis、PG 的区别吗?手撕:全排列空闲时间一般会做什么?------------------------------已过,hr面没接
查看25道真题和解析
点赞 评论 收藏
分享
评论
5
25
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务