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.mfbz.cn/a/764699.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剪映 v5.5 Pro Vip解锁版:使用指南与注意事项

摘要:本文介绍了剪映Pro VIP解锁版的使用方法,包括安装、测试和使用VIP素材的步骤,以及如何避免误报和保持解锁状态的建议。 正文: 剪映Pro是一款广受欢迎的视频编辑软件,提供了丰富的视频编辑功能和大量高质量的素材…

自动化测试报告pytest-html样式美化

最近我将 pytest-html 样式优化了 一版 先看优化前: 优化后: 优化内容包括: 删除部分多余字段新增echart图表部分字体大小、行间距、颜色做了美化调整运行环境信息移至报告最后部分字段做了汉化处理(没全部翻译是因为&#xf…

python学习-函数

函数 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。 内置函数可重复使用 为什么要学习、使用函数呢? 为了得到一个针对特定需求、可供重复利用的代码段 提高程序的复用性,减少重复性代码,…

记一次阿里云服务器java应用无法响应且无法远程连接的问题排查

问题表现 java服务无响应,无法远程链接到服务器。 今天中午12点多,应用直接崩溃。后续进入到服务器,发现java进程都不在了, 排查过程 先安装atop工具 安装、配置并使用atop监控工具 等下次再出现时看相关时间点日志&#xff…

Docker在windows上使用vscode远程连接容器

目录 一、提前准备: 二、vscode连接docker容器 三、构建好的docker容器直接连接vscode 四、Windows下的可视化出linux的ui界面 在日常的开发中,不想windows和linux两个系统之间来回切换,笔者最近打算所有的环境均在一个系统上完成。为了交…

26K Star!LLM多智能体AutoGen教程3:我的外包弟弟写代码

读到这里想必已经入门AutoGen了,但怎么让它自动写代码自动调试啊,我也想要一个外包弟弟给我干活,我就喝杯茶摸摸鱼审核一下代码就好了呀。这不巧了,最近PM要求我给他弄一份某SDK支持车厂的列表,这种简单的事情在以前我…

msvcp140_ATOMIC_WAIT.dll丢失的多种解决方法分享,实测有效

在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“msvcp140_ATOMIC_WAIT.dll丢失”。那么,msvcp140_ATOMIC_WAIT.dll丢失是怎么回事呢?本文将从msvcp140_ATOMIC_WAIT.dll丢失的原因分析、对电脑的影响以及解决方…

武汉星起航:自运营团队驾驭亚马逊市场,领航跨境新纪元,成绩斐然

在跨境电商的浪潮中,武汉星起航电子商务有限公司的自运营团队以其卓越的运营能力、深厚的市场洞察力和灵活的应变策略,在亚马逊这片广阔的电商海域中,书写了一段又一段辉煌的篇章。 武汉星起航的自运营团队,是一支由经验丰富、技…

PyTorch入门笔记

学习参考: PyTorch简单入门视频 深入浅出PyTorch 小土堆笔记 前置知识 AI vs ML vs DL AI(Artificial Intelligence):通过让机器模仿人类进而超越人类ML(Machine Learning):让机器模仿人类的一…

RabbitMQ 之 延迟队列

目录 ​编辑一、延迟队列概念 二、延迟队列使用场景 三、整合 SpringBoot 1、创建项目 2、添加依赖 3、修改配置文件 4、添加 Swagger 配置类 四、队列 TTL 1、代码架构图 2、配置文件代码类 3、生产者 4、消费者 5、结果展示 五、延时队列优化 1、代码架构图 …

Android 11.0 SettingsProvider 源码分析

文章目录 一、SettingsProvider 的概述二、SettingsProvider 的启动流程三、对 SettingsProvider 进行操作方法四、客制化示例 一、SettingsProvider 的概述 SettingsProvider 是一个为 Android 系统设置提供数据共享的 Provider,它包含全局、安全和系统级别的用户…

AI大模型对话(上下文)缓存能力

互联网应用中,为了提高数据获取的即时性,产生了各种分布式缓存组件,比如Redis、Memcached等等。 大模型时代,除非是免费模型,否则每次对话都会花费金钱来进行对话,对话是不是也可以参照缓存的做法来提高命…

207.贪心算法:最大子数组和(力扣)

代码展示 class Solution { public:int maxSubArray(vector<int>& nums) {int result INT_MIN; // 初始化结果为最小可能的整数int sum 0; // 初始化当前子数组和为0// 遍历数组中的每一个元素for (int i 0; i < nums.size(); i){sum nums[i]; //…

PHP电商系统开发指南最佳实践

电子商务系统开发的最佳实践包括&#xff1a;数据库设计&#xff1a;选择适合关系型数据库&#xff0c;优化数据结构&#xff0c;考虑表分区&#xff1b;安全&#xff1a;加密数据&#xff0c;防止 sql 注入&#xff0c;处理会话管理&#xff1b;用户界面&#xff1a;遵循 ux 原…

【仪器仪表】 矢量网络分析仪 Vector Network Analyzer

主要功能&#xff1a; 测量S参数&#xff1a; S11&#xff08;输入反射系数&#xff09;&#xff1a;测量输入端口的反射。S21&#xff08;正向传输系数&#xff09;&#xff1a;测量从输入端口到输出端口的传输。S12&#xff08;反向传输系数&#xff09;&#xff1a;测量从输…

MobPush 第三方插件:Uni-app

插件集成 访问MobPush插件、MobCommon插件点击购买并添加到项目当中。在uniapp的“manifest.json”中选择“app原生插件配置”&#xff0c;点击勾选上方添加的两个插件完成上述两步后请务必先打自定义基座哦&#xff0c;否则SDK代码无法生效&#xff01; iOS平台相关配置 添…

软考《信息系统运行管理员》-2.2 信息系统运维的组织

2.2 信息系统运维的组织 信息系统运维的任务 数据资源管理 数据收集、数据校验、数据录入、数据处理 软件资源管理 采购、保存、相关文档保管、分发、安装、支持、评价、培训 硬件资源管理 检查、维护、故障处理、更新、修复、扩充 系统安全管理 可用性、完整性、保密性、可控…

【C语言】typedef 关键字

在C语言中&#xff0c;typedef关键字用于给现有的数据类型起一个新的名字。它在提高代码可读性、简化复杂类型声明、增强可维护性方面非常有用。typedef通常用于定义结构体、指针、函数指针以及其他复杂类型。 基本用法 typedef int MyInt; MyInt x 10;在这个例子中&#xf…

ROS2 RQT

1. RQT是什么 RQT是一个GUI框架&#xff0c;通过插件的方式实现了各种各样的界面工具。 强行解读下&#xff1a;RQT就像插座&#xff0c;任何电器只要符合插座的型号就可以插上去工作。 2.选择插件 这里我们可以选择现有的几个RQT插件来试一试&#xff0c;可以看到和话题、参…

从深度学习到音乐创作:AI如何重新定义音乐行业

&#x1f4d1;引言 近一个月来&#xff0c;随着几款音乐大模型的轮番上线&#xff0c;AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点&#xff0c;还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视&#xff0…