滴滴日常后端一二面面经(排序ing)

一面
算法
给一个字符串s和一个字符串词典wordDict,判断字符串能不能由词典里的字符串构成(可重复使用)
如字符串leet,词典{lee,t},就可以构成
回溯或者dp

问题
讲一讲你项目中令你最印象深刻的部分
讲一讲项目开发的时候和同学合作遇到的问题
你是进行代码开发,数据库表设计的同学会影响到你的开发过程,那你和数据库设计的同学是怎么进行协商的
如果需求频繁变化可以考虑先用MongoDB
为什么用cassandra存储文本而不是MongoDB
项目开发时候技术上的难点
mq丢失如何进行补偿
讲一讲死信队列

用户态和内核态的区别
用户态和内核态是怎么进行切换的
系统调用的原理
讲一下进程和线程的区别和定义
进程间通信的方式
多线程会产生的问题

url键入到网站返回的过程
get和post的区别,场景上和本身上的区别
ipv4和ipv6

mysql三大日志
undolog记录的内容是什么
事务隔离级别和事务隔离级别的问题
mysql默认的隔离级别
讲一下mvcc
mvcc如何解决幻读问题
讲一下mysql的锁

二面
算法
最长递增子数组

问题
介绍一下自己的技能
专业课学什么
讲一下唯一id生成器
讲一下分布式情况下解决数据一致性的解决方案

场景题:设计一个停车管理系统
讲一下功能范围、技术架构和关键问题解决方案

讲一讲自己的优点和缺点

ps:排序一周了已经()

#牛客AI配图神器#
全部评论
Java还是go的
1 回复 分享
发布于 03-06 00:53 辽宁
挂了
1 回复 分享
发布于 03-06 14:06 未知
哥们方便问问什么部门吗?
点赞 回复 分享
发布于 03-05 23:25 广东
佬咋知道的排序?
点赞 回复 分享
发布于 03-09 14:10 辽宁
老哥一面结束后什么时候约的二面
点赞 回复 分享
发布于 昨天 18:03 黑龙江

相关推荐

03-12 20:46
门头沟学院 Java
最可惜的一次,滴滴二面问题基本上都能答上,可惜出了道刚好没做过的hot100,然后就挂了,唉...一面面经面试问题与知识点总结1. 项目经历1. 第一个项目 技术点: 乐观锁解决超卖问题(如秒杀场景)。 Redis分布式锁实现“一人一单”限制。 扩展问题: 分布式锁的实现细节(如Redisson的底层原理)。 超卖问题的其他解决方案(如令牌桶限流)。 2. 第二个项目 技术点: 基于Redis发布订阅机制实现线程池参数动态调整。 配置中心设计与定时任务上报线程池状态。 扩展问题: 对比Apollo、Nacos等配置中心的实现差异。 线程池参数动态调整的性能影响(如核心线程数修改的底层逻辑)。 2. Java基础1. HashMap底层实现 回答要点: JDK1.8前:数组+链表;JDK1.8后:链表长度≥8且数组长度≥64时转红黑树。 树化后若节点减少,红黑树会退化为链表(节点数≤6时)。 扩展问题: 树化阈值为8的原因(哈希冲突概率与性能权衡)。 2. ConcurrentHashMap线程安全 回答要点: JDK1.7分段锁;JDK1.8后CAS+synchronized锁桶节点。 扩展问题: ConcurrentHashMap的size()方法实现(分段统计再求和)。 3. 事务ACID与隔离级别 回答要点: MySQL默认隔离级别为可重复读(通过MVCC实现)。 脏读、不可重复读、幻读的解决方式。 扩展问题: MVCC中ReadView的生成逻辑(活跃事务ID列表)。 3. 数据库1. 索引与B+树 回答要点: B+树非叶子节点仅存索引值,叶子节点通过链表串联(支持高效范围查询)。 联合索引需满足最左匹配原则(如索引(a,b,c)需查询条件包含a)。 扩展问题: 索引下推(ICP)优化原理。 2. 红黑树 vs B+树 回答要点: 红黑树为二叉平衡树,调整频繁;B+树为多路平衡树,层高更低(减少磁盘IO)。 4. Redis1. 持久化方式 回答要点: RDB:定时快照,恢复快但可能丢数据。 AOF:追加命令日志,数据更安全但文件较大。 扩展问题: AOF重写机制(压缩命令为最终状态)。 2. 缓存击穿解决方案 回答要点: 空值缓存 + 布隆过滤器过滤无效请求。 互斥锁防止大量请求穿透到数据库。 5. Spring1. IOC与单例模式 回答要点: Spring Bean默认单例(通过单例注册表管理)。 单例的线程安全问题(无状态Bean vs 有状态Bean)。 6. 算法题题目:二叉树层序遍历(LeetCode 102)。二面---#### **1. JVM 垃圾回收算法**- **问题**:    解释 JVM 中标记清除、标记整理、标记复制三种垃圾回收算法的原理、优缺点,以及分代回收中新生代和老年代分别使用的算法。- **扩展追问**:    - 为什么新生代使用标记复制算法?    - 老年代为何更适合标记整理而非标记清除?    - 内存碎片问题在不同算法中的表现?---#### **2. ConcurrentHashMap 实现原理**- **问题**:    对比 HashMap 和 ConcurrentHashMap 的线程安全实现,解释分段锁(JDK 1.7)或 CAS + synchronized(JDK 1.8)的底层机制。- **扩展追问**:    - 分段锁如何保证并发安全?    - JDK 1.8 中为何放弃分段锁?    - ConcurrentHashMap 的 get 操作是否需要加锁?---#### **3. 生产者消费者模型实现**- **问题**:    设计一个线程安全的阻塞队列,要求支持多生产者、多消费者,并在队列满/空时阻塞等待。- **扩展追问**:    - 如何通过锁和条件变量(如 `ReentrantLock` + `Condition`)实现?    - 为什么不能直接使用 `BlockingQueue`?    - 如何处理线程唤醒的“虚假唤醒”问题?---#### **4. LRU 缓存设计**- **问题**:    实现一个 LRU 缓存,要求 `get` 和 `put` 操作的时间复杂度为 O(1)。- **扩展追问**:    - 为什么选择哈希表 + 双向链表的结构?    - 如何维护链表节点的顺序?    - 单链表能否实现?时间复杂度如何变化?---#### **5. 算法题:旋转数组的二分查找**- **问题**:    给定一个升序数组经未知次数左旋后的结果(如 `[4,5,6,7,0,1,2]`),设计算法在 O(log n) 时间内找到目标值。- **扩展追问**:    - 如何确定旋转点(分界点)?    - 如何处理二分后左右区间的有序性?    - 代码实现中的边界条件(如数组完全有序、重复元素)?---#### **面试评价方向**1. **基础深度**:JVM 垃圾回收算法、并发容器的底层实现。  2. **设计能力**:生产者消费者模型、LRU 缓存的设计思路。  3. **算法思维**:二分查找变种问题的分析与编码能力。  4. **沟通表达**:能否清晰阐述项目亮点(如乐观锁、分布式锁、动态线程池)。  ---
点赞 评论 收藏
分享
评论
3
16
分享

创作者周榜

更多
牛客网
牛客企业服务