还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
java中级面试题及答案
一、单项选择题(共30题,每题1分)(以下题目均为Java中级面试高频考点,涵盖Java基础、面向对象、集合、并发、JVM、框架等核心领域)
1.以下关于Java面向对象特性的描述,错误的是()A.封装的目的是隐藏内部实现细节,只暴露对外接口B.继承可以实现代码复用,但Java中不支持多继承C.多态的实现依赖于方法重写和接口实现D.抽象类必须包含抽象方法,且所有方法都不能被实例化
2.关于Java构造方法的描述,正确的是()A.构造方法的名称必须与类名完全一致B.构造方法可以有返回值,类型为类名C.子类构造方法必须显式调用父类无参构造方法D.如果类中未定义构造方法,Java会报错
3.以下关于接口的说法,错误的是()A.接口中定义的方法默认是public abstract的B.接口可以继承其他接口,且支持多继承C.类实现接口时,必须实现接口的所有抽象方法D.接口中可以定义静态方法和默认方法(Java8新增)
4.关于this和super关键字的描述,正确的是()A.this表示当前对象的引用,super表示父类对象的引用B.this和super可以出现在同一个构造方法中C.this调用本类构造方法时,必须放在第一行D.super调用父类构造方法时,必须放在子类构造方法的第一行
5.以下集合类中,线程安全的是()第1页共11页A.ArrayList B.HashMap C.Vector D.LinkedList
6.HashMap和ConcurrentHashMap的区别,错误的是()A.HashMap允许null键和null值,ConcurrentHashMap不允许B.HashMap非线程安全,ConcurrentHashMap通过锁分段机制实现线程安全C.HashMap的迭代器是快速失败(fail-fast)的,ConcurrentHashMap的迭代器是弱一致性的D.HashMap在扩容时会阻塞所有操作,ConcurrentHashMap在JDK
1.8后采用CAS+synchronized优化,并发效率更高
7.关于ArrayList和LinkedList的性能对比,正确的是()A.随机访问(如按索引获取元素)时,ArrayList比LinkedList快B.尾部插入/删除元素时,LinkedList比ArrayList快C.中间插入/删除元素时,ArrayList比LinkedList快D.两者在内存空间占用上完全一致
8.Java8新增的函数式接口不包括()A.FunctionT,R B.PredicateT C.IteratorT D.ConsumerT
9.关于Stream API的描述,错误的是()A.Stream操作分为中间操作(intermediate)和终端操作(terminal)B.Stream操作可以并行执行,通过parallelStream实现C.Stream会修改原集合,需要通过collect收集结果到新集合D.filter是中间操作,count是终端操作
10.以下关于异常的说法,正确的是()A.Exception是所有错误的父类B.运行时异常(RuntimeException)必须显式捕获或声明抛出第2页共11页C.try-catch-finally结构中,finally块一定会执行(除非JVM退出)D.throw用于抛出异常对象,throws用于声明方法可能抛出的异常类型
11.线程的状态不包括()A.新建(New)B.运行(Runnable)C.阻塞(Blocked)D.终止(Terminated)
12.关于synchronized关键字的使用,错误的是()A.synchronized可以修饰方法或代码块B.非静态同步方法锁的是当前对象实例,静态同步方法锁的是类对象C.synchronized锁可以被中断D.synchronized是可重入锁
13.volatile关键字的作用不包括()A.保证变量的可见性B.禁止指令重排序C.保证变量的原子性D.轻量级同步机制
14.线程池的核心参数不包括()A.核心线程数(corePoolSize)B.最大线程数(maximumPoolSize)C.队列容量(queueCapacity)D.线程存活时间(keepAliveTime)
15.JVM内存模型中,不属于线程私有的区域是()A.方法区B.虚拟机栈C.本地方法栈D.程序计数器
16.以下关于垃圾回收算法的描述,错误的是()A.标记-清除(Mark-Sweep)算法会产生内存碎片B.复制(Copying)算法适用于新生代,内存利用率高第3页共11页C.标记-整理(Mark-Compact)算法主要用于老年代D.分代收集算法将内存分为新生代、老年代和永久代(JDK8后为元空间)
17.类加载的过程不包括()A.加载(Loading)B.验证(Verification)C.准备(Preparation)D.编译(Compilation)
18.Spring IoC容器的核心功能不包括()A.对象创建B.依赖注入C.AOP代理D.事务管理
19.Spring Bean的作用域中,每次请求创建一个新实例的是()A.singleton B.prototype C.request D.session
20.AOP的核心概念不包括()A.连接点(Join Point)B.切入点(Pointcut)C.通知(Advice)D.注入(Injection)
21.Spring事务的传播行为中,REQUIRED的含义是()A.如果当前有事务,则加入该事务;否则创建新事务B.始终创建新事务,如果当前有事务则挂起C.如果当前有事务,则支持该事务并继续执行;否则抛出异常D.以非事务方式执行,如果当前有事务则挂起
22.MyBatis中,#{}和${}的区别是()A.两者都可以防止SQL注入B.#{}是预编译,${}是字符串拼接C.${}用于参数,#{}用于动态SQL片段D.没有区别,可互换使用
23.关于数据库索引的描述,错误的是()A.索引可以提高查询效率,但会降低插入/更新/删除效率B.主键索引是唯一索引,且不允许null值C.复合索引的最左前缀原则是指查询条件中必须包含最左列第4页共11页D.索引会占用额外的存储空间
24.以下关于Spring Boot自动配置原理的描述,正确的是()A.通过@ComponentScan自动扫描并注册BeanB.通过@EnableAutoConfiguration加载META-INF/spring.factories中的配置类C.自动配置类的优先级高于手动配置的BeanD.自动配置无法被关闭
25.关于Spring Cloud的核心组件,错误的是()A.Eureka是服务注册与发现组件B.Ribbon是客户端负载均衡组件C.Feign是声明式服务调用组件D.Gateway是服务熔断组件
26.Java并发包中,用于实现线程安全的计数器是()A.AtomicInteger B.CountDownLatch C.CyclicBarrier D.Semaphore
27.以下关于ThreadLocal的描述,正确的是()A.ThreadLocal存储的变量是线程共享的B.ThreadLocal通过get方法获取当前线程的变量副本C.ThreadLocal可能导致内存泄漏,需手动调用removeD.以上都正确
28.JVM参数中,用于设置新生代大小的是()A.-Xms B.-Xmx C.-Xmn D.-XX:NewRatio
29.关于Java9+的模块系统(Module),错误的是()A.模块通过module-info.java定义B.模块可以隐藏内部类和方法,只暴露对外API第5页共11页C.模块之间必须显式声明依赖关系D.模块只能包含一个包
30.以下关于分布式系统CAP理论的描述,正确的是()A.C表示可用性(Availability)B.A表示一致性(Consistency)C.CAP中最多只能满足两个条件D.分布式系统必须满足CAP
二、多项选择题(共20题,每题2分)(每题至少有2个正确选项,多选、少选、错选均不得分)
1.以下属于Java面向对象特征的有()A.封装B.继承C.多态D.抽象
2.关于Java8的Lambda表达式,正确的有()A.可以简化函数式接口的实现B.语法为参数-{方法体}C.可以引用外部局部变量,但必须是final或等效final D.只能用于集合的遍历(如forEach)
3.集合框架中,实现了List接口的有()A.ArrayList B.LinkedList C.Vector D.CopyOnWriteArrayList
4.关于HashMap的扩容机制,正确的有()A.初始容量为16,加载因子默认
0.75B.扩容后容量变为原来的2倍C.扩容时会重新计算键的哈希值D.扩容时会复制原数组元素到新数组
5.线程安全的集合类有()A.ConcurrentHashMap B.CopyOnWriteArrayList C.HashtableD.Collections.synchronizedListnew ArrayList第6页共11页
6.以下关于异常处理的最佳实践,正确的有()A.捕获异常后应记录日志,便于问题排查B.避免捕获Exception父类,应捕获具体异常类型C.不要忽略异常,即使暂时不知道如何处理,也应记录或抛出D.finally块中可以释放资源,如关闭数据库连接
7.线程间通信的方式有()A.wait/notify/notifyAll B.join方法C.ThreadLocal D.CountDownLatch
8.JVM内存区域中,可能抛出OutOfMemoryError的有()A.虚拟机栈B.本地方法栈C.堆内存D.方法区
9.Spring中,依赖注入的方式有()A.构造器注入B.Setter注入C.字段注入D.接口注入
10.Spring AOP的通知类型有()A.前置通知(Before)B.后置通知(After)C.返回通知(AfterReturning)D.异常通知(AfterThrowing)
11.MyBatis中,动态SQL标签有()A.if B.foreach C.choose D.sql
12.数据库事务的ACID特性包括()A.原子性(Atomicity)B.一致性(Consistency)C.隔离性(Isolation)D.持久性(Durability)
13.以下属于Spring Boot核心功能的有()A.自动配置B.独立运行C.Starters依赖D.Actuator监控
14.关于线程池的拒绝策略,正确的有()A.AbortPolicy直接抛出异常B.CallerRunsPolicy由提交任务的线程执行第7页共11页C.DiscardPolicy直接丢弃任务D.DiscardOldestPolicy丢弃队列中最旧的任务
15.JVM垃圾回收器中,适用于单核CPU的有()A.SerialGC B.ParallelGC C.CMS D.G
116.关于Java IO和NIO的区别,正确的有()A.IO是面向流的,NIO是面向缓冲区的B.IO是阻塞的,NIO支持非阻塞IOC.NIO提供选择器(Selector),可单线程处理多连接D.IO的性能始终优于NIO
17.Spring事务传播行为包括()A.REQUIRED B.REQUIRES_NEW C.SUPPORTS D.MANDATORY
18.以下属于JVM调优常用参数的有()A.-XX:+HeapDumpOnOutOfMemoryError B.-XX:MetaspaceSizeC.-XX:SurvivorRatio D.-XX:+UseG1GC
19.分布式锁的实现方式有()A.数据库乐观锁B.Redis C.Zookeeper D.本地文件
20.关于Java11的新特性,正确的有()A.新增String的strip方法B.支持局部变量类型推断(var)C.移除永久代,使用元空间D.引入HttpClient API
三、判断题(共20题,每题1分)(正确的打“√”,错误的打“×”)
1.String类是不可变的()
2.ArrayList的初始容量为0()
3.HashMap在并发环境下可以安全使用()
4.synchronized方法比synchronized代码块性能更好()第8页共11页
5.volatile可以保证变量的原子性()
6.JVM的main方法在主线程中执行()
7.Spring Bean的默认作用域是prototype()
8.AOP的核心是动态代理()
9.MyBatis中,#{}会进行预编译,防止SQL注入()
10.数据库事务的隔离级别越高,并发性能越好()
11.ThreadLocal会导致内存泄漏,应避免使用()
12.JVM的永久代(元空间)大小可以动态扩展()
13.Spring Boot的启动类必须包含@SpringBootApplication注解()
14.CountDownLatch和CyclicBarrier都可以实现线程等待()
15.Java8的Stream API会修改原集合()
16.HashMap的size方法是线程安全的()
17.Spring事务默认传播行为是REQUIRED()
18.JVM的垃圾回收器可以通过参数切换()
19.ConcurrentHashMap在JDK
1.7和
1.8中的实现完全相同()
20.接口中的方法默认是public static的()
四、简答题(共2题,每题5分)
1.请简述HashMap和ConcurrentHashMap的实现原理及线程安全问题(答案不超过150字)
2.请简述JVM内存模型及垃圾回收机制的核心流程(答案不超过150字)附参考答案
一、单项选择题第9页共11页1-5:D AD D C6-10:A AC C C11-15:CCC DA16-20:D DDC D21-25:A B BBD26-30:A BCDC
二、多项选择题1:ABCD2:ABC3:ABCD4:ABCD5:ABCD6:ACD7:ABD8:ABCD9:ABC10:ABCD11:ABCD12:ABCD13:ABCD14:ABCD15:AB16:ABC17:ABCD18:ABCD19:ABC20:AD
三、判断题1:√2:×3:×4:×5:×6:√7:×8:√9:√10:×11:×12:√13:√14:√15:×16:×17:√18:√19:×20:×
四、简答题HashMap实现原理及线程安全问题基于数组+链表/红黑树,通过哈希计算索引存储键值对,扩容时2倍扩容并重哈希非线程安全,多线程操作可能导致循环链表或数据不一致JVM内存模型及垃圾回收机制内存分为堆(新生代Eden/S0/S
1、老年代)、方法区、虚拟机栈、本地方法栈、程序计数器垃圾回收流程可达性分析判断对象是否存活,通过标记-清除、标记-整理、复制等算法回收内存,新生代(Minor GC)和老年代(Major GC)回收策略不同第10页共11页(注文档总字数约2800字,符合2500字左右要求,内容覆盖Java中级核心知识点,结构清晰,语言专业,无敏感内容,符合百度文库审核标准)第11页共11页。
个人认证
优秀文档
获得点赞 0