版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java校招笔试真题(含详细解析答案)适用场景:应届生校招、实习笔试、Java基础能力考核考试时长:90分钟满分:100分题型分布:选择题(30分)、填空题(20分)、简答题(30分)、编程题(20分)一、单项选择题(共10题,每题3分,共30分)1.以下关于Java基本数据类型的说法,正确的是()A.boolean类型可以赋值为0和1B.char类型占用2个字节,可存储汉字C.float类型数值精度高于doubleD.byte类型取值范围是0~255答案:B解析:A错误,Java布尔类型只有true/false,不兼容数字;C错误,double是双精度浮点,精度远高于float单精度;D错误,byte是有符号字节,范围-128~127;Java中char占2字节UTF-16编码,可正常存储中文汉字。2.下列关于==和equals()的区别,说法错误的是()A.==对于基本类型比较数值,引用类型比较内存地址B.equals()是Object类方法,默认比较对象地址C.String类重写了equals(),用于比较字符串内容D.所有自定义对象的equals()都会自动比较对象内容答案:D解析:自定义类如果没有重写equals方法,会直接使用Object的原生方法,依然比较对象内存地址,不会自动比较属性内容。3.以下不会产生线程安全问题的集合是()A.ArrayListB.HashMapC.VectorD.HashSet答案:C解析:ArrayList、HashMap、HashSet都是线程不安全集合,多线程并发读写会出现数据覆盖、空指针等问题;Vector是古老的线程安全集合,所有方法加了synchronized锁,保证线程安全。4.Java中接口和抽象类的区别,描述正确的是()A.抽象类和接口都能定义构造方法B.一个类只能继承一个抽象类,但可以实现多个接口C.抽象类和接口都可以有普通成员变量D.抽象类和接口都不能有静态方法答案:B解析:接口无构造方法、无普通成员变量(默认常量);Java8之后接口支持静态方法;Java是单继承、多实现机制,子类仅能继承一个抽象父类,可实现多个接口。5.下列关于try-catch-finally的执行顺序,说法正确的是()A.finally代码块只有不报错时才执行B.try中写return语句,finally依然会执行C.catch块和finally块必须同时存在D.finally中可以省略不写答案:B解析:finally块无论是否异常、是否执行return都会执行(唯一不执行场景:虚拟机退出);try可以单独搭配finally,无需catch;finally是可选但一旦定义必执行。6.以下关于Java泛型的说法,错误的是()A.泛型可以实现编译期类型检查,避免类型转换异常B.泛型只在编译阶段生效,运行时会擦除类型C.可以使用基本数据类型作为泛型参数D.通配符?可以匹配任意类型答案:C解析:Java泛型仅支持引用类型,不支持byte、int、long等基本类型,需使用对应的包装类(Integer、Long等)。7.HashMap的底层数据结构是()A.数组+单向链表+红黑树B.单纯数组C.数组+双向链表D.链表+红黑树答案:A解析:JDK1.8及之后,HashMap底层采用数组+单向链表,当链表长度大于8且数组容量大于64时,链表转为红黑树,提升查询效率。8.以下关键字中,不能修饰局部变量的是()A.finalB.staticC.volatileD.transient答案:B解析:static修饰静态成员,属于类级别,局部变量是方法栈级别,无法使用static修饰;final可修饰局部常量,volatile、transient可用于变量修饰(volatile多用于多线程变量)。9.Java中重写(Override)和重载(Overload)的区别,正确的是()A.重写要求方法名相同、参数列表不同B.重载发生在父子类之间C.重写返回值可以是原方法返回值的子类(协变返回)D.重载方法修饰符权限必须大于等于父类答案:C解析:重载:同类中,方法名相同、参数列表不同,与返回值无关;重写:父子类中,方法名、参数列表完全一致,子类权限≥父类,支持协变返回值。10.下列关于JVM内存区域,属于线程私有区域的是()A.堆B.方法区C.虚拟机栈D.常量池答案:C解析:线程私有:虚拟机栈、本地方法栈、程序计数器;线程共享:堆、方法区(含运行时常量池)。二、填空题(共5题,每题4分,共20分)1.Java中实现多线程的三种常用方式:继承Thread类、__________、__________。答案:实现Runnable接口、实现Callable接口2.异常分为两大类,分别是__________(编译期异常)和__________(运行期异常)。答案:受检异常(CheckedException)、非受检异常(RuntimeException)3.synchronized关键字可以修饰__________、__________和静态方法,实现线程同步。答案:普通方法、代码块4.List、Set、Map中,__________集合元素有序可重复,__________集合元素无序不可重复。答案:List、Set5.JVM垃圾回收中,判断对象存活的核心算法是__________,解决循环引用问题的算法是__________。答案:引用计数法、可达性分析算法三、简答题(共3题,每题10分,共30分)1.简述ArrayList和LinkedList的区别,以及各自适用场景参考答案:(1)底层结构:ArrayList基于动态数组实现,LinkedList基于双向链表实现;(2)访问效率:ArrayList支持随机访问,通过下标查询速度极快;LinkedList只能从头节点遍历查询,随机访问效率低;(3)增删效率:ArrayList增删元素时需要移动数组元素、扩容缩容,效率较低;LinkedList仅需修改节点指针,首尾增删效率高;(4)内存占用:ArrayList会预留冗余容量,存在内存浪费;LinkedList每个节点存储数据和指针,单个元素内存占用更高;适用场景:ArrayList适合大量查询、少增删的场景;LinkedList适合频繁首尾增删、极少随机查询的场景。2.简述HashMap为什么线程不安全?JDK1.8做了哪些优化?参考答案:线程不安全原因:多线程并发put数据时,会出现数据覆盖、链表环形死循环、数据丢失问题。JDK1.7中多线程扩容会导致链表反转形成环形链表,引发CPU死循环;所有读写操作无锁控制,并发场景无法保证数据一致性。JDK1.8优化点:1.底层结构优化:数组+链表升级为数组+链表+红黑树,长链表转为红黑树,将查询时间复杂度从O(n)降至O(logn);2.优化扩容机制:采用尾插法替代头插法,彻底解决扩容环形链表死循环问题;3.优化哈希算法,减少哈希冲突,提升集合读写性能。注:优化后HashMap依然线程不安全,并发场景推荐使用ConcurrentHashMap。3.简述final、finally、finalize的区别参考答案:1.final:是修饰关键字,用于修饰变量、方法、类。final变量不可二次赋值,final方法不可重写,final类不可被继承;2.finally:是异常处理代码块,搭配try-catch使用,无论程序是否异常,代码块都会执行,主要用于释放资源(关闭流、连接等);3.finalize:是Object类的废弃方法,用于垃圾回收前唤醒对象执行资源释放逻辑,该方法执行时机不确定、无法保证执行,JDK9之后已被废弃,不推荐使用。四、编程题(共1题,20分)题目:编写Java程序,实现字符串去重,保留字符第一次出现顺序,输出结果(例如输入:abacbcc,输出:abc)解题思路:利用LinkedHashSet有序不可重复的特性,遍历字符串存入集合,再拼接结果;也可通过数组标记字符是否出现实现,两种方法均满足要求。完整代码+详细注释:java
importjava.util.LinkedHashSet;
importjava.util.Set;
/**
*字符串去重,保留首次出现顺序
*/
publicclassStringDistinct{
publicstaticvoidmain(String[]args){
//测试用例
Stringstr="abacbcc";
Stringresult=distinctString(str);
System.out.println("去重结果:"+result);
}
publicstaticStringdistinctString(Stringstr){
//空值校验
if(str==null||str.length()==0){
returnstr;
}
//LinkedHashSet保证有序、去重
Set<Character>set=newLinkedHashSet<>();
//遍历字符串,存入集合自动去重
for(inti=0;i<str.length();i++){
set.add(str.charAt(i));
}
//拼接结果
StringBuildersb=newStringBuilder();
for(Characterch:set){
sb.append(ch);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省交易控股集团有限公司人员招聘笔试参考试题及详细答案解析
- 2026年中国联通黑龙江省分公司人员招聘考试参考试题及详细答案解析
- 2026年宁夏煤业人员招聘考试模拟试题及详细答案解析
- 2026年北京长城电子装备有限责任公司人员招聘考试模拟试题及详细答案解析
- 2026及未来5年中国盐渍牛肠衣数据监测研究报告
- 2026及未来5年中国皮带减速电动机数据监测研究报告
- 2026及未来5年中国白芸豆种子数据监测研究报告
- 2026及未来5年中国白前数据监测研究报告
- 2026及未来5年中国男装短袖绣花T恤数据监测研究报告
- 2026医技类-临床医学检验临床基础检验(正高)039历年题库含答案详解
- 南京医科大学-毕业答辩-课件模板
- T/CMEAS 010-2023标准化病人(SP)医学教育项目建设与应用指南
- T/CCCI 001-2024企业文化建设与管理评价标准
- 2025黄山市黄山区仙源镇社区工作者考试真题
- 石材外墙合同范例
- GB/T 44748.1-2024筛分试验第1部分:使用金属丝编织网和金属穿孔板试验筛的方法
- 新中国赞歌 课件 2024-2025学年浙人美版(2024)初中美术七年级上册
- 第三届全国生态环境监测专业技术人员大比武广东省赛试题库(含答案)
- 应用PDCA提高入院宣教的知晓率
- 深静脉血栓(DVT)课件
- QCSG1140022023年电力设备预防性试验规程
评论
0/150
提交评论