小红书-后端开发-二面

公司名:小红书
岗位名:后端开发
面试部门:社区电商
面试轮次:二面
时间: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 广东

相关推荐

05-06 15:29
东华大学 C++
1. ​分布式订单ID生成? 短时间高并发下如何保证唯一性?我先回答了雪花-like, 上段实习中, 我们项目的全局GUID生成器是我写的, 考虑了短时间内大量产生的情况, 向后借用, 未考虑时钟回拨然后想起来当时和leader讨论,  单独的GUID生成中心, 分批向各个ds批发号段.. 或者是用tacplus的自增id, 但是这样效率太低2. ​CPU 性能瓶颈分析使用 prof 工具监视热点函数的性能消耗3. 上段实习工作内容? 难点?    背包/仓库/道具 ​重构模块追问​:    在两周内重构1万行代码,如何保证代码质量?是否引入单元测试或自动化验证?    10天完成15天任务,如何协调开发与测试资源?是否牺牲技术债?4. 问了一点网络: 网络通信与实时系统视频会议与代码共享的链路设计追问​:解释从你的设备到面试官屏幕的完整网络路径(如NAT穿透、协议选择)5. 游戏服务器同步机制? 和互联网开发的区别服务器作为权威状态源,定期向客户端广播游戏世界的完整或增量状态(如玩家位置、血量)电商无状态服务可通过REST API+RPC横向扩展,而游戏服务器需维护长连接和会话状态。6. 系统设计 分布式事务与最终一致性​游戏道具交易涉及多个系统(背包、仓库、邮件),如何设计分布式事务?对比电商订单支付+库存扣减。​回答方向​:​Saga模式​:将事务拆分为多个可补偿步骤(如“扣道具-发邮件-记录日志”,失败则回滚)。对比:电商更倾向异步消息队列​(如Kafka)实现最终一致性。7. 游戏服务器宕机后如何快速恢复玩家状态?电商系统如何设计类似容灾机制?定时落DB+游戏整体运行在共享内存, 方便resume7. 游戏后端请求链路分析采用自定义的可靠UDP协议​(KCP),平衡延迟与可靠性. 玩家操作(如移动、技能释放)需携带时间戳和操作序列号,用于服务端验证顺序, 请求直达, 客户端直接和服务器感觉面试内容很不"八股", 答得稀里糊涂的, 上面的顺序不是面试提问顺序, 想起来什么说什么, 大家做个参考
查看11道真题和解析
点赞 评论 收藏
分享
快手的面经比较少,我3月份刚开就投递了,4.20多号才发offer,流程确实有点慢,感觉不是很缺人,hr说暑期实习5-8月去就行,估计人挺多的。base:杭州电商快手一面3.24:1、算法:LRU2、拷打实习和项目3、Redis的数据结构介绍一下?4、Redis的Hash相比之下做了哪些优化?(zipList、listpack、hashTable)5、Redis的跳表介绍一下?6、为什么Redis采用跳表而不是红黑树?为什么不是B+树?7、其他忘了,主要拷打实习项目和Redis这块,因为偏toC快手二面3.31:(20min)1、算法:反转二叉树,1min直接秒了2、实习相关(比如POI表内存了哪些字段)3、如何查询北京元中心附近3公里以内的POI?(用Redis的GEO计算经纬度来实现,georadius,后续问朋友说美团是用ES做POI的召回,能限制xx公里的POI)4、那Redis的georadius具体怎么实现的?时间不长,后续就在聊天了,聊之前快手的经历快手hr面4.15:1、介绍一下自己2、你这么多段实习,做什么的介绍一下?为什么选择快手电商?3、快手、小红书、字节的电商你有了解过吗?没了解,但是我讲了一下快手本地的商品和快手电商商品的区别。4、为什么选择杭州?5、快手、小红书实习之前的实习强度?6、是否知道电商这边的强度?(强度确实大~)7、你觉得自己业务、中台、大模型,你更喜欢做哪个?自己更擅长哪个?
查看16道真题和解析
点赞 评论 收藏
分享
评论
5
24
分享

创作者周榜

更多
牛客网
牛客企业服务