大华Java开发笔试真题及详细答案解析_第1页
大华Java开发笔试真题及详细答案解析_第2页
大华Java开发笔试真题及详细答案解析_第3页
大华Java开发笔试真题及详细答案解析_第4页
大华Java开发笔试真题及详细答案解析_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

大华Java开发笔试真题及详细答案解析本次试题贴合大华日常招聘Java后端笔试真实出题风格,涵盖基础语法、集合框架、JVM、多线程、异常处理、数据库、编程实操等核心考点,题型包含选择题、填空题、简答题、编程题,所有答案均附带详细落地解析,适配校招、社招笔试场景。一、单项选择题(共10题,每题3分,共30分)1、以下关于Java接口和抽象类的说法,错误的是()A.抽象类可以有构造方法,接口不能有构造方法B.抽象类可以包含普通成员变量,接口只能包含常量C.一个类只能继承一个抽象类,但可以实现多个接口D.抽象方法可以有方法体,接口方法默认无方法体答案:D解析:抽象方法必须使用abstract修饰,且没有方法体,仅做方法声明;Java8之后接口可以有默认方法和静态方法,这两类方法有方法体,抽象接口方法无方法体。其余选项均为正确特性,也是大华笔试高频考点。2、Java中以下基本数据类型,占用内存空间最小的是()A.byteB.shortC.charD.boolean答案:A解析:byte占用1字节,short、char占用2字节;boolean在JVM中底层按1字节存储,仅做布尔标识,官方定义基础类型中byte是占用空间最小的基础类型,为笔试固定考点。3、关于List、Set、Map集合,以下说法正确的是()A.List无序可重复B.Set有序不可重复C.Map键唯一,值可重复D.三者都可以存储基本数据类型答案:C解析:List有序可重复;Set无序不可重复(TreeSet除外,自然排序);Map以键值对存储,key唯一不重复,value允许重复。集合只能存储包装类和对象,无法直接存储基本数据类型,会自动装箱。4、以下代码运行结果是()PlainText

publicclassTest{

publicstaticvoidmain(String[]args){

inti=10;

change(i);

System.out.println(i);

}

publicstaticvoidchange(inti){

i=20;

}

}A.10B.20C.编译报错D.运行异常答案:A解析:Java只有值传递,基本数据类型传递的是变量值的副本,方法内修改副本数值,不会影响原变量,因此最终输出原数值10。5、HashMap和HashTable的区别,说法错误的是()A.HashTable线程安全,HashMap线程不安全B.HashMap允许key和value为null,HashTable不允许C.两者底层都是哈希表结构,扩容机制完全一致D.HashTable效率低于HashMap答案:C解析:二者底层均为哈希表,但扩容机制不同。HashMap默认容量16,扩容2倍;HashTable默认容量11,扩容2倍+1,且HashTable全程加同步锁,效率更低,线程安全。6、以下异常中,属于运行时异常的是()A.IOExceptionB.SQLExceptionC.NullPointerExceptionD.FileNotFoundException答案:C解析:NullPointerException(空指针异常)是典型运行时异常(RuntimeException),无需手动捕获;其余选项均为受检异常,编译阶段必须处理,否则编译报错。7、synchronized和Lock的区别,正确的是()A.Lock是内置锁,synchronized是显示锁B.synchronized可中断锁,Lock不可中断C.Lock可以精准控制加锁和释放锁,灵活性更高D.synchronized锁性能始终优于Lock答案:C解析:synchronized是Java内置隐式锁,自动加锁释放;Lock是显示锁,需手动lock()、unlock(),支持可中断锁、超时锁、公平锁,精准度和灵活性更高,高并发场景性能优于synchronized。8、JVM中,线程共享的内存区域是()A.虚拟机栈B.堆C.本地方法栈D.程序计数器答案:B解析:堆和方法区是线程共享区域,所有线程可访问;虚拟机栈、本地方法栈、程序计数器是线程私有区域,线程独立,互不干扰。9、以下关于final关键字说法正确的是()A.final修饰的类可以被继承B.final修饰的方法可以重写C.final修饰的变量只能赋值一次D.final变量默认值为null答案:C解析:final修饰类不可继承,修饰方法不可重写,修饰变量为常量,仅能赋值一次;final局部变量无默认值,必须手动初始化。10、Spring中@Autowired和@Resource的区别,错误的是()A.@Autowired默认按类型注入B.@Resource默认按名称注入C.@Autowired是JSR原生注解,@Resource是Spring注解D.@Autowired需要配合@Qualifier可实现按名称注入答案:C解析:@Resource是JSR250标准原生注解,@Autowired是Spring框架专属注解,C选项表述颠倒,其余选项均正确。二、填空题(共5题,每题4分,共20分)1、Java面向对象三大特性:________、________、________。答案:封装、继承、多态解析:封装隐藏内部实现,暴露公共接口;继承实现代码复用、类的扩展;多态实现同一接口不同实现,提升代码扩展性。2、线程的五大状态:新建、________、________、________、终止。答案:就绪、运行、阻塞3、MySQL事务四大特性(ACID):原子性、________、________、________。答案:一致性、隔离性、持久性解析:原子性:事务不可分割,要么全成功要么全失败;一致性:事务前后数据状态一致;隔离性:多事务互不干扰;持久性:事务提交后数据永久生效。4、Java中重写(override)发生在________中,重载(overload)发生在________中。答案:父子类、同一个类解析:重写是子类重写父类同名同参方法;重载是同类中同名不同参(参数个数、类型、顺序不同)的多个方法,与返回值无关。5、JVM垃圾回收中,判断对象存活的核心算法是________,垃圾回收针对的主要区域是________。答案:可达性分析算法、堆内存解析:JVM摒弃传统引用计数法,采用可达性分析判断对象是否存活;堆是对象主要存储区域,也是GC回收的核心区域,方法区仅偶尔回收废弃常量和无用类。三、简答题(共4题,每题7分,共28分)1、简述ArrayList和LinkedList的区别及适用场景答案解析:1)底层结构:ArrayList底层是动态数组,内存连续;LinkedList底层是双向链表,内存离散。2)性能差异:ArrayList随机访问(get)速度快,时间复杂度O(1);增删元素需要移动数组元素,效率低。LinkedList随机访问速度慢,需要遍历链表,时间复杂度O(n);首尾增删元素无需移动数据,效率高。3)内存消耗:ArrayList会预留冗余容量,存在内存浪费;LinkedList每个节点存储数据和前后指针,单个元素内存占用更大。4)适用场景:ArrayList适合大量查询、少量增删场景;LinkedList适合频繁首尾增删、少量查询场景。2、简述Java多线程中volatile关键字的作用及局限性答案解析:作用:1)保证变量可见性:线程修改volatile变量后,会立即刷新到主内存,其他线程可实时读取最新值,避免缓存不一致问题。2)禁止指令重排序:底层通过内存屏障,防止编译器和CPU对变量操作指令重排,保证代码执行顺序。局限性:1)不保证原子性:无法保证复合操作(i++、自增自减)的线程安全,仅能保证单次读写操作安全。2)无法替代锁:高并发复合场景下,仍需synchronized或Lock保证线程安全。3、简述SpringMVC的完整执行流程答案解析:1)客户端发送HTTP请求,前端控制器DispatcherServlet接收所有请求。2)DispatcherServlet调用HandlerMapping,根据请求URL匹配对应的处理器Controller。3)通过HandlerAdapter适配对应的Controller,执行目标业务方法。4)Controller处理业务逻辑,返回ModelAndView(数据+视图信息)。5)ViewResolver视图解析器解析视图路径,渲染视图数据。6)DispatcherServlet将渲染后的视图结果封装为HTTP响应,返回给客户端。4、简述MySQL索引失效的常见场景答案解析:1)索引列使用函数、运算、类型转换,如wheresubstr(name,1,2)='xx'、age+1=10。2)模糊查询以%开头,如like'%测试',无法走索引。3)使用or连接条件,若其中一个字段无索引,整体索引失效。4)字符串字段未加引号,发生隐式类型转换,索引失效。5)联合索引不遵循最左前缀原则,跳过前置索引列直接查询后续列。6)MySQL判断全表扫描比索引查询更快时,会自动放弃索引。四、编程题(共2题,第一题10分,第二题12分,共22分)1、编程实现:删除字符串中所有重复字符,保留字符首次出现顺序(简单难度)示例:输入:abcabc123输出:abc123参考答案:PlainText

publicclassRemoveRepeatChar{

publicstaticStringremoveRepeat(Stringstr){

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

returnstr;

}

//利用有序集合保留顺序,去重

StringBuildersb=newStringBuilder();

//记录已出现的字符

boolean[]exist=newboolean[128];

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

charc=str.charAt(i);

if(!exist[c]){

exist[c]=true;

sb.append(c);

}

}

returnsb.toString();

}

publicstaticvoidmain(String[]args){

Stringres=removeRepeat("abcabc123");

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

}

}解析:通过布尔数组记录字符是否已出现,遍历字符串仅保留首次出现的字符,时间复杂度O(n),效率较高,适配常规业务场景。2、编程实现两数之和:给定整数数组和目标值,返回数组中两个相加等于目标值的元素下标(中等难度)题目要求:数组同一元素不能重复使用,每种输入仅对应一个答案示例:nums=[2,7,11,15],target=9输出:[0,1]参考答案:PlainText

importjava.util.HashMap;

importjava.util.Map;

publicclassTwoSum{

publicstaticint[]twoSum(int[]nums,inttarget){

//key:数组元素值,value:元素下标

Map<Integer,Integer>map=newHashMap<>();

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

//计算需要匹配的差值

intdiff=target-nums[i];

//差值存在则返回下标

if(map.containsKey(diff)){

returnnewint[]{map.get(diff),i};

}

//不存在则存入当前元素

map.put(nums[i],i);

}

//无匹配结果返回空数组

returnnewint[]{};

}

publicstaticvoidmain(String[]args){

int[]nums={2,7,11,15};

温馨提示

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

最新文档

评论

0/150

提交评论