常见Java面试题

本文涉及的产品
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 常见Java面试题

一、Java基础

1、Arrays.sort实现原理和Collections.sort实现原理

答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort实现的。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后合并起来.


2、foreach和while的区别(编译之后) 线程池的种类,区别和使用场景


3、分析线程池的实现原理和线程的调度过程


4、线程池如何调优


5、线程池的最大线程数目根据什么确定


6、动态代理的几种方式


7、HashMap的并发问题


8、了解LinkedHashMap的应用吗


9、反射的原理,反射创建类实例的三种方式是什么?


10、cloneable接口实现原理,浅拷贝or深拷贝


11、Java NIO使用


12、hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决


13、arraylist和linkedlist区别及实现原理


14、反射中,Class.forName和ClassLoader区别


15、String,Stringbuffer,StringBuilder的区别?


16、有没有可能2个不相等的对象有相同的hashcode


17、简述NIO的最佳实践,比如netty,mina


18、TreeMap的实现原理


二、JVM相关


1、类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序


2、JVM内存分代


3、Java 8的内存分代改进


4、JVM垃圾回收机制,何时触发MinorGC等操作


5、jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等


6、你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1


7、新生代和老生代的内存回收策略


8、Eden和Survivor的比例分配等


9、深入分析了Classloader,双亲委派机制


10、JVM的编译优化


11、对Java内存模型的理解,以及其在并发中的应用


12、指令重排序,内存栅栏等


13、OOM错误,stackoverflow错误,permgen space错误


14、JVM常用参数


15、tomcat结构,类加载器流程


16、volatile的语义,它修饰的变量一定线程安全吗


17、g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择


18、说一说你对环境变量classpath的理解?如果一个类不在classpath下,为什么会抛出ClassNotFoundException异常,如果在不改变这个类路径的前期下,怎样才能正确加载这个类?


19、说一下强引用、软引用、弱引用、虚引用以及他们之间和gc的关系


20、常见Java面试题大综合,非常值得一看,面试必备!!!


三、JUC/并发相关


1、ThreadLocal用过么,原理是什么,用的时候要注意什么


2、Synchronized和Lock的区别


3、synchronized 的原理,什么是自旋锁,偏向锁,轻量级锁,什么叫可重入锁,什么叫公平锁和非公平锁


4、concurrenthashmap具体实现及其原理,jdk8下的改版


5、用过哪些原子类,他们的参数以及原理是什么


6、cas是什么,他会产生什么问题(ABA问题的解决,如加入修改次数、版本号)


7、如果让你实现一个并发安全的链表,你会怎么做


8、简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处


9、简述AQS的实现原理


10、countdowlatch和cyclicbarrier的用法,以及相互之间的差别?


11、concurrent包中使用过哪些类?分别说说使用在什么场景?为什么要使用?


12、LockSupport工具


13、Condition接口及其实现原理


14、Fork/Join框架的理解


15、jdk8的parallelStream的理解


16、分段锁的原理,锁力度减小的思考


17、常见Java面试题大综合,非常值得一看,面试必备!!!


四、Spring


1、Spring AOP与IOC的实现原理


2、Spring的beanFactory和factoryBean的区别


3、为什么CGlib方式可以对接口实现代理?


4、RMI与代理模式


5、Spring的事务隔离级别,实现原理


6、对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的?


7、Mybatis的底层实现原理


8、MVC框架原理,他们都是怎么做url路由的


9、spring boot特性,优势,适用场景等


10、quartz和timer对比


11、spring的controller是单例还是多例,怎么保证并发的安全


五、分布式相关


1、Dubbo的底层实现原理和机制


2、描述一个服务从发布到被消费的详细过程


3、分布式系统怎么做服务治理


4、接口的幂等性的概念


5、消息中间件如何解决消息丢失问题


6、Dubbo的服务请求失败怎么处理


7、重连机制会不会造成错误


8、对分布式事务的理解


9、如何实现负载均衡,有哪些算法可以实现?


10、Zookeeper的用途,选举的原理是什么?


11、数据的垂直拆分水平拆分。


12、zookeeper原理和适用场景


13、zookeeper watch机制


14、redis/zk节点宕机如何处理


15、分布式集群下如何做到唯一序列号


16、如何做一个分布式锁


17、用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗


18、MQ系统的数据如何保证不丢失


19、列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。


20、算法&数据结构&设计模式


21、海量url去重类问题(布隆过滤器)


22、数组和链表数据结构描述,各自的时间复杂度


23、二叉树遍历


24、快速排序


六、BTree相关的操作


1、在工作中遇到过哪些设计模式,是如何应用的


2、hash算法的有哪几种,优缺点,使用场景


3、什么是一致性hash


4、paxos算法


5、在装饰器模式和代理模式之间,你如何抉择,请结合自身实际情况聊聊


6、代码重构的步骤和原因,如果理解重构到模式?


7、数据库


8、MySQL InnoDB存储的文件结构


9、索引树是如何维护的?


10、数据库自增主键可能的问题


11、MySQL的几种优化


12、mysql索引为什么使用B+树


13、数据库锁表的相关处理


14、索引失效场景


15、高并发下如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB的行级锁有哪2种,解释其含义


16、数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁


七、Redis缓存相关


1、Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗


2、缓存机器增删如何对系统影响最小,一致性哈希的实现


3、Redis持久化的几种方式,优缺点是什么,怎么实现的


4、Redis的缓存失效策略


5、缓存穿透的解决办法


6、redis集群,高可用,原理


7、mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据


8、用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次


9、redis的数据淘汰策略


八、网络相关


1、http1.0和http1.1有什么区别


2、TCP/IP协议


3、TCP三次握手和四次挥手的流程,为什么断开连接要4次,如果握手只有两次,会出现什么


4、TIME_WAIT和CLOSE_WAIT的区别


5、说说你知道的几种HTTP响应码


6、当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤


7、TCP/IP如何保证可靠性,数据包有哪些数据组成


8、长连接与短连接


9、Http请求get和post的区别以及数据包格式


10、简述tcp建立连接3次握手,和断开连接4次握手的过程;关闭连接时,出现TIMEWAIT过多是由什么原因引起,是出现在主动断开方还是被动断开方。


九、其他


1、maven解决依赖冲突,快照版和发行版的区别


2、Linux下IO模型有几种,各自的含义是什么


3、实际场景问题,海量登录日志如何排序和处理SQL操作,主要是索引和聚合函数的应用


4、实际场景问题解决,典型的TOP K问题


5、线上bug处理流程


6、如何从线上日志发现问题


7、linux利用哪些命令,查找哪里出了问题(例如io密集任务,cpu过度)


8、场景问题,有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有10个线程同时调用它,如何做到。


9、用三个线程按顺序循环打印abc三个字母,比如abcabcabc。


10、常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的


11、设计一个秒杀系统,30分钟没付款就自动关闭交易(并发会很高)


12、请列出你所了解的性能测试工具


13、后台系统怎么防止请求重复提交?


14、有多个相同的接口,我想客户端同时请求,然后只需要在第一个请求返回结果的时候返回给客户端。

相关文章
|
10月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
524 1
|
10月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
397 3
|
7月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
9月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
607 0
|
9月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
399 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
10月前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
5592 50
|
7月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
10月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
272 5
|
10月前
|
Java API 微服务
2025 年 Java 校招面试全攻略:从面试心得看 Java 岗位求职技巧
《2025年Java校招最新技术要点与实操指南》 本文梳理了2025年Java校招的核心技术栈,并提供了可直接运行的代码实例。重点技术包括: Java 17+新特性(Record类、Sealed类等) Spring Boot 3+WebFlux响应式编程 微服务架构与Spring Cloud组件 Docker容器化部署 Redis缓存集成 OpenAI API调用 通过实际代码演示了如何应用这些技术,如Java 17的Record类简化POJO、WebFlux构建响应式API、Docker容器化部署。
505 5
下一篇
开通oss服务