还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
java高级面试题及答案前言本文整理了Java高级开发岗位常见的面试题,涵盖JVM、并发编程、框架原理、设计模式等核心领域,题型包括单选题、多选题、判断题及简答题,附标准答案内容基于Java技术体系的核心知识点,结合工程实践经验,可帮助面试者系统梳理知识体系,提升面试通过率
一、单选题(共30题,每题1分)(以下题目均为单选题,每题只有一个正确答案)Java虚拟机中,下列哪个区域的内存大小可以动态扩展且可能抛出OutOfMemoryError?A.方法区B.堆C.虚拟机栈D.本地方法栈以下关于Java垃圾回收(GC)的说法,错误的是?A.垃圾回收主要针对堆和方法区的内存回收B.可达性分析算法中,被称为“GC Roots”的对象包括虚拟机栈引用的对象C.Minor GC通常发生在新生代,回收频率较高D.G1垃圾收集器属于“分代式”GC线程安全的集合类是?A.ArrayListB.HashMapC.ConcurrentHashMapD.LinkedList第1页共14页Java8引入的哪个特性允许函数式编程风格?A.Lambda表达式B.泛型C.注解D.内部类Spring框架中,Bean的默认作用域是?A.单例(Singleton)B.原型(Prototype)C.请求(Request)D.会话(Session)以下哪种情况会导致线程进入“阻塞状态”?A.线程调用start方法后B.线程获取对象锁成功后C.线程调用wait方法后D.线程执行完run方法后JVM中,哪个区域存储方法的局部变量、操作数栈、动态链接等信息?A.堆B.虚拟机栈C.方法区D.程序计数器关于Java并发中的“锁”,下列说法正确的是?A.synchronized是可重入锁B.ReentrantLock是非公平锁,无法修改为公平锁C.读写锁(ReadWriteLock)中,写锁可被多个线程持有D.锁升级的过程是无锁→偏向锁→轻量级锁→重量级锁第2页共14页Spring事务传播行为中,“REQUIRED”的含义是?A.如果当前没有事务,则创建新事务;如果已有事务,则加入该事务B.必须在事务中执行,否则抛出异常C.以非事务方式执行,如果当前有事务则挂起D.无论当前是否有事务,都创建新事务以下哪个不是JVM调优的核心参数?A.-Xms(初始堆大小)B.-Xmx(最大堆大小)C.-XX:NewRatio(新生代与老年代比例)D.-XX:+UseSerialGC(使用G1收集器)Java中,“==”和equals的区别是?A.两者都比较对象地址B.==比较对象地址,equals默认比较对象地址,可重写为比较内容C.equals比较对象内容,==默认比较内容,可重写为比较地址D.无区别,完全相同关于HashMap和ConcurrentHashMap的区别,错误的是?A.HashMap线程不安全,ConcurrentHashMap线程安全B.HashMap允许key为null,ConcurrentHashMap不允许C.HashMap扩容时会复制整个数组,ConcurrentHashMap分段锁优化D.JDK
1.8后ConcurrentHashMap采用CAS+synchronized实现并发控制以下哪种异常不会导致线程终止?A.NullPointerExceptionB.RuntimeExceptionC.Error(如OutOfMemoryError)第3页共14页D.checked异常(如IOException)Spring AOP中,“切面(Aspect)”包含的要素是?A.连接点(Join Point)、切入点(Pointcut)、通知(Advice)B.目标对象(Target)、代理对象(Proxy)、织入(Weaving)C.前置通知(Before)、后置通知(After)、环绕通知(Around)D.切入点表达式、通知类型、目标类Java9引入的哪个特性用于简化集合创建?A.Stream APIB.List.ofC.OptionalD.CompletableFuture关于线程池,下列参数中控制核心线程创建时机的是?A.corePoolSize(核心线程数)B.maximumPoolSize(最大线程数)C.keepAliveTime(空闲线程存活时间)D.workQueue(任务队列)JVM中,“双亲委派模型”的作用是?A.提高JVM性能B.避免类重复加载,保证类的安全性C.简化类加载过程D.加速垃圾回收Spring中,“依赖注入(DI)”的核心思想是?A.对象自己创建依赖对象B.通过外部容器注入依赖对象,降低耦合C.使用new关键字直接创建依赖对象第4页共14页D.依赖对象在编译期确定以下哪个是Java11新增的特性?A.var关键字B.Stream APIC.String.isBlankD.CompletableFuture关于“ThreadLocal”的说法,正确的是?A.ThreadLocal存储的变量线程间共享B.ThreadLocal通过synchronized保证线程安全C.ThreadLocal为每个线程提供独立的变量副本D.使用ThreadLocal无需手动清理资源以下哪种情况会导致Java内存泄漏?A.创建对象后未使用,且无引用指向B.静态集合中存放对象未移除C.线程池任务未执行完毕导致的内存占用D.大对象频繁创建但及时释放Spring Boot自动配置的核心注解是?A.@SpringBootApplicationB.@ConfigurationC.@ComponentScanD.@EnableAutoConfigurationJava并发中,“CountDownLatch”的作用是?A.让线程等待某个条件成立B.让线程之间同步执行C.允许一个线程等待多个线程完成第5页共14页D.控制线程执行顺序关于“单例模式”,以下实现中线程安全且高效?A.饿汉式B.懒汉式(同步方法)C.双重检查锁(DCL)D.静态内部类JVM中,“元空间(Metaspace)”与永久代(PermGen)的区别是?A.元空间使用本地内存,永久代使用JVM堆内存B.元空间有大小限制,永久代无限制C.元空间存储类信息,永久代不存储D.元空间在JDK8中引入,永久代在JDK7中移除Spring事务中,如果一个方法抛出RuntimeException,默认情况下事务会?A.不回滚B.回滚C.取决于传播行为D.无法确定Java8的“Stream API”中,哪个方法用于对元素进行过滤?A.mapB.filterC.reduceD.collect以下哪个是“工厂模式”的核心思想?A.将对象创建与使用分离,通过工厂类统一创建对象B.直接通过new创建对象第6页共14页C.使用继承扩展类功能D.用组合替代继承关于“线程池参数”,当任务队列满后,调用execute方法会?A.直接执行任务B.抛出RejectedExecutionExceptionC.阻塞等待队列有空余位置D.由调用线程执行任务以下哪种情况会导致线程进入“就绪状态”?A.线程调用sleep方法后B.线程获取对象锁后C.线程调用start方法后D.线程执行wait方法后
二、多选题(共20题,每题2分)(以下题目均为多选题,每题至少有一个正确答案,多选、少选、错选均不得分)JVM内存模型包含的区域有?A.堆B.方法区C.虚拟机栈D.本地方法栈以下属于Java并发工具类的有?A.CountDownLatchB.CyclicBarrierC.SemaphoreD.ThreadLocal第7页共14页Spring IoC容器的初始化过程包括?A.加载配置文件/注解B.创建BeanDefinition对象C.实例化Bean并注入依赖D.销毁BeanJava8的新特性有?A.Lambda表达式B.Stream APIC.Optional类D.接口默认方法关于HashMap的说法,正确的有?A.基于数组+链表/红黑树实现B.数组长度始终为2的幂次C.扩容时阈值(loadFactor)默认为
0.75D.线程安全以下哪些是JVM调优的目标?A.减少GC停顿时间B.提高内存利用率C.优化CPU占用率D.缩短程序响应时间Spring事务的传播行为包括?A.REQUIREDB.SUPPORTSC.MANDATORYD.NEVER第8页共14页线程安全的集合类有?A.VectorB.HashtableC.CopyOnWriteArrayListD.HashSet关于“类加载过程”,正确的步骤有?A.加载(Loading)B.验证(Verification)C.准备(Preparation)D.解析(Resolution)、初始化(Initialization)Java中的“异常体系”包含哪些类型?A.ErrorB.ExceptionC.RuntimeExceptionD.Checked ExceptionSpring AOP的通知类型有?A.BeforeB.AfterReturningC.AfterThrowingD.Around线程池的核心参数包括?A.corePoolSizeB.maximumPoolSizeC.keepAliveTimeD.workQueue第9页共14页JVM的垃圾收集算法有?A.标记-清除(Mark-Sweep)B.标记-复制(Mark-Copy)C.标记-整理(Mark-Compact)D.分代收集(Generational Collection)以下属于设计模式中“创建型模式”的有?A.单例模式B.工厂方法模式C.观察者模式D.抽象工厂模式Java11的新特性有?A.String新增方法(isBlank、lines)B.HttpClient成为标准APIC.移除永久代,使用元空间D.局部变量类型推断(var)关于“锁机制”,正确的有?A.synchronized是可重入锁B.ReentrantLock可中断C.StampedLock支持乐观读D.偏向锁适合无竞争场景Spring Boot自动配置的条件注解有?A.@ConditionalOnClassB.@ConditionalOnMissingBeanC.@ConditionalOnPropertyD.@ConditionalOnResource第10页共14页Java并发中的“可见性”问题可通过哪些方式解决?A.volatile关键字B.synchronized关键字C.Lock接口D.ThreadLocal关于“Stream API”的中间操作,正确的有?A.filter过滤元素B.map转换元素类型C.sorted排序元素D.distinct去重元素以下属于“行为型模式”的有?A.策略模式B.模板方法模式C.状态模式D.建造者模式
三、判断题(共20题,每题1分)(正确的打“√”,错误的打“×”)Java中的接口可以继承多个接口()HashMap的初始容量默认为16()synchronized是Java的关键字,可用于修饰方法和代码块()Spring Bean的作用域为原型(Prototype)时,每次获取都会创建新对象()Java8中的Stream API是多线程处理集合的工具()ThreadLocal不保证线程安全,因为多个线程可能操作同一ThreadLocal变量()第11页共14页JVM的“方法区”用于存储当前线程执行的方法调用栈帧()线程池的workQueue参数是用于存储等待执行的任务()Spring事务默认只对RuntimeException进行回滚()双亲委派模型中,子类加载器优先于父类加载器加载类()Java9的“模块系统(Module)”主要用于解决代码复用问题()ReentrantLock的lock方法是可中断的()ConcurrentHashMap在JDK
1.8中完全摒弃了分段锁(Segment)()线程调用wait方法后,会释放对象锁并进入等待状态()SpringAOP的核心是动态代理,默认使用JDK动态代理()类加载过程中的“初始化”阶段会执行静态变量赋值和静态代码块()Java中的“泛型擦除”意味着泛型在运行时会被转换为Object类型()线程池的拒绝策略中,CallerRunsPolicy会让调用线程执行任务()“元空间(Metaspace)”的大小受本地内存限制,无固定上限()Java11中的var关键字可以用于声明所有类型的变量()
四、简答题(共2题,每题5分)简述JVM内存模型包含哪些主要区域,各区域的作用是什么?说明Java线程池的核心参数及其在实际开发中的配置原则参考答案
一、单选题第12页共14页B
2.D
3.C
4.A
5.A
6.C
7.B
8.A
9.A
10.DB
12.B
13.D
14.A
15.B
16.A
17.B
18.B
19.C
20.CB
22.A
23.C
24.C
25.A
26.B
27.B
28.A
29.B
30.C
二、多选题ABCD
32.ABC
33.ABC
34.ABCD
35.ABC
36.ABD
37.ABCD
38.ABC
39.ABCDE
40.ABCDABCD
42.ABCD
43.ABCD
44.ABD
45.AB
46.ABCD
47.ABCD
48.AB
49.ABCD
50.ABC
三、判断题√
52.√
53.√
54.√
55.×(Stream API默认单线程)
56.×(ThreadLocal为每个线程独立副本,线程安全)×(方法区存储类信息,虚拟机栈存储栈帧)
58.√
59.√
60.×(双亲委派父类加载器优先)×(模块系统主要解决代码封装和依赖管理)
62.×(lockInterruptibly可中断,lock不可)
63.√√
65.√
66.√
67.√
68.√
69.√
70.×(var不可用于声明null、final常量等)
四、简答题JVM内存模型主要区域及作用堆(Heap)线程共享,存储对象实例和数组,GC主要区域方法区(Method Area)线程共享,存储类信息、常量、静态变量等第13页共14页虚拟机栈(VM Stack)线程私有,存储方法调用栈帧(局部变量、操作数栈等)本地方法栈(Native MethodStack)线程私有,服务于Native方法程序计数器(Program Counter)线程私有,记录当前线程执行位置线程池核心参数及配置原则核心参数corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲线程存活时间)、workQueue(任务队列)、handler(拒绝策略)配置原则-核心线程数=CPU核心数+1(IO密集型可适当增加);-最大线程数=核心线程数+队列容量(避免无限扩展);-任务队列选择有界队列(防OOM)+拒绝策略(CallerRunsPolicy/AbortPolicy);-根据业务场景调整存活时间,减少线程创建销毁开销注以上题目及答案基于Java技术体系核心知识点整理,实际面试中可结合具体公司业务场景进一步深入探讨第14页共14页。
个人认证
优秀文档
获得点赞 0