13个Java基础面试题

news2025/3/1 1:47:31

Hi,大家好,我是王二蛋。

金三银四求职季,特地为大家整理出13个 Java 基础面试题,希望能为正在准备或即将参与面试的小伙伴们提供些许帮助。

后续还会整理关于线程、IO、JUC等Java相关面试题,敬请各位持续关注。

这13个基础面试题先给大家罗列出来

在这里插入图片描述

1.Java 创建对象有几种方式?

在Java中,创建对象主要有以下几种方式:

  • 使用new关键字创建对象:这是最常见和直接的方式。通过调用类的构造函数,可以使用new关键字创建对象。

  • 使用Class类的newInstance方法:如果类有一个无参数的公共构造函数,可以使用Class对象的newInstance方法创建对象。

  • 使用反序列化创建对象:当从文件、网络或其他IO流中读取对象的序列化表示时,可以使用Java的对象反序列化来创建对象。这通常涉及到ObjectInputStream类。

  • 使用克隆方法创建对象:如果类实现了Cloneable接口并覆盖了Object类的clone方法,那么可以通过调用对象的clone方法来创建该对象的一个副本。

  • 使用工厂方法创建对象:工厂方法是一种设计模式,它封装了对象的创建逻辑,并返回该类型的对象。

  • 使用依赖注入框架创建对象:在大型项目中,通常使用如Spring这样的依赖注入框架来创建和管理对象。

2.有了数组为什么还要ArrayList?

为了方便程序员!!!

数组的大小在创建时是固定的,一旦创建,其大小就不能改变。如果要添加更多的元素,就需要创建一个新的更大的数组,并将旧数组的元素复制到新数组中。ArrayList 提供了add(), remove(), get(), size()等方法可以帮助程序员完成这一切工作,更灵活、更便利。

3.重载和重写的区别

重载发生在一个类中。同一个方法名如果有不同的参数列表(参数类型、个数、顺序不同)则视为重载,是多态的一种表现。

重载

重写发生在父类与子类之间。现象就是在子类中把父类本身有的方法重新写一遍。

如果父类中的某个方法不满足子类的需求,子类就可以在方法名、参数列表、返回类型都相同的情况下,对方法体进行重写。

重写

4.什么是内部类?应用在什么场景?

在一个类或者一个方法里面定义的类,称为内部类

根据它们被定义的位置和方式,内部类可以分为四种类型:成员内部类、静态内部类、局部内部类和匿名内部类

成员内部类

成员内部类定义在类的成员位置,可以访问外部类的所有成员。

通常被用于封装和组合,比如一对一关系的声明。

静态内部类

静态内部类是static修饰的成员内部类,可以直接访问外部类的所有静态成员。

通常用于实现与外部类关联但不依赖于外部类实例的工具类、单例模式或工厂模式等。

局部内部类

局部内部类定义在方法、构造器或初始化块中。它只能访问外部类的final成员,以及它所在方法或构造器的final局部变量。

通常用于提供临时的功能。

匿名内部类

匿名内部类通常是一个接口的实现类对象,它主要用于简化代码和提供临时的实现。

经常使用匿名内部类来实现Runnable接口

5.介绍下Java中的四种引用

强引用

强引用是默认的引用类型,当一个对象具有强引用时,垃圾回收器不会回收该对象,即使系统内存不足也不会回收

强引用通常用于确保对象一直存在,例如在单例模式或缓存中。

软引用

软引用是一种比较灵活的引用类型。在系统内存足够时,软引用的对象不会被垃圾回收器回收。但当内存空间不足时,这些对象就会被回收

软引用主要用于实现内存缓存。

弱引用

弱引用比软引用更弱一些。无论当前内存空间足够与否,只要JVM开始进行垃圾回收,被弱引用关联的对象必定会被回收

虚引用

虚引用是Java中最弱的一种引用类型,它并不会决定对象的生命周期

虚引用主要用于跟踪对象被垃圾回收的情况,例如NIO中的DirectByteBuffer等。通过虚引用,我们可以获取到一个对象是否已经被垃圾回收了。

6.static都有哪些用法?

在Java中,static是一个关键字,用于声明属性和方法成员方法,以及内部类。

静态变量

静态变量是类级别的变量,它不属于任何对象实例。静态变量在类加载时初始化,并且只有一个副本存在于内存中,不管创建了多少个对象。所有的对象实例共享同一个静态变量的值。

静态方法

静态方法也是类级别的,不依赖于任何对象实例。静态方法只能访问静态成员变量或调用其他静态方法,因为它们没有与任何对象实例关联

静态块

静态块是在类加载时执行的代码块。它们通常用于初始化静态变量只需要执行一次的类级别的操作

静态内部类

静态内部类是一个定义在另一个类内部的类,但它不需要外部类的实例即可创建。静态内部类只能访问外部类的静态成员变量和静态方法。

7.HashCode在集合中的作用

hashCode()在集合中的作用主要是用来快速定位元素在哈希表(如HashMap和HashSet)中的位置。

Java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复

**在set中插入的时候怎么判断该元素已存在呢?**可以通过equals方法。但是如果元素太多,一个个equals,效率就会相当低下了。

当向集合添加元素时,集合会使用元素的hashCode()方法计算出一个哈希码,然后根据这个哈希码找到元素应该存放的位置。这样,当需要查找或操作某个元素时,集合可以直接定位到该位置,无需遍历整个集合,从而大大提高了效率。

8.Hash冲突怎么处理?

Hash冲突是指在哈希表中,两个不同的key经过哈希函数处理后得到了相同的哈希值,从而产生了冲突。处理Hash冲突的方法主要有以下几种:

  • 链地址法:当发生冲突时,将具有相同哈希值的元素存储在一个链表中。
  • 开放地址法:当发生冲突时,通过一定的探测方法在哈希表中寻找下一个可用的空槽位来存储元素。
    • 线性探测:按顺序查找下一个空槽位。
    • 二次探测:通过二次方的方式查找下一个空槽位。
    • 双重哈希:使用另一个哈希函数来确定步长,从而查找下一个空槽位。
  • 再哈希:当发生冲突时,使用不同的哈希函数再次计算键的哈希值,找到一个新的位置来存储元素。
  • 建立公共溢出区:将哈希表分为基本表和溢出表两部分。当基本表发生冲突时,就把该元素存入溢出表。

9.深拷贝和浅拷贝的区别是什么?

深拷贝和浅拷贝在复制对象时的主要区别在于它们处理对象内部元素的方式

深拷贝在复制对象时,会递归地复制原始对象及其所有子对象,包括对象的属性、嵌套对象、引用等。这意味着深拷贝会创建一个完全独立的新对象,修改原始对象不会影响复制对象

浅拷贝在复制对象时,只复制最外层对象,对于内部的嵌套对象,仅仅是引用而已。意味着原始对象和浅拷贝对象之间共享内部对象,修改其中一个对象的内部对象会影响到另一个对象

10. 你知道什么是fail-fast吗?

fail-fast是软件开发中的一种设计原则或模式。它指的是在程序执行过程中,一旦检测到异常或错误,就立即抛出异常并停止执行,以避免后续代码产生更严重的问题。这种策略被设计用来提高软件的可靠性和稳定性,防止问题持续扩散并造成更严重的后果。

在Java中,fail-fast是java.util包下的所有集合类的一种错误检测机制。当在多线程环境下,一个线程修改了集合,而另一个线程正在迭代该集合时,fail-fast行为会抛出ConcurrentModificationException异常。

下面是一个直观的fail-fast示例,它涉及两个线程:一个线程迭代集合,另一个线程修改集合。

11.介绍下你对红黑树的理解

请移步至《》

12.异常处理影响性能吗?

Java异常处理确实会对程序运行的速度产生一点影响。

想象一下,每次程序遇到异常,Java就会停下来,去创建一个记录异常的对象,并且还得记下当时程序正在做什么(调用栈信息)。这个过程需要花费一些时间,还可能占用一些额外的内存。

而且,当异常被抛出后,还需要暂停当前的程序执行,去找能处理这个异常的代码。这个查找过程涉及到对方法调用栈的遍历,是一个相对耗时的操作。

13.介绍下try-with-resource语法

try-with-resources 是 Java 7 引入的一个特性,它用于自动管理资源。这些资源通常需要在使用完毕后显式关闭,比如文件流、数据库连接等。

使用 try-with-resources 语句可以确保这些资源在 try 代码块执行完毕后被关闭,即使发生了异常也是如此。

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

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

相关文章

9. 性能

文章目录 第9章 性能9.1 性能通用场景9.2 性能策略控制资源需求管理资源 9.3 基于策略的性能的问卷9.4 性能模式服务网格负载均衡限流Map-Reduce 9.5 扩展阅读9.6 问题讨论 第9章 性能 身行一例,胜似千言。 —Mae West 这是跟时间有关的。 性能,即&…

JavaWeb--前端--01HTML和CSS

文章目录 1 前端开发介绍2 开发工具3 文档查阅4 CSS选择器VSCode的插件 点击进入:W3School的HTML文档 点击进入:W3School的CSS文档 内容就在这两个网站里面 1 前端开发介绍 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World W…

ArcGIS加载的各类地图怎么去除服务署名水印

昨天介绍的: 一套图源搞定!清新规划底图、影像图、境界、海洋、地形阴影图、导航图-CSDN博客文章浏览阅读373次,点赞7次,收藏11次。一体化集成在一起的各类型图源,比如包括影像、清新的出图底图、地形、地图阴影、道路…

定制k8s域名解析------CoreDns配置实验

定制k8s域名解析------CoreDns配置实验 1. 需求 k8s集群内通过CoreDns互相解析service名. 同时pana.cn域为外部dns解析,需要通过指定dns服务器进行解析 再有3个服务器,需要使用A记录进行解析 2. K8s外DNS服务器 查看解析文件 tail -3 /var/named/pana.cn.zone 解析内容 ww…

error: failed to push some refs to ‘https://gitee.com/zhao-zhimin12/gk.git‘

git push origin master发现以下报错: 解决办法: 一、强制推送 git push origin master -f (加上 -f 就是强制) 二、 先拉取最新代码,再推送 1.git pull origin master 2.git push origin master

11.基础乐理-音域、1=C到底是那一组的C

音域: 音域它指的是一个乐器(包括人声),能发出的所有的音高总,比如我们拿钢琴来看,钢琴最低的是大字二组的A2, 钢琴最高音是小字五组的c5,钢琴的音域是A2 - c5,如图1所示…

接口测试——postman

一.下载与安装 https://www.getPostman.com/ 界面导航说明 二.get请求 第一个get请求 批量执行接口请求: 1. 右击run collection 2. 会出现runner标签页 携带参数的GET请求 所谓的查询参数,其实就是URL地址中问号(?)后面的部分…

解决这个设备,搞安防网络不再踩坑!

中午好,我的网工朋友。 随着安全防护领域从模拟技术向IP技术的转型,网络在安防的应用越来越重要,也越来越复杂。 从业多年,我观察到许多行业同仁在技术实践中走了弯路,无论是安防厂商、集成商还是最终用户&#xff0…

C语言 | Leetcode C语言题解之第25题K个一组翻转链表

题目: 题解: /* 定义保存两个地址的结构体* 用来保存反转后结果的头节点和尾节点*/ typedef struct {struct ListNode* head; struct ListNode* tail; } TwoAddress; // 反转中间链表 TwoAddress* reverse(struct ListNode* head){struct ListNode* pr…

7 种实现 CSS 三角形的原理与方法 以及 三角形在网页设计中的作用

三角形在网页设计中不仅是图形设计的基本元素,更是实现视觉引导、空间构建、情绪传达、品牌塑造、性能优化以及创新表达的重要工具。其广泛应用和多功能性使其成为设计师手中不可或缺的设计语言组成部分。本文介绍了7种CSS实现三角形的方法。 CSS实现三角形主要有以…

基于java+springboot+vue实现的健身俱乐部系统(文末源码+Lw+ppt)23-49

摘 要 随着社会的发展,健身俱乐部的管理形势越来越严峻。越来越多的用户利用互联网获得信息,健身信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得本健身俱乐部管理信息,因此,设计一种安全高效的健身俱乐部网…

护眼大路灯十大排名品牌有哪些?护眼落地灯排行榜新鲜出炉!

作为一位电器测评博主,我的后台总会有人不断询问关于大路灯的问题。我大概汇总了一下,常见的就是护眼大路灯哪款好,护眼大路灯十大排名品牌有哪些等等,这些问题的存在主要是因为市面上存在着众多的大路灯品牌,质量参差…

【LeetCode刷题记录】54. 螺旋矩阵

54 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入&#xf…

目标检测——食品饮料数据集

一、重要性及意义 对食品和饮料进行目标检测的重要性和意义体现在多个方面: 商业应用与市场分析:目标检测技术在食品和饮料行业有着广泛的应用前景。通过对超市货架、餐馆菜单或广告海报中的食品和饮料进行自动识别和计数,商家可以获取关于产…

MongoDB的安装配置及使用

文章目录 前言一、MongoDB的下载、安装、配置二、检验MongoDB是否安装成功三、Navicat 操作MongoDB四、创建一个集合,存放三个文档总结 前言 本文内容: 💫 MongoDB的下载、安装、配置 💫 检验MongoDB是否安装成功 ❤️ Navicat 操…

【计算机毕业设计】基于微信小程序的开发项目150套(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享200的微信小程序毕业设计,后台用Java开发,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设…

【计算机毕业设计】家庭食谱管理系统产品功能介绍——后附源码

🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…

Java面试八股文(JVM篇)(❤❤)

Java面试八股文_JVM篇 1、知识点汇总2、知识点详解:3、说说类加载与卸载11、说说Java对象创建过程12、知道类的生命周期吗?14、如何判断对象可以被回收?17、调优命令有哪些?18、常见调优工具有哪些20、你知道哪些JVM性能调优参数&…

简单的网站-表白墙(前后端交互)

提交信息后,就得到了下面的一行话 但是存在一些问题 在一个网站中,服务器起到的最主要的效果,就是 “存储数据” 因此服务器这边往往也就需要能够提供两种风格的接口。存数据 、取数据 二、实现前后端交互 1)先规定此处请求和响…

【多模态+数据集】LLaVa1.5训练数据集解析(用于参考制作自己数据集)

LLaVa 家族 (Large Language and Vision Assistant ) 代码: https://github.com/haotian-liu/LLaVA LLaVA-1.5论文: 23.10.Improved Baselines with Visual Instruction Tuning LLaVA-1.5论文解析:https://blog.csdn.net/imwaters/article/d…