滴滴后端开发二面-秋招面经

1.项目介绍
2.实习是做什么的
3.实习学到了哪些,收获了什么
4.读博想法,搞清楚自己想要什么
5.现在在哪里实习,为什么出来实习
6.技术栈
7.malloc分配内存的理解,从调用到分配到物理页的详细过程
8.调malloc没拿到物理页的情况会出现什么,触发中断
9.多进程的资源共享方式包括内存共享
10.个人主要用的有哪些
11.C的static和C++中static用法
12.手撕代码,反转单链表,需要自己定义结构体
13.最小堆是什么
14.最小堆里边拿出最小值的数据后下沉过程原理
15.手撕代码,实现这个最小堆保持堆性质的过程
全部评论

相关推荐

2025-12-14 09:20
门头沟学院 Java
1.项目介绍2.说一下你在里面参与的业务流程吗,整个系统3. 为啥会选用netty做这个二进制流的解码跟这个传输的一个框架呢?之前有没有评估过别的网络框架4.你的上游是什么模块,上游是怎么给你推二进制流的5.你的行情模块接入层是单体的吗?6.你们的ConcurrentHashMap是怎么设计的?这个Map 存在一台机器上,其他机器要用怎么办?7.如果这个 Map 丢了,比如服务重启了,数据怎么恢复8.如果单纯是存历史数据风控要用,那你Map只存最新的?那风控历史数据从哪查9.你们是写入Map后异步写Redis,对吧?那中间宕机了,Redis还没写成功,这条数据不就丢了?你们怎么保证数据不丢?10.你觉得 Redis 是强可靠的吗?如果 Redis 挂了你们怎么办11.什么是长连接?NIO 和 BIO 的区别讲一下吧12.所有上游都能跟你建立长连接吗?有没有场景不能建立长连接?那你们怎么处理?13.前面你说到的短连接和长连接混用,那这种情况下顺序怎么保证?有没有旧数据覆盖新数据的问题14.那如果你这边有多台机器,同时处理请求,怎么保证同一条行情数据不会被覆盖?顺序怎么保证?15.RocketMQ 是在哪一段用的?是在接入层之后就直接发MQ了吗16. MQ是怎么做分区的,你提到要隔离,那你只是broker隔离,消费端没有做隔离的话有啥意义17.MQ发消息用线程池是吧?那线程池参数是怎么配置的18.业务里为啥要用一个Map缓存行情?不是直接往下推就好了吗,还有你这个Map有没有读的链路?如果没有get操作,这个Map的存在意义在哪19. 那你说你重启后需要恢复数据,如果我们不用ChronicleQueue、Disruptor这些WAL预写,只用 Redis + MySQL,你怎么设计才能保证数据可靠20. Redis双机房是怎么做容灾的?同步是强同步还是异步的?中间挂了数据丢不丢21.有没有幂等场景?比如别人调你下单接口,你怎么实现幂等?是怎么返回给上游的22. 重试的时候你幂等怎么保证?怎么区分要返回什么呢23.问个MySQL的问题,MySQL里面那个b➕树它是双向链表还是单向链表,为什么24.手撕:1.给你一个数组,比如 [5,7,1,2,10],表示二叉树中序遍历的结果是节点 1,2,3,4,5,它们对应的分数分别是 5,7,1,2,10。2.要在所有符合这个中序顺序的二叉树中,找到“加分”最高的那棵
查看24道真题和解析
点赞 评论 收藏
分享
2025-12-21 14:25
门头沟学院 Java
1. 布隆过滤器;缓存空结果;参数校验。2. 延迟双删;基于binlog监听;设置合理缓存过期时间兜底。3. RDB。AOF4. RDB更快。5. 单线程处理命令 + I/O多路复用。单线程避免锁竞争;I/O多路复用使单线程高效管理大量连接,仅当socket就绪时处理IO。6. 读未提交、读已提交、可重复读、串行化7. 可重复读。解决脏读、不可重复读;通过MVCC和间隙锁减少幻读发生。8. 默认 B+树。9. 红黑树的二叉搜索树,树高较高;范围查询需中序遍历效率低;节点存储利用率较低。 B+树的更矮胖;叶节点链表结构使范围查询/全表扫描极高效;节点存储更多键。10.使用二级索引查询时,若所需列不在该索引中,需根据索引中存储的主键值,回到聚集索引 树中查找完整行数据。额外磁盘IO是主要性能损耗。11.查询:连接器、查询缓存、分析器、优化器、执行器、返回结果。更新:额外涉及事务开启、写undo log、执行器调引擎修改内存数据、写redo log、写binlog、提交事务。12.更新:写undo/redo,改内存,写binlog,提交redo;两阶段提交。13.继承Thread类,实现Runnable接口,实现Callable接口,使用线程池提交任务。14.核心线程数、最大线程数、存活时间、时间单位、工作队列、线程工厂、拒绝策略。15.CountDownLatch要求子线程主动存结果到共享集合后countDown(),主线程await()阻塞等待;CyclicBarrier由线程在await()前存结果,最后到达的线程触发汇总;而线程池通过主线程收集Future并调用get()阻塞获取结果。16.start() 启动新线程,run()普通方法调用。17.数组+ 链表/红黑树。18.非线程安全。19.JDK8 ConcurrentHashMap:改用 synchronized 锁单个桶 + CAS + volatile,替代 JDK7 分段锁,并发度更高。20.MQ 消息可靠:依赖生产者可靠投递(含重试)、Broker 持久化与高可用、消费者手动 ACK 与幂等处理三方协同保障。21.消费者幂等性:通过唯一约束(如 DB/REDIS 记录消息 ID)防止重复处理,确保多次消费结果一致
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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