当前位置: 首页 > news >正文

2025java常见面试题第一弹

1. Java中的HashMapHashtable有什么区别?

答案

  • 线程安全性

    • HashMap是线程不安全的,适合单线程环境。如果在多线程环境下使用,可能会出现数据不一致的问题。

    • Hashtable是线程安全的,内部方法通过synchronized关键字进行了同步,适合多线程环境。

  • 性能

    • HashMap由于没有线程同步的开销,性能通常比Hashtable更高。

  • 空值支持

    • HashMap允许键和值为null

    • Hashtable不允许键或值为null,否则会抛出NullPointerException

  • 迭代器

    • HashMap的迭代器是fail-fast的,如果在迭代过程中修改了集合,会抛出ConcurrentModificationException

    • Hashtable的迭代器也是fail-fast的。

  • 初始容量和加载因子

    • HashMap默认初始容量为16,加载因子为0.75。

    • Hashtable默认初始容量为11,加载因子为0.75。

2. Java中的ArrayListLinkedList有什么区别?

答案

  • 底层实现

    • ArrayList基于动态数组实现,随机访问性能高,适合频繁的读取操作。

    • LinkedList基于双向链表实现,插入和删除操作性能高,适合频繁的增删操作。

  • 内存占用

    • ArrayList连续存储,内存占用相对紧凑。

    • LinkedList每个节点存储了前后节点的引用,内存占用相对较大。

  • 性能

    • 随机访问ArrayList通过索引访问元素的时间复杂度为O(1),而LinkedList需要从头或尾遍历,时间复杂度为O(n)。

    • 插入和删除LinkedList在链表中间插入或删除元素的时间复杂度为O(1),而ArrayList需要移动元素,时间复杂度为O(n)。

  • 扩容机制

    • ArrayList在容量不足时会扩容为原来的1.5倍。

    • LinkedList不需要扩容,因为链表的大小是动态的。

3. Java中volatilesynchronized的区别是什么?

答案

  • 作用范围

    • volatile只能修饰变量,用于保证变量的可见性。

    • synchronized可以修饰方法或代码块,用于保证方法或代码块的同步。

  • 锁机制

    • volatile不涉及锁机制,只是保证变量的读写操作对所有线程可见。

    • synchronized通过锁机制实现线程同步,保证同一时刻只有一个线程可以执行同步代码。

  • 性能

    • volatile的开销较小,因为它只保证变量的可见性。

    • synchronized的开销较大,因为它涉及到锁的获取和释放。

  • 适用场景

    • volatile适用于变量的读写操作简单且不需要复杂的原子性操作。

    • synchronized适用于需要对多个变量进行复杂操作的场景。

这些题目和答案涵盖了Java中的集合框架、线程安全和并发编程等热点知识,是面试中常见的问题。

http://www.lryc.cn/news/538513.html

相关文章:

  • JMeter工具介绍、元件和组件的介绍
  • 机舱卫生和空气质量改善
  • springBoot之环境变量
  • 萨班斯-奥克斯利法案(Sarbanes-Oxley Act, SOX):公司财务透明度的守护者(中英双语)
  • iOS 中使用 FFmpeg 的高级功能 - 滤镜(Filters)
  • tomcat html乱码
  • kubectl exec 实现的原理
  • Unity中可靠的UDP实现
  • CentOS 7操作系统部署KVM软件和创建虚拟机
  • Golang GORM系列:GORM分页和排序
  • WPF的MVVMLight框架
  • 微服务SpringCloudAlibaba组件sentinel教程【详解sentinel的使用以及流量控制、熔断降级、热点参数限流等,附有示例+代码】
  • ScoreFlow:通过基于分数的偏好优化掌握 LLM 智体工作流程
  • 数字水印嵌入及提取系统——基于小波变换GUI
  • 基于海思soc的智能产品开发(图像处理的几种需求)
  • 【R语言】聚类分析
  • Spring 项目接入 DeepSeek,分享两种超简单的方式!
  • docker 进阶命令(基于Ubuntu)
  • 机器学习数学基础:29.t检验
  • HarmonyNext上传用户相册图片到服务器
  • WebAssembly 3.0发布:浏览器端高性能计算迎来新突破!
  • 计算机组成原理—— 外围设备(十三)
  • 面试题之Vuex,sessionStorage,localStorage的区别
  • window中git bash使用conda命令
  • 象棋掉落动画(局部旋转动画技巧)
  • Pycharm 2024在解释器提供的python控制台中运行py文件
  • 课题推荐:高空长航无人机多源信息高精度融合导航技术研究
  • 《DeepSeek训练算法:开启高效学习的新大门》
  • promise用法总结以及手写promise
  • 春招项目=图床+ k8s 控制台(唬人专用)