2025 海康威视 Java 后端校招笔试题(含答案与解析)_第1页
2025 海康威视 Java 后端校招笔试题(含答案与解析)_第2页
2025 海康威视 Java 后端校招笔试题(含答案与解析)_第3页
2025 海康威视 Java 后端校招笔试题(含答案与解析)_第4页
2025 海康威视 Java 后端校招笔试题(含答案与解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

2025海康威视Java后端校招笔试题(含答案与解析)考试平台:赛码网。岗位:应用软件开发工程师(Java)。试卷结构:单选20题(每题2分,共40分)、多选10题(每题2分,共20分,多选、错选不得分,少选得一半分)、简答2题(每题10分,共20分)、编程2题(每题10分,共20分,1道算法题加1道SQL题),满分100分,限时90分钟。考点分布:Java基础、JVM、集合、并发、计算机网络、MySQL、Redis、Spring与数据结构算法,贴合安防物联网后端业务。一、单项选择题(每题2分,共40分)关于JDK8中的HashMap,说法错误的是

A.底层为数组、链表加红黑树B.链表长度不小于8且数组长度不小于64时才转红黑树C.默认负载因子为0.75D.是线程安全集合

答案:D

解析:HashMap非线程安全,并发场景应使用ConcurrentHashMap。volatile关键字不能保证下列哪一项

A.可见性B.禁止指令重排序C.原子性D.以上都不对

答案:C

解析:volatile只保证可见性与禁止指令重排序,不保证原子性,i++这类复合操作依然线程不安全。下列关于synchronized锁升级顺序的描述,正确的是

A.偏向锁、轻量级锁、重量级锁B.轻量级锁、偏向锁、重量级锁C.偏向锁、重量级锁、轻量级锁D.轻量级锁、重量级锁、偏向锁

答案:A

解析:JDK15之前的升级路径为无锁、偏向锁、轻量级锁(自旋)、重量级锁(操作系统互斥量),锁只能升级不能降级。下列不属于Java8新特性的是

A.Lambda表达式B.StreamAPIC.新时间APIjava.timeD.泛型

答案:D

解析:泛型在JDK5即已引入,不属于Java8新增特性。关于ArrayList与LinkedList,描述正确的是

A.LinkedList基于数组,随机访问快B.ArrayList适合在中间频繁插入删除C.ArrayList随机访问的时间复杂度为O(1)D.LinkedList查询比ArrayList快

答案:C

解析:ArrayList基于动态数组,随机访问O(1);LinkedList为双向链表,随机查找慢,但头尾插入删除有优势。TCP滑动窗口的主要作用是

A.拥塞控制B.流量控制C.差错校验D.三次握手

答案:B

解析:滑动窗口实现流量控制;拥塞控制依靠拥塞窗口,二者常配合使用但机制不同。在InnoDB中,下列哪个隔离级别可以解决幻读

A.读未提交B.读已提交C.可重复读D.串行化

答案:D

解析:InnoDB默认可重复读,通过MVCC加间隙锁在大部分场景缓解幻读;严格消除幻读只有串行化。Integer包装类自动装箱的缓存范围是

A.−127到128B.−128到127C.0到255D.−100到100

答案:B

解析:IntegerCache缓存−128到127,该区间内用双等号比较返回true,超出范围会新建对象。下列接口不属于Collection体系的是

A.ListB.SetC.MapD.Queue

答案:C

解析:Map是独立根接口,与Collection并列。线程池核心参数keepAliveTime的含义是

A.核心线程空闲存活时间B.非核心线程空闲存活时间C.任务最大等待时间D.线程池整体生命周期

答案:B

解析:核心线程默认不回收,非核心线程空闲时间超过keepAliveTime即被回收。Redis中String类型底层在大容量时转为SDS,该说法对应的实际情况是

A.所有字符串底层都是SDS,与大小无关B.超过16KB才转为SDSC.超过64KB才转为SDSD.超过1MB才转为SDS

答案:A

解析:Redis的String底层一律使用SDS(简单动态字符串),而非C原生char指针,可记录长度并避免缓冲区溢出,不存在按大小切换结构的机制。Spring中@Autowired默认按什么方式注入

A.按名称B.按类型C.按注解D.按顺序

答案:B

解析:@Autowired默认按类型(byType)注入;@Resource默认按名称(byName)。JDK8默认使用的垃圾回收器是

A.G1B.ParallelGCC.CMSD.ZGC

答案:B

解析:JDK8默认ParallelScavenge加ParallelOld;JDK9起默认改为G1。下列HTTP状态码中代表服务端内部错误的是

A.404B.403C.500D.302

答案:C

解析:500为InternalServerError;404表示资源不存在,403表示禁止访问,302为临时重定向。关于快速失败(fail-fast)机制,描述正确的是

A.并发修改时抛出ConcurrentModificationExceptionB.是CopyOnWriteArrayList的机制C.不会抛出异常D.适合多线程写场景

答案:A

解析:ArrayList与HashMap的迭代器采用fail-fast;CopyOnWriteArrayList属于fail-safe机制。下列不属于栈特点的是

A.后进先出(LIFO)B.递归调用栈基于栈实现C.支持随机访问D.函数调用使用栈帧

答案:C

解析:栈只能操作栈顶,不支持按下标随机访问。MySQL中,WHERE条件对索引列使用函数会导致

A.走主键索引B.索引失效C.自动优化D.加快查询

答案:B

解析:索引列上使用函数、运算或发生隐式类型转换,会使索引失效并退化为全表扫描。关于wait与sleep的区别,说法错误的是

A.wait会释放锁,sleep不释放锁B.wait是Object的方法,sleep是Thread的方法C.wait必须在同步块内调用D.sleep会被notify唤醒

答案:D

解析:sleep在时间到期后自动唤醒;notify只能唤醒处于wait阻塞的线程。下列属于IO多路复用模型的是

A.select、poll与epollB.BIOC.多线程同步IOD.异步IO

答案:A

解析:epoll是Linux高性能IO多路复用实现,Redis与Nginx底层均采用。SpringBoot中@SpringBootApplication由哪三个注解组合而成

A.@Configuration、@EnableAutoConfiguration与@ComponentScanB.@Controller、@Service与@RepositoryC.@Configuration、@Bean与@ComponentD.@EnableAutoConfiguration、@Bean与@ComponentScan

答案:A

解析:该注解为组合注解,上述三项分别提供配置类识别、自动装配开启与组件扫描能力。二、多项选择题(每题2分,共20分)下列属于JVM运行时数据区的有

A.堆B.虚拟机栈C.本地方法栈D.程序计数器

答案:ABCD

解析:此外还包括方法区(元空间)与直接内存等,但题目所列四项均属运行时数据区。可以实现线程安全的方案有

A.HashMapB.synchronizedC.ReentrantLockD.AtomicInteger

答案:BCD

解析:HashMap非线程安全,其余三项分别为锁机制与原子类。Redis常见的用途包括

A.分布式缓存B.持久化存储海量业务数据C.分布式锁D.限流

答案:ACD

解析:Redis以内存存储为主,适合缓存与高频计数类场景,不宜作为海量持久化业务主库。下列属于TCP特性的有

A.面向连接B.可靠传输C.无连接D.拥塞控制

答案:ABD

解析:无连接是UDP的特点,TCP为面向连接的可靠传输协议。下列属于SpringBean作用域的有

A.singletonB.prototypeC.requestD.session

答案:ABCD

解析:此外还有application、websocket等作用域,题目所列四项均有效。会触发FullGC的场景有

A.老年代空间不足B.调用System.gc()C.元空间满D.新生代MinorGC

答案:ABC

解析:MinorGC只回收新生代,通常不触发FullGC。MySQL事务ACID四大特性包括

A.原子性B.一致性C.隔离性D.持久性

答案:ABCD

解析:四项分别对应Atomicity、Consistency、Isolation与Durability。下列属于阻塞队列的有

A.ArrayListB.ArrayBlockingQueueC.LinkedBlockingQueueD.PriorityBlockingQueue

答案:BCD

解析:ArrayList为普通集合,不具备阻塞语义。分布式锁的实现方案有

A.Redis加Lua脚本B.HashMapC.ZooKeeperD.数据库乐观锁

答案:ACD

解析:HashMap为本地数据结构,无法跨进程实现互斥。下列属于OOM可能原因的有

A.内存泄漏B.一次性加载超大文件C.合理使用对象池D.死循环中不断创建对象

答案:ABD

解析:合理使用对象池是降低内存压力的优化手段,不会导致OOM。三、简答题(每题10分,共20分)第1题ConcurrentHashMap在JDK7与JDK8中的区别JDK7:采用分段锁(Segment),每个Segment是一把独立的锁,默认16段,最多支持16个线程并发写;底层结构为数组加链表。JDK8:取消Segment,改为数组、链表加红黑树;通过CAS加synchronized锁定桶的头节点,锁粒度更细,并发度更高。扩容与统计:扩容逻辑与size统计方式均有调整,引入辅助扩容机制,支持多线程协同扩容。查询优化:链表长度不小于8且数组长度不小于64时转为红黑树,把最坏查找从O(n)降到O(logn)。第2题Redis分布式锁的实现、风险与优化基础命令:SETlock_keyvalueNXEX过期时间。其中NX表示键不存在时才设置,用于保证互斥;EX设置自动过期,用于防止死锁。主要风险锁提前过期:业务执行时间超过锁有效期,锁已被释放而业务未完成误删他人锁:A线程的锁超时释放后,被B线程获取,A执行结束时删掉了B的锁主从异步复制:主节点宕机时锁信息尚未同步,从节点升主后锁丢失优化方案value存唯一标识(如UUID),释放锁时用Lua脚本校验持有者后原子删除增加锁续期机制(看门狗),业务未结束时自动延长有效期对一致性要求高的场景使用RedLock或ZooKeeper方案业务侧控制单次执行时长小于锁过期时间,并做好失败重试与幂等四、编程题(每题10分,共20分)编程题1三数之和(算法)题目:给定一个整数数组nums,找出所有不重复的三元组,满足a+b+c=0,返回全部组合。要求结果不重复,三元组内部有序。示例:输入−1、0、1、2、−1、−4,输出为(−1,−1,2)与(−1,0,1)。思路:先排序,固定第一个数后在其右侧用双指针向中间收缩;对第一个数与左右指针分别做去重,避免重复三元组;当固定数大于0时可直接终止。java

三数之和Java参考实现

importjava.util.ArrayList;

importjava.util.Arrays;

importjava.util.List;

publicclassThreeSum{

publicList<List<Integer>>threeSum(int[]nums){

List<List<Integer>>res=newArrayList<>();

Arrays.sort(nums);

intn=nums.length;

for(inti=0;i<n;i++){

if(nums[i]>0)break;//最小数已大于0,无解

if(i>0&&nums[i]==nums[i-1])continue;//第一个数去重

intl=i+1,r=n-1;

while(l<r){

intsum=nums[i]+nums[l]+nums[r];

if(sum==0){

res.add(Arrays.asList(nums[i],nums[l],nums[r]));

while(l<r&&nums[l]==nums[l+1])l++;//左指针去重

while(l<r&&nums[r]==nums[r-1])r--;//右指针去重

l++;

r--;

}elseif(sum<0){

l++;

}else{

r--;

}

}

}

returnres;

温馨提示

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

评论

0/150

提交评论