版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java社招笔试真题(含详细解析答案)本次笔试为企业社招通用卷,适配1-5年Java开发工程师岗位,题型包含选择题、填空题、简答题、编程题、场景问答题,覆盖Java基础、集合框架、多线程、JVM、Spring框架、MySQL、常用中间件核心考点,贴合实际工作场景,无偏题怪题。一、单项选择题(共10题,每题2分,共20分)1.以下关于Java基本数据类型的说法,正确的是()A.float类型精度高于doubleB.byte类型取值范围是0~255C.char类型可以存储中文汉字D.boolean类型可以赋值为0和1答案:C解析:double精度高于float;byte是有符号类型,取值范围-128~127;boolean只有true/false两个值,不支持数值赋值;char占2字节,可存储中文、字母、符号等Unicode字符。2.下列关于String、StringBuilder、StringBuffer的描述,错误的是()A.String是不可变字符序列B.StringBuffer线程安全C.StringBuilder效率高于StringBufferD.频繁字符串拼接优先使用String答案:D解析:String每次拼接都会生成新对象,频繁拼接会产生大量内存垃圾,效率极低。单线程拼接优先用StringBuilder,多线程拼接优先用StringBuffer。3.HashMap在JDK1.8之后的底层数据结构是()A.数组+链表B.数组+红黑树C.数组+链表+红黑树D.链表+红黑树答案:C解析:JDK1.7及之前为数组+链表;JDK1.8优化后,默认链表长度大于8且数组长度大于64时,链表转为红黑树,减少哈希冲突带来的查询耗时。4.以下不会导致线程阻塞的方法是()A.wait()B.sleep()C.yield()D.join()答案:C解析:yield()是线程礼让,只是让当前线程放弃CPU执行权,从运行态回到就绪态,不会阻塞;wait、sleep、join都会让线程进入阻塞状态。5.下列关于Java异常的说法,正确的是()A.Error可以被try-catch捕获B.RuntimeException属于受检异常C.子类重写父类方法,不能抛出比父类更宽泛的异常D.finally代码块一定都会执行答案:C解析:Error是系统级严重错误,无法捕获;RuntimeException是非受检异常;若代码执行System.exit(0),finally不会执行;方法重写异常规则:子类抛出的异常必须是父类异常的子类或一致,不能更宽泛。6.SpringMVC中,请求分发的核心组件是()A.ApplicationContextB.DispatcherServletC.HandlerAdapterD.ViewResolver答案:B解析:DispatcherServlet是SpringMVC的前端控制器,负责拦截所有请求、分发请求、匹配处理器、处理视图跳转,是核心调度组件。7.MySQL中,以下索引查询效率最高的是()A.普通索引B.唯一索引C.主键索引D.全文索引答案:C解析:主键索引默认聚簇索引,数据和索引绑定,查询无需回表,效率最高;普通索引、唯一索引为二级索引,查询大概率需要回表查询数据。8.以下关于Java泛型的说法,错误的是()A.泛型只在编译期生效,运行期会被擦除B.可以使用泛型创建数组C.泛型不能使用基本数据类型D.通配符?可以匹配任意类型答案:B解析:Java不支持泛型数组创建,因为泛型运行期擦除,无法保证数组类型安全,可使用泛型集合替代。9.JVM中,存放对象实例的内存区域是()A.栈内存B.堆内存C.方法区D.本地方法栈答案:B解析:堆内存是JVM最大的内存区域,所有new出来的对象、数组实例都存放在堆中;栈内存存放局部变量、方法调用栈帧。10.Spring事务传播级别中,默认级别是()A.REQUIREDB.SUPPORTSC.REQUIRES_NEWD.NESTED答案:A解析:Spring事务默认传播级别为REQUIRED:当前有事务则加入当前事务,没有则新建事务,是项目中最常用的级别。二、填空题(共5题,每题3分,共15分)1.Java中实现多态的三种方式:______、______、______。答案:方法重写、方法重载、向上转型2.线程的五大状态分别是:新建、就绪、______、______、终止。答案:运行、阻塞3.JVM垃圾回收中,判断对象存活的两种方式:______、______。答案:引用计数法、可达性分析算法4.MySQL事务的四大特性:原子性、______、______、持久性。答案:一致性、隔离性5.SpringIOC容器的核心原理是______和______。答案:控制反转、依赖注入三、简答题(共5题,每题6分,共30分)1.简述==和equals()的区别?答案解析:(1)==是运算符,可用于基本数据类型和引用数据类型:基本类型比较数值是否相等;引用类型比较对象的内存地址是否一致。(2)equals()是Object类的方法,仅用于引用类型比较:默认底层基于==实现,比较内存地址;String、Integer等包装类重写了该方法,用于比较对象的实际内容是否相同。日常开发中,比较字符串内容必须用equals,避免地址对比导致的逻辑错误。2.简述HashMap和ConcurrentHashMap的区别?答案解析:(1)线程安全:HashMap非线程安全,并发场景会出现数据覆盖、死循环问题;ConcurrentHashMap线程安全,专为并发场景设计。(2)锁机制:JDK1.8中ConcurrentHashMap采用CAS+synchronized锁,只锁住当前哈希桶节点,锁粒度小、并发效率高;摒弃了1.7的分段锁。(3)性能:单线程下HashMap效率略高;多线程并发读写场景,ConcurrentHashMap性能远优于Hashtable。(4)空值支持:HashMap允许一个key为null、多个value为null;ConcurrentHashMap不允许key和value为null。3.简述Java线程池的核心参数及作用?答案解析:线程池核心参数共7个,核心常用参数:(1)核心线程数:线程池常驻的线程数量,即使空闲也不会销毁。(2)最大线程数:线程池允许创建的最大线程数量,任务过多时扩容。(3)空闲超时时间:非核心线程空闲后的销毁等待时间。(4)任务队列:存储等待执行的任务,常用LinkedBlockingQueue。(5)线程工厂:用于创建线程,可自定义线程名称、优先级。(6)拒绝策略:任务队列满、线程数达最大值时的任务处理策略,默认AbortPolicy直接抛出异常。4.简述SpringAOP的原理及应用场景?答案解析:原理:AOP面向切面编程,基于动态代理机制,在不修改原有业务代码的前提下,对方法进行增强。核心是将通用日志、事务、权限等通用逻辑抽离为切面,实现代码解耦。JDK动态代理:针对实现接口的类,基于接口代理;CGLIB代理:针对无接口的类,基于子类继承代理。应用场景:统一日志记录、事务控制、权限校验、接口限流、性能监控、异常统一处理。5.简述MySQL慢查询优化的常用思路?答案解析:(1)开启慢查询日志,定位耗时SQL,通过explain分析执行计划,查看是否走索引、是否存在全表扫描。(2)对高频查询字段建立合适索引,避免索引失效(like%xxx、or、字段隐式转换等会导致索引失效)。(3)优化SQL语句,避免select*,只查询所需字段;减少子查询、嵌套查询,优先使用联表查询。(4)大表拆分,水平分表或垂直分表,降低单表数据量。(5)合理使用缓存,对高频不变的数据缓存,减少数据库查询次数。四、编程题(共2题,每题10分,共20分)1.编写代码,去除字符串中重复字符,保持原有顺序(例如输入:abacbd,输出:abcd)参考答案:java
publicclassStringRepeatRemove{
publicstaticStringremoveRepeat(Stringstr){
if(str==null||str.length()==0){
returnstr;
}
//有序集合,保证插入顺序,自动去重
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){
System.out.println(removeRepeat("abacbd"));//输出abcd
}
}
解题思路:利用LinkedHashSet有序、去重的特性,遍历字符串存入集合,再拼接结果,兼顾效率和顺序性。2.手写一个简单的单例模式(饿汉式+线程安全)参考答案:java
//饿汉式单例(线程安全,简单高效,推荐日常使用)
publicclassSingleton{
//类加载时直接初始化实例,避免并发问题
privatestaticfinalSingletonINSTANCE=newSingleton();
//私有构造方法,禁止外部实例化
privateSingleton(){}
//对外提供获取实例的公共方法
publicstaticSingletongetInstance(){
returnINSTANCE;
}
}
补充说明:饿汉式在类加载阶段创建实例,天然线程安全,无并发风险,适合实例占用内存小、频繁使用的场景;懒汉式需加锁保证线程安全。五、场景问答题(共1题,15分)场景:线上项目偶尔出现接口响应超时、数据库查询卡顿,无报错日志,请问你如何排查和解决?参考答案:1.日志排查:首先查看项目访问日志、GC日志、数据库慢查询日志,确认超时时间段的请求链路,排查是否有高频慢接口、频繁GC情况。2.数据库排查:通过慢查询日志定位耗时SQL,用explain分析执行计划,检查是否全表扫描、索引失效、锁等待、事务超时等问题,针对性优化索引、优化SQL、缩短事务执行时间。3.服务器资源排查:查看服务器CPU、内存、磁盘IO、网络带宽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省昆山市高三数学下册期末考试模拟卷含答案【培优A卷】
- 2026年山西省介休市高三数学下册期末考试模拟检测卷及完整答案【全优】
- 2026年云南省大理市高三数学下册期末考试模拟卷带答案(能力提升)
- 2026年云南省瑞丽市高三数学下册期末考试模拟测试卷附答案AB卷
- 2026年吉林省临江市高三数学下册期末考试模拟检测卷【历年真题】附答案
- 2026年云南省大理市高三数学下册期末考试模拟试卷及答案(历年真题)
- 2026年山西省河津市高三数学下册期末考试模拟考试卷【原创题】附答案
- 2026年广东省信宜市高三数学下册期末考试模拟测试卷附答案(满分必刷)
- 2026年甘肃省临夏市高三数学下册期末考试模拟试卷附答案(培优A卷)
- 2026年山西省介休市高三数学下册期末考试模拟试卷及答案(易错题)
- 学生心理健康一生一策档案表
- 2025睿实消防自动跟踪定位射流灭火系统说明书
- 尿常规培训课件
- 汽车维修工高级培训资料
- GB/T 20977-2024糕点质量通则
- 自然科学基金项目申请书
- DB34T 1948-2013 建设工程造价咨询档案立卷标准
- 高职电子商务专业《电子商务数据分析》说课稿
- 医院培训课件:《常用临床护理技术服务规范》
- 幼儿园教学课件科学教育《鸟类动物》
- 钢管脚手架施工规范及注意事项
评论
0/150
提交评论