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

Java基础面试题全集

 

1. Java语言基础

1.1 Java是什么?

  • Java是一种广泛使用的编程语言,最初由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它是一种面向对象的、基于类的、通用型的编程语言,旨在让应用程序“编写一次,到处运行”(Write Once, Run Anywhere)。

1.2 Java的主要特性有哪些?

  • 平台独立性:通过Java虚拟机(JVM)实现跨平台运行。

  • 面向对象:支持类、继承、多态等概念。

  • 自动内存管理:垃圾回收机制自动管理内存。

  • 安全性:通过安全模型和类加载机制保障。

  • 强类型语言:变量必须明确声明类型。

1.3 JDK、JRE、JVM的区别是什么?

  • JDK(Java Development Kit):包含开发Java程序所需的全部工具,如编译器、调试器等。

  • JRE(Java Runtime Environment):运行时环境,包含JVM和Java核心类库,用于执行Java程序。

  • JVM(Java Virtual Machine):Java虚拟机,是Java程序的运行环境,负责将Java字节码转换为机器码执行。

2. 数据类型与变量

2.1 Java中有哪些基本数据类型?

  • 整数类型:byte, short, int, long

  • 浮点类型:float, double

  • 字符类型:char

  • 布尔类型:boolean

2.2 变量作用域有哪些?

  • 类变量(静态变量):用static修饰,属于类本身,所有实例共享。

  • 实例变量:没有static修饰,属于类的实例。

  • 局部变量:在方法或代码块中定义,只在定义它的代码块中有效。

2.3 解释一下Java中的自动装箱和拆箱?

  • 自动装箱:将基本数据类型转换为对应的包装类对象(如int到Integer)。

  • 自动拆箱:将包装类对象转换为基本数据类型(如Integer到int)。

3. 运算符与表达式

3.1 Java中有哪些运算符?

  • 算术运算符:+、-、*、/、%、++、--

  • 赋值运算符:=、+=、-=、*=、/=

  • 关系运算符:<、>、<=、>=、==、!=

  • 逻辑运算符:&&、||、!

  • 位运算符:&、|、^、~、<<、>>、>>>

  • 条件运算符(三元运算符):条件 ? 表达式1 : 表达式2

  • 字符串连接运算符:+

3.2 解释一下短路逻辑运算符?

  • 在逻辑与(&&)运算中,如果第一个操作数为false,则整个表达式立即返回false,不再计算第二个操作数。

  • 在逻辑或(||)运算中,如果第一个操作数为true,则整个表达式立即返回true,不再计算第二个操作数。

4. 流程控制

4.1 Java中的循环结构有哪些?

  • for循环:基于索引的循环。

  • while循环:当条件为真时重复执行。

  • do-while循环:至少执行一次,然后检查条件。

4.2 break和continue的区别是什么?

  • break:立即终止当前循环或switch语句。

  • continue:跳过当前循环的剩余部分,直接进入下一次循环迭代。

4.3 switch语句的使用场景?

  • 用于替代多个if-else if条件判断,特别是当判断条件是单个变量且为整型、字符型或枚举类型时。

5. 数组与集合

5.1 数组与集合的区别是什么?

  • 数组:固定大小,存储相同类型的元素,访问速度快。

  • 集合:动态大小,可以存储不同类型的对象,提供了丰富的操作方法。

5.2 Java集合框架主要包含哪些接口和类?

  • 主要接口:List、Set、Map、Queue

  • 主要实现类:ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、LinkedList(也实现了Deque接口)

5.3 ArrayList与LinkedList的区别是什么?

  • ArrayList:基于动态数组实现,查询效率高,插入删除效率低(尤其是中间位置)。

  • LinkedList:基于链表实现,插入删除效率高,查询效率低。

6. 面向对象编程

6.1 面向对象编程的三大特性是什么?

  • 封装:隐藏对象的属性和实现细节,仅公开必要的接口。

  • 继承:子类继承父类的属性和方法,实现代码复用。

  • 多态:允许将子类对象视为父类对象使用,实现接口的动态绑定。

6.2 抽象类与接口的区别是什么?

  • 抽象类可以有实现的方法,接口中的所有方法都是抽象的(Java 8以后接口可以有默认方法和静态方法)。

  • 一个类只能继承一个抽象类,但可以实现多个接口。

  • 抽象类主要用于定义类的模板,接口用于定义功能的契约。

6.3 什么是内部类?它有哪些类型?

  • 内部类:定义在另一个类内部的类。

  • 类型:成员内部类、局部内部类、匿名内部类、静态内部类。

7. 异常处理

7.1 Java中的异常处理机制是怎样的?

  • 使用try-catch-finally结构捕获和处理异常。

  • throw用于主动抛出异常,throws用于声明方法可能抛出的异常。

  • 自定义异常类通常继承自Exception或RuntimeException。

7.2 finally块中的代码什么时候执行?

  • finally块中的代码总是会在try或catch块之后执行,无论是否发生异常,除非在执行try或catch块时程序终止(如System.exit()调用)。

8. 输入输出与文件操作

8.1 Java中的IO流分为哪几类?

  • 按功能分:输入流(InputStream/Reader)和输出流(OutputStream/Writer)。

  • 按处理单位分:字节流(InputStream/OutputStream)和字符流(Reader/Writer)。

  • 按流向分:节点流和处理流。

8.2 如何读取和写入文件?

  • 使用FileReader/FileWriter、BufferedReader/BufferedWriter进行字符读写。

  • 使用FileInputStream/FileOutputStream、BufferedInputStream/BufferedOutputStream进行字节读写。

9. 多线程与并发

9.1 什么是线程?Java如何实现多线程?

  • 线程是CPU调度的基本单位,用于并发执行任务。

  • Java通过继承Thread类或实现Runnable接口来创建线程。

9.2 解释一下线程的生命周期?

  • 新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、等待(Waiting)、时间等待(Timed Waiting)、终止(Terminated)。

9.3 同步与异步的区别是什么?

  • 同步:多个任务按顺序执行,一个任务完成后另一个任务才开始。

  • 异步:多个任务并发执行,不等待上一个任务完成。

9.4 Java中如何实现线程同步?

  • 使用synchronized关键字修饰方法或代码块。

  • 使用显式锁(如ReentrantLock)。

  • 使用原子变量类(如AtomicInteger)。

10. 网络编程

10.1 Java网络编程主要涉及哪些类?

  • Socket类:用于客户端网络通信。

  • ServerSocket类:用于服务器端监听客户端连接。

  • InetAddress类:表示IP地址。

  • URL和URLConnection类:用于处理网络资源的访问。

10.2 什么是TCP/IP协议?

  • TCP(传输控制协议):面向连接的、可靠的、基于字节流的传输层通信协议。

  • IP(互联网协议):负责为互联网上的每一台计算机分配一个唯一的地址。

11. Java泛型

11.1 泛型的好处是什么?

  • 提高代码重用性,减少类型转换错误。

  • 编译时类型检查,提高代码安全性。

11.2 泛型的类型擦除是什么?

  • Java泛型是通过类型擦除来实现的,即在编译期间将泛型类型信息擦除,替换为原始类型(通常是Object),并在必要时插入类型转换代码。

12. 注解与反射

12.1 什么是注解?

  • 注解是Java提供的一种对代码进行标注的机制,可以用于编译时、加载时或运行时处理。

12.2 反射机制是什么?

  • 反射允许程序在运行时动态地获取类的内部信息(如属性、方法),并能直接操作任意对象的内部属性及方法。

相关文章:

Java基础面试题全集

1. Java语言基础 1.1 Java是什么&#xff1f; • Java是一种广泛使用的编程语言&#xff0c;最初由Sun Microsystems&#xff08;现为Oracle公司的一部分&#xff09;于1995年发布。它是一种面向对象的、基于类的、通用型的编程语言&#xff0c;旨在让应用程序“编写一次&…...

3.激活函数:神经网络中的非线性驱动器——大模型开发深度学习理论基础

激活函数在神经网络中扮演着至关重要的角色&#xff0c;它为模型引入非线性因素&#xff0c;使得网络能够拟合复杂的数据分布&#xff0c;从而实现高效的特征提取与预测。本文将从实际开发角度出发&#xff0c;介绍激活函数的基本概念、常见激活函数&#xff08;如 ReLU、GELU、…...

VUE的第二天

1. 指令修饰符 1.1什么是指令修饰符&#xff1f; ​ 所谓指令修饰符就是通过“.”指明一些指令后缀 不同的后缀封装了不同的处理操作 —> 简化代码 1.2按键修饰符 keyup.enter —>当点击enter键的时候才触发 代码演示&#xff1a; <div id"app"><…...

Element Plus中的树组件的具体用法(持续更新!)

const defaultProps {//子树为节点对象的childrenchildren: children,//节点标签为节点对象的name属性label: name, } 属性 以下是树组件中的常用属性以及作用&#xff1a; data&#xff1a;展示的数据&#xff08;数据源&#xff09; show-checkbox&#xff1a;节点是否可…...

尚硅谷爬虫note14

一、scrapy scrapy&#xff1a;为爬取网站数据是&#xff0c;提取结构性数据而编写的应用框架 1. 安装 pip install scrapy 或者&#xff0c;国内源安装 pip install scrapy -i https&#xff1a;//pypi.douban.com/simple 2. 报错 报错1&#xff09;building ‘twisted.te…...

/***************************所有笔记汇总目录***************************/

文章分类目录 STM32CubeMX 01、STM32CubeMX——定时器&#xff08;普通模式和PWM模式&#xff09; 02、STM32CubeMX——串口&#xff08;HAL库&#xff09; 03、STM32CubeMX——(uart_IAP串口)简单示例 04、STM32CubeMX——ADC采集单通道&#xff0c;多通道&#xff0c;内部…...

Spring Framework中的IoC容器

控制反转(Inversion of Control, IoC)与面向切面编程(Aspect Oriented Programming, AOP)是Spring Framework中最重要的两个概念&#xff0c;本章会着重介绍前者。 2.1.1什么是IoC容器 使用XML来配置类实例 定义一个Java Bean类 在resources文件夹中定义一个beans.xml文件&a…...

永洪科技深度分析实战,零售企业的销量预测

随着人工智能技术的不断发展&#xff0c;智能预测已经成为各个领域的重要应用之一。现在&#xff0c;智能预测技术已经广泛应用于金融、零售、医疗、能源等领域&#xff0c;为企业和个人提供决策支持。 智能预测技术通过分析大量的数据&#xff0c;利用机器学习和深度学习算法…...

2.数据结构-栈和队列

数据结构-栈和队列 2.1栈2.1.1栈的表示和实现2.1.2栈的应用举例数制转换括号匹配检验迷宫给求解表达式求值 2.1栈 栈是限定仅在表尾进行插入或删除操作的线性表&#xff0c;因此&#xff0c;对栈来说&#xff0c;表尾端有其特殊含义&#xff0c;称为栈顶&#xff08;top&#x…...

C++ MySQL 常用接口(基于 MySQL Connector/C++)

C MySQL 常用接口&#xff08;基于 MySQL Connector/C&#xff09; 1. 数据库连接 接口&#xff1a; sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用&#xff1a; 用于创建 MySQL 连接对象。 示例&#xff1a; driver sql::mysql::get_mysql_driver_insta…...

android studio开发文档

android基本样式 1.文本 2.设置文本大小 3.字体颜色 背景 资源文件 xml’引用资源文件 4.视图宽高 5.间距 6.对齐方式 常用布局 1.linearLayout线性布局 2.相对布局 RelativeLayout 3.网格布局GridLayout 4.scrollview滚动视图 Button 点击事件与长按事件 长按 按钮禁用与…...

Java 对象与类——从 C++ 到 Java

文章目录 面向对象程序设计概述使用预定义类用户自定义类静态字段与静态方法方法参数对象构造包JAR 文件文档注释类设计技巧 面向对象程序设计概述 面向对象程序设计&#xff08;OOP&#xff09;在 20 世纪 70 年代出现&#xff0c;是当今主流编程范型&#xff0c;Java 是面向…...

java2025年常见设计模式面试题

1. 请解释建造者模式&#xff08;Builder Pattern&#xff09;及其应用场景。 答案&#xff1a; 建造者模式用于创建一个复杂的对象&#xff0c;同时允许用户只通过指定复杂对象的类型和内容就能构建它们&#xff0c;隐藏了复杂的构建逻辑。 示例&#xff1a; public class C…...

一篇文章讲解清楚ARM9芯片启动流程

SAM9X60 ARM9 boot启动流程关键词介绍&#xff1a; 第一级bootloader - 也叫boot ROM&#xff0c;是集成在MPU内部的ROM里面 它的主要功能是执行对MPU的基本初始化和配置&#xff0c;查找并将第二级bootloader从外部NVM中读取出来并放到MPU内部的SRAM. 可以让MPU强制停留在第一…...

setlocale()的参数,“zh_CN.UTF-8“, “chs“, “chinese-simplified“的差异。

在 C/C 中&#xff0c;setlocale() 函数的参数 zh_CN.UTF-8、chs 和 chinese-simplified 均用于设置中文简体环境&#xff0c;但它们的语义、平台支持和编码行为存在显著差异&#xff1a; ​1. zh_CN.UTF-8&#xff08;推荐&#xff09;​ ​含义&#xff1a; zh_CN: 中文&…...

Python项目-基于Django的在线教育平台开发

1. 项目概述 在线教育平台已成为现代教育的重要组成部分&#xff0c;特别是在后疫情时代&#xff0c;远程学习的需求显著增加。本文将详细介绍如何使用Python的Django框架开发一个功能完善的在线教育平台&#xff0c;包括系统设计、核心功能实现以及部署上线等关键环节。 本项…...

【2025】Electron + React 架构筑基——从零到一的跨平台开发

引言 源代码仓库&#xff1a; Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status&#xff0c;却依然无法直观看到文件变化&#xff1f; 是否羡慕VS Code的丝滑Git集成&#xff0c;却苦恼于无法定制自己的专属工具&#xff1f; 本专栏将为你打开一扇新的…...

Vue3实战学习(IDEA中打开、启动与搭建Vue3工程极简脚手架教程(2025超详细教程)、Windows系统命令行启动Vue3工程)(2)

目录 一、命令行中重新启动已搭建好的Vue3工程。(快速上手) &#xff08;0&#xff09;Windows环境下使用命令行从零到一手动搭建Vue3工程教程。 &#xff08;1&#xff09;首先找到已建Vue3工程的目录。 &#xff08;2&#xff09;无需再下载依赖包&#xff0c;直接执行npm ru…...

【ArcGIS】地理坐标系

文章目录 一、坐标系理论体系深度解析1.1 地球形态的数学表达演进史1.1.1 地球曲率的认知变化1.1.2 参考椭球体参数对比表 1.2 地理坐标系的三维密码1.2.1 经纬度的本质1.2.2 大地基准面&#xff08;Datum&#xff09;的奥秘 1.3 投影坐标系&#xff1a;平面世界的诞生1.3.1 投…...

Redis- 切片集群

切片集群 切片集群什么是Redis Cluster吗&#xff1f;为什么需要切片集群&#xff1f;Redis Cluster的数据分片机制是怎样的&#xff1f;哈希槽的算法是什么基本算法流程 待填坑 切片集群 什么是Redis Cluster吗&#xff1f;为什么需要切片集群&#xff1f; Redis Cluster是R…...

Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)

背景&#xff1a;问题如上标题&#xff0c;H3C所有交换机配置的model都是comware 解决方案&#xff1a; 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…...

力扣146 - LRU缓存

视频讲解 哈希 双向链表 为什么要用双向链表&#xff1f; 快速删除节点&#xff08;O(1&#xff09;&#xff09; 如果是单链表的话&#xff0c;删除一个节点时&#xff0c;需要从头遍历&#xff0c;找到前驱节点&#xff0c;才能修改 prev->next&#xff0c;导致 O(n)…...

单例模式:确保一个类只有一个实例

目录 引言 1. 单例模式的核心思想 2. 单例模式的实现方式 2.1 饿汉式单例 2.2 懒汉式单例 2.3 线程安全的懒汉式单例 2.4 双重检查锁定&#xff08;Double-Checked Locking&#xff09; 2.5 静态内部类实现单例 2.6 枚举实现单例 3. 单例模式的使用场景 4. 单例模式…...

doris: SQL Server

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 SQL Server 数据库。本文档介绍如何配置 SQL Server 数据库连接。 使用须知​ 要连接到 SQL Server 数据库&#xff0c;您需要 SQL Server 2012 或更高版本&#xff0c;或 Azure SQL 数据库。 SQL Server 数据库的 JDBC 驱动…...

【ubuntu20】--- 搭建 gerrit 最新最详细

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【ubuntu20】--- 搭建 gerrit 最新最详细…...

RtlLookupAtomInAtomTable函数分析之RtlpAtomMapAtomToHandleEntry函数的作用是验证其正确性

第一部分&#xff1a; NTSTATUS RtlLookupAtomInAtomTable( IN PVOID AtomTableHandle, IN PWSTR AtomName, OUT PRTL_ATOM Atom OPTIONAL ) { NTSTATUS Status; PRTL_ATOM_TABLE p (PRTL_ATOM_TABLE)AtomTableHandle; PRTL_ATOM_TABLE_ENTRY a; …...

Python----数据分析(Matplotlib五:pyplot的其他函数,Figure的其他函数, GridSpec)

一、pyplot的其他函数 1.1、xlabel 在matplotlib中&#xff0c; plt.xlabel() 函数用于为当前活动的坐标轴&#xff08;Axes&#xff09;设置x轴的 标签。当你想要标识x轴代表的数据或单位时&#xff0c;这个函数非常有用。 plt.xlabel(xlabel text) 1.2、ylabel 在matplotl…...

C语言——链表

大神文献&#xff1a;https://blog.csdn.net/weixin_73588765/article/details/128356985 目录 一、链表概念 1. 什么是链表&#xff1f; 1.1 链表的构成 2. 链表和数组的区别 数组的特点&#xff1a; 链表的特点&#xff1a; 二者对比&#xff1a; 二…...

使用免费IP数据库离线查询IP归属地

一、准备工作 1.下载免费IP数据库 首先&#xff0c;访问 MaxMind官网&#xff08;https://www.maxmind.com/en/home&#xff09;如果你还没有MaxMind账号&#xff0c;可以通过此链接地址&#xff08;https://www.maxmind.com/en/geolite2/signup&#xff09;进行账号注册&…...

MySQL(单表)知识点

文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…...