26年2月京东 Java开发工程师 二面

1. Spring Boot启动时,SpringApplication.run()背后经历了哪几个关键步骤?

思路

按启动全流程:准备环境 → 创建上下文 → 刷新容器 → 加载自动配置 → 初始化Bean → 启动完成

回答示例

面试官您好,run方法的核心步骤是这样的:

首先启动计时器,初始化监听器;然后准备运行环境,加载配置文件、激活配置;接着创建Spring应用上下文;再刷新上下文,扫描Bean、加载自动配置类;然后完成Bean的创建、依赖注入、初始化;最后执行Runner,发布启动完成事件,整个项目就启动好了。

2. MySQL的二阶段提交(2PC)如何解决redo log和binlog的一致性问题?

思路

redo log负责崩溃恢复,binlog负责主从同步,2PC保证两者要么都提交,要么都回滚

回答示例

面试官您好,MySQL通过两阶段提交保证redo和binlog一致。

第一阶段InnoDB写入redo log并标记为prepare;第二阶段MySQL写入binlog,完成后再把redo标记为commit。

如果崩溃在prepare,事务回滚;如果崩溃在写完binlog之后,就提交。

这样就能保证redo和binlog永远一致,不会出现主从数据不一致的问题。

3. 一个三层B+树结构,假设每页存储1000个键值,最多能存储多少行数据?

思路

根节点1页 → 二层1000页 → 三层1000*1000页,叶子存数据

回答示例

面试官您好,三层B+树就是根、非叶子、叶子。

根节点1页,指向1000个子节点;每个子节点再指向1000个叶子节点。

叶子节点总数是1000×1000=100万页。

每页存1000行,所以总共能存 10亿行 数据。

4. JVM中哪些区域可能产生OOM?分别对应什么现象?

思路

堆、元空间、虚拟机栈、直接内存四个区域,分别说明OOM表现

回答示例

面试官您好,四个区域会OOM:

第一,堆OOM,就是对象太多回收不了,报错Java heap space;

第二,元空间OOM,动态类太多,报错Metaspace;

第三,栈OOM,递归太深或线程太多,StackOverflow或无法创建线程;

第四,直接内存OOM,NIO用多了,报错Direct buffer memory。

5. Netty的Reactor线程模型有哪几种类型?主从Reactor如何分工?

思路

单Reactor、多Reactor、主从多Reactor;主Reactor负责连接,从Reactor负责读写

回答示例

面试官您好,三种:单Reactor、多Reactor、主从多Reactor。

主从模式里,主Reactor只处理accept连接,接收到连接后分给从Reactor。

从Reactor负责读写、编解码、业务处理,真正实现高并发。

6. 为什么实际项目不直接用NIO而选择Netty?列举三个具体痛

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论
很好,总结的不错
点赞 回复 分享
发布于 03-26 23:08 北京
27届拼多多实习机会或看我主页 https://careers.pddglobalhr.com/campus/intern?t=4OmKPVeX9a
点赞 回复 分享
发布于 03-25 23:23 上海
可以的,很好呢
点赞 回复 分享
发布于 03-25 23:05 北京
拼多多招27届实习生啦 https://careers.pddglobalhr.com/campus/intern/detail?t=dRvUVvcTiA
点赞 回复 分享
发布于 03-25 20:27 上海

相关推荐

05-24 17:15
同济大学 Java
一、基本信息阿里-优酷大屏业务(虎鲸文娱下优酷,TV端应用开发) | 时长约60分钟二、八股文Java基础Q1: String、StringBuilder、StringBuffer的区别是什么?各自的使用场景?Q2: List、Set、Map分别适用于什么场景?怎么选择?Q3: HashMap在多线程下会有什么问题(死循环等)?ConcurrentHashMap 1.7分段锁和1.8 CAS+synchronized的区别?Q4: CAS是什么?ABA问题怎么解决?Q5: Java多态的原理是什么?并发Q6: 线程池的七个核心参数是什么?任务提交时,什么时候创建核心线程,什么时候创建最大线程?数据库Q7: MySQL的索引结构是什么?聚簇索引和非聚簇索引的区别是什么?怎么避免回表?Q8: MySQL的事务隔离级别有哪些?可重复读能解决幻读吗?MVCC的原理是什么?Q9: 慢查询怎么排查?索引失效的场景有哪些?RedisQ10: Redis缓存穿透、缓存雪崩、缓存击穿分别是什么?怎么解决?消息队列Q11: 消息队列怎么保证消息不丢失?怎么保证消息的幂等性(消费端重复消费怎么处理)?本地消息表是什么?唯一索引怎么保证幂等?框架Q12: 你对Spring IOC的理解是什么?@Transactional注解在什么情况下会失效?设计Q13: 如果让你设计一个秒杀系统,你会怎么设计?需要考虑哪些问题?三、项目Q1: 介绍一下你的项目,项目中用了哪些设计模式?Q2: 项目中缓存是怎么做的?全量缓存和增量缓存分别是什么?定时任务中分布式锁是怎么加的?四、算法题目: 反转链表(面试官要求分别用递归和循环两种方法实现) 来源: LeetCode 206五、反问我问面试官: 咱们团队具体做什么业务?技术栈是什么?面试官回答:做阿里云相关的后端服务开发,技术栈以Java为主,中间件用Redis、RocketMQ等。我问面试官: 对实习生有什么期望?面试官回答:希望基础扎实,学习能力强,能快速上手业务。
查看16道真题和解析
点赞 评论 收藏
分享
一开始手撕了一个LFU-LRU混合缓存,然后撕了一半发现不太对,不知道如何处理相同频率的数据如何再根据LRU进行淘汰,最后也没有提示直接基于该手撕问了一些问题:1. 比如说你实现的这套是一个正常的版本,在多线程并发场景下,你觉得这套实现会有什么问题?2. 那对应的优化方案呢?要解决这个问题,你有什么思路?3. 锁怎么加?你刚说给 Key 加锁,大致来看锁具体怎么加?比如我们用的是个什么样的锁?4. 那当前这个缓存服务,比如说我最终要在实验室或者合作项目里把它变成一个可用的服务,这里面一定会涉及到物理瓶颈的问题,针对现在你所了解的、能解决缓存需求的解决方案,目前有哪些?5. 你有深入了解过 Redis 的大概系统架构吗?6. 它为什么能够胜任电商场景下的高并发需求?它有什么核心特点?(基于内存)7. 除了这个原因呢?(io多路复用)8. 那关于缓存击穿,你是怎么理解的?9. 那在你的理解和项目实践中,针对缓存击穿问题你是怎么解决的?10. 这里面我看你写到也尝试使用了 Lua 脚本,为什么这个场景会用 Lua 脚本?什么情况下用它,什么情况不用它?11. 我看你最新的项目还是和 AI 相关的,这块你可以讲一下你觉得有意思的部分吗?12. 以你当前的情况来看,你知识库的召回率是怎么判定的?比如你里面写了 80%,这个值是怎么来的?13. 这个占比是怎么判定的?比如你标记的正确答案是几条,召回是怎么召回的,麻烦讲得细一点,比如这个占比具体怎么算?14. 不是按单个 query 去分别判定的是吗?是根据整个召回的结果,比如每一个 query 你都会计算占比,然后把这些占比加合求平均,是这样吗?15. 其实你刚刚讲到了一些关键细节,比如分片、重排,你做分片的考量是什么?比如你当前的分片方式存在什么问题?可以怎么去优化?16. 有没有想过非 Markdown 格式的文档要怎么处理?17. 这里面你的索引选型是怎么考虑的?还是说因为你用了 Spring Cloud Alibaba 的框架,就直接用了它的默认构建方式?18. 这里面其实有几个细节,你的向量模型是怎么选的?还有向量维度,比如你定了 1024 维,包括模型版本、向量数据库选型,这些你有做相关的考量吗?19. 你刚刚其实有讲到关于上下文和 memory,你觉得在你的这个小的尝试里,当前默认提供给你的套件,在上下文和 memory 这块有什么问题?针对你遇到的问题,你有什么优化想法?20. 整个 Agent 的搭建,你一共花了多少时间?21. 我看你最开始介绍的研究方向是时空数据预测,更偏向理论研究,平时的工作主要是设计模型、训练测试,但你的项目又偏工程相关,你个人对于工程和理论研究,有比较确定的偏好吗?22. 比如在 Agent 这个项目里,你觉得比较感兴趣的工作是哪一块?
查看22道真题和解析
点赞 评论 收藏
分享
📍面试公司:阿里云🕐面试时间:5.14💻面试岗位:JAVA研发❓面试问题:1. 抛开 AI 部分,讲讲整个服务架构是什么样的?包括前端怎么用、后端怎么用、前后端怎么交互?2. Redis 是存短期内容吗?是用于做缓存还是其他用途?3. 了解 Spring Boot 的整个启动原理吗?Spring Boot 打的包结构是怎么样的?服务是怎么启动的?4. 整个项目的代码是自己写的,还是主要由 AI 全部自动生成的?5. 没有 AI 之前,你自己有没有单独搞过纯手搭的项目?6. 两个 AI agent 的主要分工是什么?介绍一下对话 agent 和运维 agent 的核心能力?7. 有没有做多轮循环的控制?如果 agent 一直循环调用工具会怎么处理?8. RAG 的 TOKEN 调优省了 50%,是生成 TOKEN 还是输入 TOKEN?怎么计算的这个数值?做了哪些具体的调优工作?9. 上下文压缩有什么策略?如何避免过滤掉有用信息、留下噪音数据?10. 对于长期有效的信息,会做什么特殊处理把它留存下来吗?11. 平均检索度 80% 以上,有没有自己构建评估集?评估集是怎么处理的?处理了多少数据?12. AI agent 用的哪个大模型来做的?13. 觉得 Claude 好在哪里(从模型本身和 agent 设计两个方面)?对它的 agent 整个运行原理了解吗?14. 从你的角度看,大模型本身重要,还是整个 agent 的架构设计更重要?15. 本地生活服务平台的主要内容有哪些?开发过程中有没有碰到在线问题调试、节点故障之类的问题?16. 假设线上发现内存不停地缓慢增长,不确定是哪行代码出的问题,你会怎么排查?有办法定位到具体代码吗?17. JVM 里面主要的组件有哪些?JVM 的体系了解吗?能讲一下 JVM 的内存模型吗?18. 本地方法栈主要是用于什么用途的?19. 方法区空间出现预警了,最大的可能是什么原因?有办法回收方法区的垃圾吗?运行时怎么处理方法区空间不足的问题?20. 了解 classloader(类加载器)吗?通过 classloader 有办法处理动态类加载过多的问题吗?21. 了解 Tomcat 吗?看过整个设计吗?
查看21道真题和解析
点赞 评论 收藏
分享
评论
4
11
分享

创作者周榜

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