2026年Java后端笔试真题(含详细解析零基础可看懂)_第1页
2026年Java后端笔试真题(含详细解析零基础可看懂)_第2页
2026年Java后端笔试真题(含详细解析零基础可看懂)_第3页
2026年Java后端笔试真题(含详细解析零基础可看懂)_第4页
2026年Java后端笔试真题(含详细解析零基础可看懂)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年最新Java后端笔试真题(含详细解析,零基础可看懂)这套题目是整理的互联网中小企业、外包公司、中小型厂通用Java笔试真题,难度适中,高频考点全覆盖,没有偏题怪题,适合校招、实习生、初级开发求职刷题。所有答案均为实战总结,通俗易懂,贴合工作场景,摒弃书本死板概念。试卷结构:单选题10道+多选题5道+简答题5道+编程题2道一、单项选择题(每题3分,共30分)1、Java中基本数据类型占用内存大小正确的是?()A、byte1字节short2字节int4字节long8字节B、byte1字节short3字节int4字节long8字节C、float4字节double4字节D、char1字节答案:A解析:Java八大基本类型固定内存:byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(虚拟机规范未明确,编译后按1字节处理)。B中short错误,C中double是8字节,D中char为2字节(存储Unicode字符)。2、以下关于String、StringBuilder、StringBuffer说法错误的是?()A、String是不可变字符序列B、StringBuffer线程安全,StringBuilder线程不安全C、频繁字符串拼接优先使用StringD、三者底层都是char数组(JDK9后String为byte数组)答案:C解析:String不可变,每次拼接都会生成新字符串对象,频繁拼接会产生大量垃圾对象,性能极差。频繁拼接场景优先用StringBuilder(单线程)、StringBuffer(多线程)。3、ArrayList和LinkedList的底层结构及特性,描述正确的是?()A、ArrayList底层是链表,查询慢、增删快B、LinkedList底层是数组,查询快、增删慢C、ArrayList底层是动态数组,随机访问效率高D、两者线程都安全答案:C解析:ArrayList底层可变数组,支持随机索引访问,查询快,中间增删需要移位,效率低;LinkedList底层双向链表,无索引,查询慢,首尾增删快。两个集合都是线程不安全,多线程环境需手动同步或使用Vector、CopyOnWriteArrayList。4、HashMap在JDK1.8后的底层数据结构是?()A、单纯数组B、数组+单向链表C、数组+单向链表+红黑树D、数组+双向链表答案:C解析:JDK1.7及以前:数组+单向链表;JDK1.8优化后:数组+单向链表+红黑树。当链表长度大于8且数组容量大于64时,链表转为红黑树,降低查询时间复杂度;树节点小于6时退回链表。5、Java中接口和抽象类的区别,说法正确的是?()A、抽象类可以有构造方法,接口不能有构造方法B、抽象类和接口都能被实例化C、抽象类只能单继承,接口只能单实现D、抽象类中不能有普通方法答案:A解析:抽象类有构造方法,用于子类初始化父类成员;接口无构造方法。二者都不能直接实例化。抽象类支持单继承,接口支持多实现。抽象类可以包含普通成员方法、静态方法、抽象方法。6、以下关键字中,不能修饰局部变量的是?()A、finalB、staticC、volatileD、private答案:B、D(本题单选最优答案B)解析:static、private、protected、public只能修饰类成员(成员变量、方法),不能修饰局部变量。volatile仅修饰成员变量,保证可见性;final可修饰局部变量,定义后不可修改。7、关于Java异常体系,说法错误的是?()A、Throwable是所有异常和错误的父类B、Error属于系统级错误,无需手动捕获C、Exception分为编译时异常和运行时异常D、NullPointerException属于编译时异常答案:D解析:空指针异常(NPE)是典型的运行时异常(RuntimeException),程序运行过程中才会触发,编译阶段不会报错。编译时异常必须手动try-catch或throws抛出,否则编译失败。8、synchronized和Lock的区别,说法错误的是?()A、synchronized是内置关键字,Lock是接口B、synchronized自动释放锁,Lock需要手动unlockC、synchronized可中断等待锁的线程D、Lock可以实现公平锁,synchronized默认非公平锁答案:C解析:synchronized阻塞等待锁时不可中断;Lock锁支持可中断锁、超时锁、尝试获取锁等高级功能,灵活性远高于synchronized。9、SpringMVC的核心流程顺序正确的是?()A、请求->DispatcherServlet->HandlerMapping->Controller->视图解析->响应B、请求->HandlerMapping->DispatcherServlet->Controller->响应C、请求->Controller->DispatcherServlet->响应D、请求->视图解析器->Controller->响应答案:A解析:DispatcherServlet是SpringMVC前端控制器,所有请求统一经过它,再通过HandlerMapping匹配对应控制器,执行Controller业务逻辑,最后视图解析、返回响应结果。10、MySQL中InnoDB和MyISAM的核心区别,说法正确的是?()A、InnoDB不支持事务,MyISAM支持事务B、InnoDB支持行级锁,MyISAM只支持表级锁C、InnoDB、MyISAM都支持外键D、MyISAM崩溃恢复能力更强答案:B解析:InnoDB是默认引擎,支持事务、行锁、外键、崩溃恢复,适合增删改频繁的业务;MyISAM不支持事务、外键,仅表锁,查询性能高,适合静态数据、只读场景。二、多项选择题(每题4分,共20分,多选、少选、错选不得分)1、以下属于线程安全的集合有?()A、VectorB、HashTableC、CopyOnWriteArrayListD、HashMap答案:ABC解析:HashMap、ArrayList、LinkedList、HashSet均线程不安全;Vector、HashTable是古老的线程安全集合(效率低),CopyOnWriteArrayList、CopyOnWriteArraySet是JDK1.5新增的高性能并发安全集合。2、以下哪些是JVM垃圾回收算法?()A、标记清除算法B、标记整理算法C、复制算法D、哈希算法答案:ABC解析:JVM三大基础GC算法:标记清除、标记整理、复制算法。哈希算法用于哈希表寻址,和垃圾回收无关。新生代主要用复制算法,老年代用标记清除+标记整理。3、Spring中Bean的作用域包含哪些?()A、singletonB、prototypeC、requestD、session答案:ABCD解析:Spring核心五大作用域:singleton(单例,默认)、prototype(多例)、request(一次请求)、session(一次会话)、application(全局应用)。4、以下关于final、finally、finalize区别说法正确的是?()A、final是修饰符,修饰变量不可变、方法不可重写、类不可继承B、finally是异常处理代码块,一定会执行(除特殊终止场景)C、finalize是Object类方法,用于垃圾回收前资源释放D、三者都可以用来修饰类答案:ABC解析:finally是代码块关键字,不能修饰类、方法、变量;finalize是废弃方法(JDK9标记过期),不建议使用。5、能导致线程进入阻塞状态的场景有?()A、调用sleep()B、调用wait()C、获取synchronized锁失败D、调用start()答案:ABC解析:start()只是启动线程,让线程进入就绪状态,并非阻塞。sleep计时阻塞、wait释放锁阻塞、抢锁失败都会让线程进入阻塞/等待状态。三、简答题(每题6分,共30分)1、简述HashMap的put方法执行流程(JDK1.8)参考答案:1、先判断哈希表数组是否为空或长度为0,若是则执行扩容初始化;2、根据key计算哈希值,通过哈希算法定位数组下标;3、判断该下标位置是否为空,为空则直接新建节点存入;4、若位置不为空,判断首节点key是否和插入key一致,一致则覆盖value;5、若不一致,判断当前节点是树节点还是链表节点:树节点则走红黑树插入逻辑,链表节点则遍历链表插入尾部;6、链表插入完成后,判断链表长度是否大于8且数组容量大于64,满足则转为红黑树;7、插入完成后,判断元素个数是否超过扩容阈值,超过则执行扩容。2、==和equals的区别是什么?参考答案:1、对于基本数据类型:==比较的是数值是否相等,基本类型没有equals方法;2、对于引用数据类型:==比较的是两个对象的内存地址是否相同(是否为同一个对象);3、equals是Object类默认方法,默认逻辑和==一致,比较地址;4、String、Integer等包装类重写了equals方法,重写后比较的是对象内容是否一致;总结:==比地址/数值,重写后的equals比内容。3、简述线程的生命周期及五大状态参考答案:Java线程五大核心状态:新建、就绪、运行、阻塞、终止1、新建(NEW):创建线程对象后,未调用start()方法;2、就绪(RUNNABLE):调用start()后,等待CPU调度资源;3、运行(RUNNING):CPU分配时间片,线程执行run()方法逻辑;5、终止(TERMINATED):run方法执行完毕或异常终止,线程生命周期结束。4、Spring的IOC和AOP是什么?核心作用是什么?参考答案:IOC(控制反转):是一种设计思想,将对象的创建、管理、依赖注入的权限从代码中交给Spring容器,实现对象解耦。核心是依赖注入(DI),不用手动new对象,由容器自动注入依赖,降低代码耦合度。AOP(面向切面编程):基于动态代理机制,在不修改原有业务代码的前提下,对方法进行增强。核心作用是统一处理公共逻辑,比如日志记录、事务控制、权限校验、异常统计等,实现业务逻辑和公共逻辑解耦。5、MySQL索引失效的常见场景有哪些?参考答案:1、索引列使用like%xxx模糊查询(前置通配符);2、索引列参与运算、函数操作、类型转换;3、使用or连接条件,且单侧字段无索引;4、复合索引不遵循最左前缀原则;5、字段数据类型隐式转换(字符串和数字对比);6、MySQL判断全表扫描比索引查询更快时,会自动放弃索引。四、编程题(每题10分,共20分)1、编程实现:去除字符串中重复字符,保持原有顺序(例如输入abcabc123,输出abc123)参考答案代码:java

publicclassStringRepeatTest{

publicstaticStringremoveRepeat(Stringstr){

if(str==null||str.length()==0){

returnstr;

}

//利用LinkedHashSet去重且保留顺序

StringBuildersb=newStringBuilder();

LinkedHashSet<Character>set=newLinkedHashSet<>();

for(inti=0;i<str.length();i++){

set.add(str.charAt(i));

}

//拼接结果

for(Characterc:set){

sb.append(c);

}

returnsb.toString();

}

publicstaticvoidmain(String[]args){

Stringres=removeRepeat("abcabc123");

System.out.println(res);//输出abc123

}

}

解题思路:LinkedHashSet天然去重且保留插入顺序,完美契合需求,代码简洁高效,适合笔试快速解题。2、编程实现两个线程交替打印1-100(线程A打印奇数,线程B打印偶数)参考答案代码(synchronized实现,笔试常用最简写法):java

publicclassThreadPrintTest{

//共享变量

privatestaticintnum=1;

//锁对象

privatestaticfinalObjectlock=newObject();

//打印奇数线程

staticclassOddThreadimplementsRunnable{

@Override

publicvoidrun(){

while(num<=100){

synchronized(lock){

if(num%2==1){

System.out.println("奇数线程:"+num);

num++;

lock.notify();//唤醒偶数线程

}else{

try{

lock.wait();//等待

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

}

}

}

//打印偶数线程

staticclassEvenThreadimplementsRunnable{

@Override

publicvoidrun(){

while(num<=100){

synchronized(lock){

if(num%2==0){

System.out.p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论