Java工程师招聘笔试真题(含详细答案解析)_第1页
Java工程师招聘笔试真题(含详细答案解析)_第2页
Java工程师招聘笔试真题(含详细答案解析)_第3页
Java工程师招聘笔试真题(含详细答案解析)_第4页
Java工程师招聘笔试真题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Java工程师招聘笔试真题(含详细答案解析)适用场景:初级/中级Java开发岗位校招、社招笔试考试时长:90分钟满分:100分题型说明:选择题、填空题、判断题、简答题、编程题、数据库题一、单项选择题(共10题,每题3分,共30分)1.以下关于Java基本数据类型的说法,正确的是()A.boolean类型可以赋值为0和1B.char类型占用2个字节,可存储中文汉字C.float类型赋值时无需加后缀D.long类型默认数值范围小于int2.下列关于String、StringBuilder、StringBuffer的描述,错误的是()A.String是不可变字符序列B.StringBuffer线程安全,效率较低C.StringBuilder线程不安全,效率更高D.频繁字符串拼接场景,优先使用String3.Java中接口和抽象类的核心区别,说法错误的是()A.抽象类可以有构造方法,接口无构造方法B.抽象类可包含普通成员变量,接口只能有常量C.一个类只能继承一个抽象类,可实现多个接口D.抽象类和接口都可以有静态代码块4.以下集合中,线程安全的是()A.ArrayListB.HashMapC.VectorD.HashSet5.关于Java异常机制,说法正确的是()A.Error可以被try-catch捕获处理B.Exception分为编译时异常和运行时异常C.所有RuntimeException都必须手动捕获D.finally代码块一定会执行,哪怕有return6.HashMap的底层数据结构在JDK1.8之后是()A.单纯数组B.数组+单向链表C.数组+单向链表+红黑树D.数组+双向链表7.以下关于Java泛型的说法,正确的是()A.泛型在运行时生效B.泛型可以使用基本数据类型C.泛型可以避免强制类型转换和类型转换异常D.泛型数组可以直接创建8.Spring框架中,依赖注入(DI)的核心作用是()A.简化数据库操作B.解耦组件,统一管理对象生命周期C.实现事务控制D.提升接口响应速度9.MySQL中,以下索引查询效率最高的是()A.普通索引B.唯一索引C.主键索引D.全文索引10.关于Java线程状态,以下不属于线程正常状态的是()A.新建(NEW)B.阻塞(BLOCKED)C.休眠(SLEEP)D.终止(TERMINATED)二、判断题(共5题,每题2分,共10分)1.Java中重写(Override)和重载(Overload)都可以改变方法的返回值类型。()2.volatile关键字可以保证线程的原子性、可见性和有序性。()3.SpringMVC中,@RequestParam用于获取路径参数,@PathVariable用于获取请求参数。()4.ArrayList的默认初始容量是10,扩容机制是扩容1.5倍。()5.静态变量属于对象,实例变量属于类。()三、填空题(共5空,每空2分,共10分)1.Java中实现多态的三种方式:________、________、________。2.JVM内存区域中,________是线程共享的,用于存储类信息、常量、静态变量。3.HashMap解决哈希冲突的两种主要方式:________、________。四、简答题(共4题,每题5分,共20分)1.简述==和equals()的区别?2.简述线程sleep()和wait()方法的核心区别?3.简述SpringBean的生命周期?4.简述MySQL事务的四大特性(ACID)?五、编程题(共2题,每题10分,共20分)1.编写Java代码,实现字符串反转,要求不使用JDK自带反转工具方法。2.编写代码,遍历一个List集合,去除重复元素,保持原有顺序。六、数据库实操题(共1题,10分)现有用户表user(id、username、age、create_time),订单表order(id、user_id、order_no、amount、create_time)需求:查询2026年1月1日至今,所有有过下单记录的用户姓名、用户ID、订单总金额、下单次数。完整答案及详细解析一、单项选择题答案及解析1.答案:B解析:A选项,boolean仅有true/false两个值,不支持0/1赋值;C选项,float赋值必须加f/F后缀;D选项,long是64位,int是32位,long数值范围远大于int。char占2字节,支持存储中文、字母、数字等字符。2.答案:D解析:String不可变,每次拼接都会生成新对象,频繁拼接会产生大量垃圾对象,性能极差。频繁拼接场景优先使用StringBuilder(单线程)、StringBuffer(多线程)。3.答案:D解析:接口中不能存在静态代码块、构造方法;抽象类可以有构造方法、普通变量、静态代码块、普通方法和抽象方法。4.答案:C解析:ArrayList、HashMap、HashSet均为线程不安全集合;Vector、Hashtable是古老的线程安全集合,底层通过synchronized保证安全,效率较低。5.答案:B解析:A选项,Error是系统级严重错误,无法捕获处理;C选项,RuntimeException属于运行时异常,无需手动捕获,可由JVM自动抛出;D选项,若执行到System.exit(0)退出程序,finally不会执行。6.答案:C解析:JDK1.7及以前:数组+单向链表;JDK1.8优化后:数组+单向链表+红黑树,链表长度大于8且数组容量大于64时,链表转为红黑树,提升查询效率。7.答案:C解析:A选项,泛型是编译期特性,运行时会擦除;B选项,泛型仅支持引用类型,不支持基本数据类型;D选项,Java不支持直接创建泛型数组。8.答案:B解析:依赖注入是Spring的核心,由IOC容器统一创建、管理、组装对象,消除代码硬依赖,实现组件解耦。9.答案:C解析:主键索引是聚簇索引,数据和索引绑定存储,查询无需回表,效率最高;普通索引、唯一索引属于二级索引,查询需要回表查询完整数据。10.答案:C二、判断题答案及解析1.×解析:重写要求方法名、参数列表必须和父类一致,返回值类型可协变(子类类型),不能随意修改;重载只要求参数列表不同,返回值可任意修改。2.×解析:volatile仅保证可见性、有序性,不保证原子性,多线程计数、累加等复合操作下依然会出现线程安全问题。3.×解析:@PathVariable用于获取URL路径中的参数(如/user/1);@RequestParam用于获取请求参数(如?name=test)。4.√解析:ArrayList无参构造默认容量10,每次扩容为原容量的1.5倍,节省内存空间。5.×解析:静态变量(static修饰)属于类,全局共享;实例变量属于单个对象,每个对象独有。三、填空题答案1.重写(Override)、重载(Overload)、向上转型2.方法区(元空间,JDK1.8后替换永久代)3.链地址法(链表法)、红黑树优化四、简答题答案1.==和equals()的区别①==是运算符,可用于基本类型和引用类型:基本类型比较数值是否相等,引用类型比较对象内存地址是否一致;②equals()是Object类方法,默认逻辑和==一致(比较地址);String、Integer等包装类重写了该方法,用于比较对象内容是否相等;③日常开发中,字符串、对象内容对比优先使用equals,基本类型对比使用==。2.sleep()和wait()方法的核心区别①所属类不同:sleep()是Thread类静态方法,wait()是Object类方法;②锁机制不同:sleep()休眠时不释放锁,wait()等待时主动释放锁;③唤醒方式不同:sleep()时间到自动唤醒,wait()必须被notify()/notifyAll()唤醒;④使用场景:sleep用于单纯延时,wait用于多线程通信、资源等待场景。3.SpringBean的生命周期1.实例化:Spring容器根据配置创建Bean对象(无参构造);2.属性填充:自动完成依赖注入(赋值、装配依赖Bean);3.初始化前置处理:执行BeanPostProcessor前置处理方法;4.初始化:执行InitializingBean的afterPropertiesSet()、自定义init方法;5.初始化后置处理:执行BeanPostProcessor后置处理方法;6.销毁:容器关闭时,执行DisposableBean销毁方法、自定义destroy方法。4.MySQL事务四大特性ACID①原子性(Atomicity):事务是最小执行单元,要么全部执行成功,要么全部回滚,不可拆分;②一致性(Consistency):事务执行前后,数据库数据完整性、约束规则保持一致;③隔离性(Isolation):多个事务并发执行时,相互隔离、互不干扰;④持久性(Durability):事务提交成功后,数据永久落地,数据库宕机也不会丢失。五、编程题答案1.字符串反转(不使用自带反转工具)java

publicclassStringReverse{

publicstaticStringreverse(Stringstr){

//空值和空字符串校验

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

returnstr;

}

char[]chars=str.toCharArray();

intleft=0;

intright=chars.length-1;

//双指针首尾交换

while(left<right){

chartemp=chars[left];

chars[left]=chars[right];

chars[right]=temp;

left++;

right--;

}

returnnewString(chars);

}

publicstaticvoidmain(String[]args){

System.out.println(reverse("hellojava"));

}

}2.List去重并保留原有顺序java

importjava.util.ArrayList;

importjava.util.LinkedHashSet;

importjava.util.List;

publicclassListDistinct{

publicstatic<T>List<T>distinctList(List<T>list){

//LinkedHashSet可去重且保留插入顺序

LinkedHashSet<T>set=newLinkedHashSet<>(list);

returnnewArrayList<>(set);

}

publicstaticvoidmain(String[]args){

List<String>list=newArrayList<>();

list.add("a");

list.add("b");

list.add("a");

list.add("c");

list.add("b");

List<String>result=distinctList(list);

System.out.println(result);

}

}六、数据库实操题答案sql

SELECT

u.idASuser_id,

u.username,

COUNT(o.id)ASorder_count,

IFNULL(SUM(o.amount),0)AStotal_amount

F

温馨提示

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

最新文档

评论

0/150

提交评论