Java面试题大全(全网最全,持续更新)中级(2)

1. 集合与泛型

1.1. 什么是泛型?泛型的优势是什么?

泛型允许类、接口和方法在定义时不指定具体的类型,在使用时再指定类型。优势:

  • 提高代码复用性。
  • 提供类型安全,避免强制类型转换带来的 ClassCastException
public class Box<T> {private T value;public void set(T value) { this.value = value; }public T get() { return value; }
}

1.2. HashMapTreeMap 的区别是什么?

  • HashMap:基于哈希表实现,时间复杂度为 O(1),无序存储。
  • TreeMap:基于红黑树实现,时间复杂度为 O(logN),按键的自然顺序或自定义排序存储。

1.3. 为什么 HashMap 不是线程安全的?如何让它线程安全?

HashMap 在并发环境下,可能出现数据不一致的情况。可以使用:

  • Collections.synchronizedMap 方法。
  • ConcurrentHashMap 提供线程安全的 HashMap

2. 多线程与并发

2.1. 解释线程安全和死锁。

  • 线程安全:多个线程访问同一个资源时,不会破坏数据一致性。
  • 死锁:两个或多个线程互相等待对方释放锁,导致程序无法继续执行。

2.2. 什么是 volatile 关键字?

volatile 关键字用于修饰变量,保证变量的可见性,即当一个线程修改变量时,其他线程立刻可以看到变化,但不能保证操作的原子性。


2.3. 什么是线程池?为什么要使用线程池?

线程池是一个预先创建并管理线程的工具,用于复用线程,减少创建和销毁线程的开销,提高性能。常见的线程池类有 ExecutorService

ExecutorService pool = Executors.newFixedThreadPool(5);
pool.execute(new RunnableTask());

3. 设计模式

3.1. 解释观察者模式。

观察者模式定义了对象间的一对多依赖关系,当一个对象状态改变时,所有依赖于它的对象都会收到通知并自动更新。


3.2. 什么是代理模式?如何实现?

代理模式通过代理类控制对目标对象的访问。可以通过静态代理和动态代理来实现。

public interface Service {void perform();
}public class ServiceImpl implements Service {public void perform() {System.out.println("Service performing");}
}public class ServiceProxy implements Service {private Service service;public ServiceProxy(Service service) {this.service = service;}public void perform() {System.out.println("Proxy: before");service.perform();System.out.println("Proxy: after");}
}

想要更大提升,点击使用小奈AI,免费创造无限可能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148521.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

word批量裁剪图片,并调整图片大小,不锁定纵横比

在word中有若干图片待处理&#xff0c;裁剪出指定内容&#xff0c;调整成指定大小。如下是待处理的图片&#xff1a; 这时&#xff0c;选择视图&#xff0c;选择宏&#xff0c;查看宏 选择创建宏 添加cut_picture代码如下&#xff0c;其中上、下、左、右裁剪的橡塑尺寸根据自己…

李飞飞创业公司World Labs:引领AI新方向的“大世界模型”

引言 随着人工智能的不断进步&#xff0c;AI领域涌现了许多新兴技术和研究方向。在这其中&#xff0c;李飞飞创办的World Labs凭借其独特的“空间智能”和“大世界模型”&#xff08;Large World Model, LWM&#xff09;理念&#xff0c;迅速成为焦点。尤其是在获得了2.3亿美元…

系统架构设计师教程 第10章 10.5 软件架构演化评估方法笔记

10.5 软件架构演化评估方法 ★★★☆☆ 10.5.1 演化过程已知的评估 目的在于通过对架构演化过程进行度量&#xff0c;比较架构内部结构上的差异以及由此导致的外部质量属性上的变化&#xff0c;对该演化过程中相关质量属性进行评估。 1.评估流程 架构演化评估的基本思路是将架…

IDEA快速查看类中有那些方法的快捷键

IDEA快速查看类中有那些方法的快捷键 1.显示类结构弹出窗口 你可以使用以下快捷键来快速查看当前类的方法和成员&#xff1a; Windows/Linux: Ctrl F12 macOS: Option F12 或 ⌥ F12 这会打开一个弹出窗口&#xff0c;显示当前类的结构&#xff0c;包括方法、字段、构造函…

派可数据:解锁数据潜力,驱动业务价值新增长

前 言 当前&#xff0c;企业数字化转型经过初始探索阶段&#xff0c;各行各业进入高速发展百花齐放的创新应用新阶段。创新应用阶段的核心是企业应用先进的数字技术和工具&#xff0c;对企业多年在全领域积累的各类数据&#xff0c;包括财务、业务、生产、设计、设备、工艺等结…

车载应用的多功能需求与公安、金融等行业的应用特点

随着科技的快速发展&#xff0c;车载应用的功能需求也日益多样化。除了基本的视频监控功能外&#xff0c;现代车载应用还需满足一系列高级功能&#xff0c;如无线网络视频监控、GPS卫星定位、车辆调度、语音报站、行驶信息记录以及多媒体娱乐广告播放等。这些功能在公安、金融等…

Vue 实战教程:从 0 到 1 手把手打造新手友好的聊天应用,附完整开源代码,快速上手前端开发!(包含发送消息、发送表情包、发送文件、下载文件、截图等功能)

b站视频演示效果&#xff1a; 效果图&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><title>简单聊天功能示例</title><!-- 引入 Vue.js&#xff08;通过 …

深度优先搜索算法及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记################# 深度优先搜索算法(DepthFirst Search),简记DFS算法,是图论中的首要算法,其思想方法渗透到图论中的许多算法之中,尤其是DFS算法在求生成树、割点、块和平面图嵌入算法中起着极为关键的作用。…

开源ids snort (windows版)

Snort-IPS-on-Windows-main资源-CSDN文库 GitHub - eldoktor1/Snort-IPS-on-Windows: A comprehensive guide to installing and configuring Snort IPS on Windows, ensuring robust network security 解压后安装 npcap-1.75.exe Snort_2_9_20_Installer.x64.exe 安装后cm…

MiniMind环境搭建训练推理测试

引子 写了那么多篇大模型环境搭建推理部署的blog&#xff0c;如果没记错有几篇就是因为GPU资源hold不住&#xff0c;没有无法得到最终结果的&#xff08;智谱AI GLM-4V-9B视觉大模型环境搭建&推理-CSDN博客&#xff09;。我个人一直觉得大模型发展最终还是要走向端侧&…

8591 计算next值

### 思路 1. **录入字符串**&#xff1a;读取用户输入的字符串个数 n&#xff0c;然后逐个读取每个字符串。 2. **计算NEXT值**&#xff1a;对于每个字符串&#xff0c;计算其NEXT数组。 3. **输出NEXT值**&#xff1a;输出每个字符串对应的NEXT数组。 ### 伪代码 function g…

DevExpress WPF中文教程:如何解决行焦点、选择的常见问题?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

环境部署-环境变量

环境部署-环境变量 1、python设置查找环境变量2、linux设置设置查找环境变量 仅个人笔记使用&#xff0c;感谢点赞关注 1、python设置查找环境变量 python设置环境变量 import os os.environ["PYTHONPATH"] "/path/to/library"python获取环境变量 MYS…

AI时代最好的编程语言应该选择谁?

在AI的时代&#xff0c;编程语言的选择对就业机会和薪资水平有着至关重要的影响。C和Python被认为是两个极端的代表语言&#xff0c;分别适用于不同的技术需求和开发场景。然而&#xff0c;选择最有价值的编程语言&#xff0c;不仅要考虑其技术特性&#xff0c;还需要综合考虑行…

【数据结构】你真的了解哈希表吗?看完你会对数据结构——哈希表, 会有更深更全面的认识 (理论篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

实例讲解电动汽车VCU故障分类、故障码发送策略及Simulink建模方法

汽车作为一个上万零部件组成的工业品&#xff0c;从设计研发到试制调试再到路试可靠性测试再到车辆批量生产&#xff0c;要经历一个相当长的周期。在设计研发阶段&#xff0c;从设计方案与原理上尽量减少故障出现的可能&#xff0c;在试制调试阶段&#xff0c;通过全面的调试测…

车间设备巡检的意义与设备巡检系统的选择之道

在现代工业生产中&#xff0c;车间设备是企业的核心资产&#xff0c;其稳定运行直接关系到企业的生产效率、产品质量以及经济效益。而车间设备巡检作为设备管理的重要环节&#xff0c;具有不可忽视的重要性。 一、车间设备巡检的重要性 车间设备在长时间、高强度的运行过程中&…

C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究

思考这样一串代码的运行结果&#xff1a; #include <iostream> using namespace std; class Person { public:~Person() { cout << "~Person()" << endl; } }; class Student:public Person { public:~Student() { cout << "~Student(…

Linus Torvalds解释为什么Linux开发人员趋向老龄化反而是件好事

Linux 的关键人物莱纳斯-托瓦尔兹&#xff08;Linus Torvalds&#xff09;说&#xff0c;尽管长期以来一直有关于开源软件开发领域出现倦怠的报道&#xff0c;但 Linux 仍一如既往地强大–尽管他承认&#xff0c;由于其规模和范围&#xff0c;他的项目也许是一个例外。 本周一&…

HTML引用CSS

CSS 样式需要引用到 HTML 中才能真正有效&#xff0c;那么如何才能在 HTML 中引用 CSS 呢&#xff1f;下面就来介绍一下。 1. 内嵌样式表 您可以在 HTML 头部&#xff08;<head>标签内&#xff09;的<style>标签中定义 CSS 样式&#xff0c;使用内嵌样式表定义的…