Java基础面试题(简单版):

1.java的8个基本数据类型?

        整型: byte(占用1个字节) short(占用2个字节) int(占用4个字节) long(占用8个字节)

        浮点型: float(占用4个字节)、double(占用8个字节) 字符型: char

        布尔型: boolean

2.ArrayList和LinkedList的区别?

        可以说ArrayList和LinkedList除了是同属于集合类,其他都是不同的,因为他们本身的实现是两种不同的实现方式,ArrayList 维护的是一个动态数组,LinkedList维护的是一个双向链表,而他们之间的不同是数组与链表的特性比较
往集合中间插入数据时ArrayList比linkedList慢,ArrayList正好扩容的时候添加数据要比LinkedList慢,查询数据ArrayList更快

3.HashMap是否是线程安全的? HashMap的底层原理?

    HashMap是线程不安全的,HashTable、ConcurrentHashMap是线程安全的 HashMap是基于哈希表的Map接口的非同步实现。 HashMap底层就是一个数组结构,数组中的每一项又是一个链表。数组+链表结构,新建一个HashMap的时候,就会初始化一个数组。Entry就是数组中的元素,每个Entry其实就是一个key-value的键值对,它持有一个指向下一个元素的引用,这就构成了链表,HashMap底层将key-value当成一个整体来处理,这个整体就是一个Entry对象。当需要存储一个Entry对象时,会根据hash算法来决定在其数组中的位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个Entry对象时,也会根据hash算法找到其在数组中的存储位置, 在根据equals方法从该位置上的链表中取出Entry。JDK1.8做出了改变,使用 数组 + 链表 + 红黑树 的结构。当节点数不大于8时,还是一个链表结构,只不过插入节点时变成了 尾插法 ,当节点数大于8后,将从链表结构转化成红黑树结构

4.成员变量和局部变量的区别?
   1)所在位置: 局部变量:在每个方法内部使用,出了方法不可用 成员变量:属于每个类,在方法的外部,描述类的属性
   2)作用范围: 局部变量:作用在方法内部 成员变量:作用于每个类
   3)默认值: 局部变量:声明之后系统不会赋予默认值,必须自己手动赋值,否则会报错 成员变量:系统会根据该变量的类型赋予其相应的特征值,不手动赋值,也不会报错
   4)所在内存位置不一样: 成员变量是在对象创建以后存在于堆中,对象回收时,成员变量消失 局部变量是在方法被调用时存在于栈中,方法调执行结束,从栈中清除
   5)生命周期不同: 成员变量:随对象的创建而创建,对象回收时,成员变量消失 局部变量:随着方法的调用被创建,方法执行结束后,从栈中清除

5.说说重载与重写的区别?

   【1】定义的位置不同:重载方法必须在同一个类中定义,而重写方法必须在子类中定义。

   【2】方法名和参数列表不同:重载方法的方法名相同但参数列表不同,而重写方法的方法名和参数列表必须与父类相同。

   【3】返回类型不同:重载方法的返回类型可以不同,而重写方法的返回类型必须相同或是其子类。

    【4】目的不同:重载的目的是为了提高代码的可读性和简洁性,而重写的目的是为了在子类中灵活地修改父类的行为。

6.java中String字符串类中的常用方法?

   charAt     根据下标获取对应位置字符、
   contains   判断一个字符串中是否包含某个字符串,返回值为boolean类型、
   equals     判断两个字符串内容是否相等、
   indexOf    根据字符串获取在字符串中的下标,如果不存在返回-1、
   length     获取字符串的长度
   replace    替换字符串、
   split      根据分隔符拆分字符串,返回值为数组、
   substring  根据下标截取字符串

7.面向对象的三大特征:封装,继承,多态
        1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

                 1)将属性进行私有化(private)【不能直接修改属性】

                 2)提供公共的(public)set/get方法,对数据进行判断并赋值 a. 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰 b. 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

                3)提供相应的构造器/构造方法,与set/get方法结合

        2.继承:通过extends xxx实现,就是子类继承父类的属性行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
        3.多态:父类引用指向子类对象。
8.static关键字的使用

静态属性
        被static修饰的属性叫静态属性(类变量),static修饰的变量,不属于某一个类,是共享的。不需要new对象就能调用。

静态方法
        ①、静态方法中,只能调用静态的方法或属性。(在静态方法中,不能使用this关键字,super关键字)
        ②、静态方法随着类的加载而加载。可以通过“类.静态方法”的方式调用

静态代码块
        代码块的作用:用来初始化类、对象

静态内部类
        Java允许将类A声明在类B中,类A就是内部类,类B为外部类
        内部类作为外部类的成员,可以调用外部类的结构,可以用static修饰(外部类不能用static修饰)

9.Java中构造方法是什么,用途是什么?

在Java中,构造方法是一种特殊类型的方法,用于创建对象时初始化对象的实例变量。构造方法的作用如下:
        1. 创建对象:构造方法用于创建对象的实例。当使用new关键字创建一个对象时,会调用该对象对应的构造方法,并在构造方法中进行必要的初始化操作。
        2. 初始化实例变量:构造方法用于初始化对象的实例变量。通过在构造方法中为对象的实例变量赋初值,确保对象在创建时具备合法的初始状态。
        3. 处理对象的初始化逻辑:构造方法可以包含任意逻辑和代码,用于处理对象的初始化逻辑。例如,可以在构造方法中进行计算、调用其他方法等操作,以确保对象在创建后能够满足特定需求。
        4. 提供重载的构造方法:可以定义多个构造方法,通过不同的参数列表来实现方法的重载。这样可以在创建对象时根据不同的参数选择不同的构造方法,以满足不同的需求。

问题:什么是构造方法?
和类名相同,不写返回值的方法,在创建对象时会调用构造方法,用于给属性赋值/初始化一些配置信息等

问题:静态代码块和构造方法哪个先执行
静态代码块

问题:构造方法可以被继承吗
不能

10.java中的this关键字

        this用于引用当前对象的实例,调用本类中的成员变量,其他方法,和本类中的其他构造方法。

11.Java的多线程中的synchronized

synchronized中文意思是同步,也称之为“同步锁”。
synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。
Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。
方式1:同步方法
public synchronized void method()
{
   // todo
}
方式2: 同步代码块
public void method()
{
   synchronized(this) {
      // todo
   }
}

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

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

相关文章

【QT】输入类控件

目录 Line Edit 核心属性 核心信号 正则表达式 示例:使用正则表达式验证输入框内容 示例:切换输入框密码模式下的显示状态 Text Edit 核心属性 核心信号 示例:获取多行输入框的内容同步显示到label 示例:获取文本的选…

三生随记——眉笔诡事

在一个被遗忘的古镇上,流传着一个关于眉笔的诡异传说。这个古镇坐落在群山的环抱中,鲜少有人知晓它的存在。而在这片土地上,却有着一件被视为诅咒之源的眉笔。 眉笔的来历无人知晓,只知它在一夜之间出现在镇上的古董店中。那支眉笔…

一文讲懂npm link

前言 在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试 用法 包链接是一个两步过程: 1.为依赖项创建全局软链npm link。一个符号链接,简称软链&a…

0702_ARM5

练习:使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…

c# 操作mysql的帮助类

MySqlHelper 的静态类,其中包含了一些用于执行 MySQL 数据库操作的方法。这些方法包括执行存储过程、插入、更新、删除操作以及执行数据库事务查询操作等。 该类中的方法主要有: ExecuteNonQuery 方法:用于执行存储过程、插入、更新、删除操…

如何降低布隆过滤器的误判率

降低布隆过滤器的误判率(也称为假阳性率)是布隆过滤器应用中一个关键的问题。误判率主要来源于哈希碰撞,即不同的元素可能被哈希到相同的位置。为了降低误判率,可以从以下几个方面进行优化: 1. 增加哈希函数的个数 原…

Asp.net Core 反射加载dll

定义一个类库,定义接口 namespace Plugin {public interface IPlugin{void EllisTest();} }定义另外一个类库,引用上面的类库,实现接口 using Plugin;namespace UserCustom {public class Custom : IPlugin{public void EllisTest(){Conso…

二刷力扣——DP算法(子序列问题)

300. 最长递增子序列 定义是以本元素结尾&#xff0c;所以公式初始化都好弄。但是太慢 class Solution {public int lengthOfLIS(int[] nums) {int nnums.length;int[] dp new int[n];//以自己结尾的最长递增子序列dp[0]1;int maxzi1;for(int i1;i<n;i){dp[i]1;for(int j…

QT中QDomDocument读写XML文件

一、XML文件 <?xml version"1.0" encoding"UTF-8"?> <Begin><Type name"zhangsan"><sex>boy</sex><school>Chengdu</school><age>18</age><special>handsome</special>&l…

【YOLOv5进阶】——引入注意力机制-以SE为例

声明&#xff1a;笔记是做项目时根据B站博主视频学习时自己编写&#xff0c;请勿随意转载&#xff01; 一、站在巨人的肩膀上 SE模块即Squeeze-and-Excitation 模块&#xff0c;这是一种常用于卷积神经网络中的注意力机制&#xff01;&#xff01; 借鉴代码的代码链接如下&a…

在C#中使用RabbitMQ做个简单的发送邮件小项目 _

前言 好久没有做项目了&#xff0c;这次做一个发送邮件的小项目。发邮件是一个比较耗时的操作&#xff0c;之前在我的个人博客里面回复评论和友链申请是会通过发送邮件来通知对方的&#xff0c;不过当时只是简单的进行了异步操作。那么这次来使用RabbitMQ去统一发送邮件&#x…

vue中路由来回切换页面直接卡死

今天发现一个很严重的问题&#xff0c;项目好不容易做好了&#xff0c;结果页面多了&#xff0c;切换之后卡死。页面所有的交互效果都失效了。 排查了许久的错误原因最后发现原来是路由名称重复了。 如上图当页面跳转到riskdetails详细页面之后&#xff0c;框架则被这个详情页…

随机森林R语言预测工具

随机森林&#xff08;Random Forest&#xff09;是一种基于决策树的集成学习方法&#xff0c;它通过构建多个决策树并集成它们的预测结果来提高预测的准确性。在R语言中&#xff0c;我们可以使用randomForest包来构建和训练随机森林模型。以下是对随机森林的详细介绍以及使用R语…

java高仿真数据生成器-需要的拿去

java高仿真数据生成器源码-需要的拿去 nit-random-tools 介绍&#xff1a;高仿真数据生成器 逆天开源 java 证号码, 姓名&#xff0c;职业, 日期&#xff0c;手机号 生成器 功能列表 编号功能描述class1号 生成器NitIdcardGenerator2姓名 生成器NitChineseNameGenerator3职…

node.lib下载失败,手动下载并配置

在无网络环境&#xff0c;或者网络不好的环境&#xff0c;node.lib会下载失败&#xff0c;此时可手动下载并进行配置。 我们以 node16.17.0 为例&#xff1a; 下载地址 分别下载node.lib和headers https://registry.npmmirror.com/-/binary/node/v16.17.0/win-x64/node.lib…

目标检测算法的技术革新与应用案例

引言 目标检测作为计算机视觉领域中的一项关键技术&#xff0c;近年来取得了显著进展。从传统的基于特征的方法到如今的深度学习算法&#xff0c;目标检测技术在准确性、速度和鲁棒性上均实现了大幅提升。本文将深入探讨目标检测算法的技术原理、发展历程、最新进展以及实际应…

HarmonyOS--开发者证书考试地址

初级证书&#xff1a;华为开发者学堂 高级证书&#xff1a;华为开发者学堂 对应课程&#xff1a;华为开发者学堂

Linux rpm与yum

一、rpm包管理 rpm用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具&#xff09;的缩写&#xff0c;类似windows的setup.exe&#xff0c;这一文件格式名称虽然打上了R…

办理北京公司注销流程和步骤说明

公司的生命周期是多变的&#xff0c;有时候&#xff0c;业务可能会结束或者出现其他原因&#xff0c;需要注销公司。注销公司是一个复杂的法律过程&#xff0c;需要遵循一系列的步骤和提交特定的材料。下面我们将详细介绍北京注销公司的流程以及需要准备的材料&#xff0c;以帮…

《等保测评实战指南:从评估到加固的全程解析》

在当今数字化时代&#xff0c;信息安全已成为企业生存与发展的基石。随着网络攻击手段的不断演变和复杂度的提升&#xff0c;信息系统等级保护&#xff08;简称“等保”&#xff09;作为国家信息安全保障体系的重要组成部分&#xff0c;其重要性日益凸显。《等保测评实战指南&a…