百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

2025 年最全 Java 面试题,京东后端面试面经合集,答案整理

mhr18 2025-08-03 06:37 2 浏览 0 评论

最近京东搞了个 TGT 计划,针对顶尖青年技术天才,直接宣布不设薪资上限。TGT 计划面向范围包括 2023 年 10 月 1 日到 2026 年 9 月 30 日毕业的海内外本硕博毕业生。时间范围还挺宽松的,有想法的同学可以试一试。

京东这两年一直在高薪招人,去年东哥给的年终也很吸引人。零售部门 A+ 能拿满 8 个月,锁定 20 薪。

今天分享几位同学京东后端社招和实习的面经,大家一起来查缺补漏,完善自己的技术栈。

后端一面

1,ArrayList和LinkedList的区别是什么?

底层数据结构不同

  • ArrayList:基于动态数组实现,元素在内存中连续存储。
  • LinkedList:基于双向链表实现,元素通过节点链接,内存中不需要连续存储。

性能区别

1)ArrayList

  • 随机访问速度快,查找元素的时间复杂度为 O(1)。
  • 插入和删除操作慢,尤其是在中间插入或删除时,时间复杂度为 O(n),因为需要移动后续元素。

2)LinkedList

  • 随机访问速度慢,查找元素的时间复杂度为 O(n)。
  • 插入和删除操作快,尤其是在头尾插入或删除时,时间复杂度为 O(1)。

2,同步和异步的区别是什么?

同步(Synchronous)*和*异步(Asynchronous) 是两种不同的任务执行方式,主要区别在于任务的执行是否需要等待其他任务完成。

3,Java 如何创建多线程?

常见有以下五种方式创建使用多线程:

1)实现 Runnable 接口

  • 实现 Runnable 接口的 run() 方法,使用 Thread 类的构造函数传入 Runnable 对象,调用 start() 方法启动线程。
  • 例子:Thread thread = new Thread(new MyRunnable()); thread.start();

2)继承 Thread

  • 继承 Thread 类并重写 run() 方法,直接创建 Thread 子类对象并调用 start() 方法启动线程。
  • 例子:MyThread thread = new MyThread(); thread.start();

3)使用 CallableFutureTask

  • 实现 Callable 接口的 call() 方法,使用 FutureTask 包装 Callable 对象,再通过 Thread 启动。
  • 例子:FutureTask<Integer> task = new FutureTask<>(new MyCallable()); Thread thread = new Thread(task); thread.start();

4)使用线程池(ExecutorService

  • 通过 ExecutorService 提交 RunnableCallable 任务,不直接创建和管理线程,适合管理大量并发任务。
  • 例子:ExecutorService executor = Executors.newFixedThreadPool(10); executor.submit(new MyRunnable());

5)CompletableFuture(本质也是线程池,默认 forkjoinpool)

  • Java 8 引入的功能,非常方便地进行异步任务调用,且通过 thenApplythenAccept 等方法可以轻松处理异步任务之间的依赖关系。
  • CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> {});

4,浏览器输入 URL 后会发生什么?

浏览器会解析 URL,然后经 DNS 解析、缓存检查、DNS解析获取服务器IP、TCP三次握手建立连接、发送HTTP请求与接收响应、浏览器解析资源并渲染页面等核心步骤,浏览器最终会接收到服务器返回的响应,进行页面渲染展示。


5,什么是DNS 缓存机制?

DNS 会将查询结果临时存储在本地,以减少 DNS 解析的次数。 当用户访问某个域名时,如果缓存中已有对应的解析结果,就可以直接使用缓存数据,而不需要重新请求 DNS 服务器。

6,DNS 有几个级缓存?

  1. 浏览器缓存(TTL 通常几分钟到几小时)
  2. 操作系统缓存(Windows/Linux/macOS 维护的本地 DNS 缓存)
  3. 路由器缓存(家庭或企业路由器可能缓存 DNS 结果)
  4. 本地 ISP DNS 服务器缓存(ISP 提供的 DNS 服务器缓存大量常用域名)
  5. CDN 和权威 DNS 服务器缓存(用于优化全局 DNS 解析)

7,HTTP 301 和 302的区别是什么?

  • 5898 常见的 HTTP 状态码有哪些?

8,如何配置Nginx进行反向代理?

  • 2568 在 Nginx 中,如何配置反向代理?

9,为什么在消息队列中选择RabbitMQ而不是 Kafka?

  • 41 为什么使用 RabbitMQ 这个消息队列?它相比于其他的消息队列有哪些优点和缺点?

10,为什么先写 MySQL 再删除Redis?

  • 660 Redis 中如何保证缓存与数据库的数据一致性?

11,算法:如何翻转链表?

  • 5534 反转链表


后端一面

1,项目用到了哪些设计模式?

工作中常用的就是单例模式、简单工厂、策略、模板等设计模式。需要确保某个类只有一个实例,并提供一个全局访问点的时候,就能用到单例模式。很多时候设计模式在工作中都是组合使用的。

2,AOP 的原理是什么?

AOP(Aspect-Oriented Programming,面向切面编程) 是一种编程范式,AOP 的核心思想是将与业务逻辑无关的横切关注点抽取出来,通过声明的方式动态地应用到业务方法上,而不是将这些代码直接嵌入业务逻辑中。

3,Java 中哪些类使用了单例模式?

比如 Calendar:

▼java

复制代码Calendar calendar = Calendar.getInstance();

比如 Logger:

▼java

复制代码Logger logger = Logger.getLogger(MyClass.class.getName());

4,你对进程、线程和协程的理解是什么?

进程是资源分配的基本单位,进程之间是相互独立的。

线程是 CPU 调度的基本单位,属于进程,一个进程中可以包含多个线程。

协程(Coroutine)是一种轻量级的线程,它允许在执行中暂停并在之后恢复执行,而无需阻塞线程。

5,进程通信有哪些方式?

如:管道(Pipes)、命名管道(Named Pipes)、消息队列(Message Queues)、共享内存(Shared Memory)、信号量(Semaphores)、信号(Signal)、套接字(Sockets)、文件(File)。


6,Hashtable 和 ConcurrentHashMap 有什么区别?

它们都是 Java 中常用的线程安全的哈希表实现,它们主要在性能有显著的差异。

因为在线程安全性上的实现方式不同,导致了它们性能上的差别

  • HashtableHashtable 使用的是单一的锁机制(全表锁),即对整个哈希表进行同步,所有的操作(如插入、删除、查找等)都必须通过一个锁(synchronized)来保证线程安全。这种方式使得 Hashtable 在多线程环境下效率较低,因为无论是读取还是写入操作都需要获得锁,无法做到并发访问。
  • ConcurrentHashMap:在 Java 8 中,ConcurrentHashMap 采用了 CAS + synchronized 的方式进行线程安全控制。CAS 用于无锁的写入操作。如果某个 Node 节点为空,则通过 CAS 将数据插入节点。如果不为空,则会退化到 synchronized。使用 synchronized 锁定冲突节点的头结点。这种锁的粒度更细,仅锁住特定的冲突节点,而非整个表,因此在并发访问时性能较好。高的并发性能。

7,HashMap 的默认初始容量和扩容阈值是什么?

  • 451 Java 中 HashMap 的扩容机制是怎样的?
  • 453 为什么 Java 中 HashMap 的默认负载因子是 0.75?

8,数据库四种隔离性的特点是什么?

  • 606 MySQL 中的事务隔离级别有哪些?

9,如何进行慢 SQL 治理?

  • 631 如何在 MySQL 中监控和优化慢 SQL?
  • 616 MySQL 中如何进行 SQL 调优?

10,在哪些地方使用过消息队列?

  • 1085 什么是消息队列?
  • 1087 为什么需要消息队列?

11,介绍一下 Cookie、Session 和 Token 的区别?

  • 698 Cookie、Session、Token 之间有什么区别?

12,MyBatis的两级缓存及其特点是什么?

  • 1153 说说 MyBatis 的缓存机制?

13,MyBatis 在什么情况下会有 SQL 注入风险?

  • 1084 MyBatis 中 #{} 和 ${} 的区别是什么?

14,你了解反序列化漏洞吗?

在反序列化过程中,程序未对输入数据进行严格的验证,恶意用户可能发送伪造的序列化数据,利用程序漏洞执行任意代码或操作。

简单来说就是在反序列化中的数据夹带私货,让程序执行一些危险操作。

16,你了解哪些本地缓存组件?

  1. Ehcache:可以作为本地缓存,也支持集群化和分布式部署
  2. Guava Cache:Google 提供,它是一个轻量级的内存缓存解决方案,适用于小规模的缓存应用
  3. Caffeine:是 Guava Cache 的一个升级版,具有更高的性能和更丰富的缓存管理功能


后端实习一面

1,简单介绍一下 Redis,你在这个项目里怎么用它的?

Redis 通常应用于缓存、实时系统、消息队列、分布式锁、计数器等场景。

使用举例:基于内存的高性能键值对存储,在项目中负责分布式 Session 存储、限流功能的实现。

2,数据存在 MySQL 再查找不是也很快吗?

  • 635 Redis 为什么这么快?

3,Redis 常用数据结构有哪些?

  • 637 Redis 中常见的数据类型有哪些?

4,HTTP和HTTPS的区别是什么?

  • 672 HTTP 和 HTTPS 有什么区别?

5,equals和==的区别是什么?可以用equals对比两个对象吗?

  • 100 Java 中 hashCode 和 equals 方法是什么?它们与 == 操作符有什么区别?

6,ArrayList和LinkedList的区别是什么?

  • 9180 Java 中 ArrayList 和 LinkedList 有什么区别?

7,请解释TCP三次握手的过程。

  • 677 说说 TCP 的三次握手?

8,MySQL默认引擎是什么?为什么选择它?

  • 590 MySQL 的存储引擎有哪些?它们之间有什么区别?

9,@Component和@Service的区别是什么?

  • 766 @Component、@Controller、@Repository和@Service 的区别?

10,MQ你了解吗?

  • 1085 什么是消息队列?
  • 1087 为什么需要消息队列?

更多大厂真实面经,春招热门面试题,Java、C++、python、Go、运维、测试、大数据 ……等更多面试题目和详细解析

有需要的私信小编【学习】,即可免费领取

相关推荐

Java面试题及答案总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Redis、Linux、SpringBoot、Spring、MySQ...

Java面试题及答案最全总结(2025春招版)

大家好,我是Java面试分享最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Spring...

Java面试题及答案最全总结(2025版持续更新)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

蚂蚁金服面试题(附答案)建议收藏:经典面试题解析

前言最近编程讨论群有位小伙伴去蚂蚁金服面试了,以下是面试的真题,跟大家一起来讨论怎么回答。点击上方“捡田螺的小男孩”,选择“设为星标”,干货不断满满1.用到分布式事务嘛?为什么用这种方案,有其他方案...

测试工程师面试必问的十道题目!全答上来的直接免试

最近参加运维工程师岗位的面试,笔者把自己遇到的和网友分享的一些常见的面试问答收集整理出来了,希望能对自己和对正在准备面试的同学提供一些参考。一、Mongodb熟悉吗,一般部署几台?部署过,没有深入研究...

10次面试9次被刷?吃透这500道大厂Java高频面试题后,怒斩offer

很多Java工程师的技术不错,但是一面试就头疼,10次面试9次都是被刷,过的那次还是去了家不知名的小公司。问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。应届生:你该如何准备简历,面试项目和...

java高频面试题整理

【高频常见问题】1、事务的特性原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。一致性或可串性:事务的执行使得数据库从一种正确状态转换成另一种正确状态隔离性:在事务正确提交之前,不允许把该...

2025 年最全 Java 面试题,京东后端面试面经合集,答案整理

最近京东搞了个TGT计划,针对顶尖青年技术天才,直接宣布不设薪资上限。TGT计划面向范围包括2023年10月1日到2026年9月30日毕业的海内外本硕博毕业生。时间范围还...

idGenerator测评

工作中遇到需要生成随机数的需求,看了一个个人开发的基于雪花算法的工具,今天进行了一下测评(测试)。idGenerator项目地址见:https://github.com/yitter/IdGenera...

2024年开发者必备:MacBook Pro M1 Max深度体验与高效工作流

工作机器我使用的是一台16英寸的MacBookProM1Max。这台电脑的表现堪称惊人!它是我用过的最好的MacBook,短期内我不打算更换它。性能依然出色,即使在执行任务时也几乎听不到风扇的...

StackOverflow 2022 年度调查报告

一个月前,StackOverflow开启了2022年度开发者调查,历时一个半月,在6月22日,StackOverflow正式发布了2022年度开发者调查报告。本次报告StackO...

这可能是最全面的SpringDataMongoDB开发笔记

MongoDB数据库,在最近使用越来越广泛,在这里和Java的开发者一起分享一下在Java中使用Mongodb的相关笔记。希望大家喜欢。关于MongoDB查询指令,请看我的上一篇文章。SpringD...

Mac M2 本地部署ragflow

修改配置文件Dockerfile文件ARGNEED_MIRROR=1//开启国内镜像代理docker/.envREDIS_PORT=6380//本地redis端口冲突RAGFLOW_IMA...

别再傻傻分不清!localhost、127.0.0.1、本机IP,原来大有讲究!

调试接口死活连不上?部署服务队友访问不了?八成是localhost、127.0.0.1、本机IP用混了!这三个看似都指向“自己”的东西,差之毫厘谬以千里。搞不清它们,轻则调试抓狂,重则服务裸奔。loc...

我把 Mac mini 托管到机房了:一套打败云服务器的终极方案

我把我积灰的Macmini托管到机房了,有图有真相。没想到吧?一台在家吃灰的苹果电脑,帮我省了大钱!对,就是控制了自己的服务器,省了租用云服务器的钱,重要数据还全捏在自己手里,这感觉真爽。你可...

取消回复欢迎 发表评论: