Java面试题(5)

22.Iterator如何使用,有什么特点

java中的Iterator功能比较见到你,并且只能单向移动

1. iterator():要求容器返回一个Iterator

2. next():用于获取序列的下一个元素(第一次调用获取第一个元素)

3. hasNext():检查序列中是否还有元素

4. remove():将迭代器新返回的元素删除

(1)Iterator与ListIterator的区别 java为List设计了ListIterator,它具有更多的动能,可以从两个方向遍历List,也可以从List中插入和删 除元素。

1. Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List

2. Iterator对集合只能是前序遍历,ListIterator既可以前序遍历也可以后序遍历。

3. ListIterator实现Iterator接口,并包含其他的功能,比如:增加元素、替换元素、获取前一个和后 一个元素的索引等。 

23.并行和并发有什么区别

1. 并行是指两个或多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 2. 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

3. 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。 所以并发编程的目标是充分利用处理器的每一个核,以达到最高的处理性能 

24.线程和进程的区别

线程是操作系统调度的最小单元,它可以让一个进程并发地处理多个任务,也叫轻量级进程。 总的来说,操作系统可以同时执行多个任务,每个任务就是一个进程。

1. 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。 2. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更 高。

3. 线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。

4. 多线程的优点:减少程序响应时间;提高CPU利用率;创建和切换开销小;数据共享效率高;简化 程序结构

5. 同一进程中的多个线程可以并发执行。

(1)什么是守护线程 守护线程是个服务线程,准确来说就是服务其他的线程。

(2)创建线程有哪几种方式

1.继承Thread类创建线程类

1. 定义Thread类的子类,并重写run方法,该run方法的方法体就代表了线程要完成的任务。因此把 run()方法称为执行体。

2. 创建Thread子类的实例,即创建了线程对象。

3. 调用start()方法启动线程。

2.通过Runnable接口创建线程类

1. 定义runnable接口的实现类,并重写该接口的run方法,该run方法的方法体同样是该线程的线程 执行体。

2. 创建runnable实现类的实例,并以此实例作为Thread对象的的target参数来创建Thread对象,该 Thread对象才是真正的线程对象。

3. 调用start()方法启动线程。

3.通过Callable和Future创建线程

1. 创建 Callable 接口的实现类,并实现 call()方法,该 call()方法将作为线程执行体,并且有返回 值。

2. 创建 Callable 实现类的实例,使用 FutureTask 类来包装 Callable 对象,该 FutureTask 对象封装 了该 Callable 对象的 call()方法的返回值。

3. 使用 FutureTask 对象作为 Thread 对象的target 创建并启动新线程。

4. 调用 FutureTask 对象的 get()方法来获得子线程执行结束后的返回值。

(3)说一下runnable和callable的区别 前者没有返回值,后者由返回值,并且可以通过get方法获取结束后的返回值。

25.线程有哪些状态

创建、就绪、运行、阻塞、死亡

1. 创建状态:生成线程对象,但还未调用start方法。

2. 就绪状态:调用了start方法后就进入了就绪状态,但是还未被调度成为当前线程,此时处于就绪 状态。在线程运行之后,从等待或睡眠中回来后,也会处于就绪状态。

3. 运行状态:线程调度程序将处于就绪状态的线程设置为当前线程,进入运行状态,开始运行run方 法中的代码。

4. 阻塞状态:线程正在运行的时候被暂停,通常是为了等待某个事件的发生之后再继续运行。 sleep、wait、suspend都可以导致线程阻塞。

5. 死亡状态:如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死 亡的线程,无法再使用start方法令其进入就绪状态。

26.sleep和wait有什么区别

sleep方法:是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程, 等休眠时间结束后进入就绪状态等待调度,不需要被唤醒。他不依赖于同步锁。

wait方法:是Object类的方法,当一个线程执行到wait方法时,他会依赖synchronized关键字,使得 其他线程额能够访问,可以通过notify、notifyAll方法来唤醒等待的线程。

(1)notify和notifyAll有什么区别 前者只随机唤醒一个等待池中的wait线程,后者可以唤醒等待池中的所有wait线程。 当有线程调用了对象的notifuAll或者notify方法,被唤醒的线程就会进入该对象的锁池中,等待竞争对 象锁。

(2)什么是等待池 当一个线程调用了某个对象的wait方法,该线程就会释放该对象的锁并进入到该对象的等待池中。

(3)什么是锁池 当一个线程已经拥有了某个对象的锁,那么其他的线程需要调用这个对象的某个synchronized方法,就 必须获取该对象的锁的拥有权,但是因为该对象锁已被拥有,那么这些线程就会进入该对象的锁池中。

27.线程的 run()和 start()有什么区别?

1. run方法称为线程体,start方法是用来启动线程的Thread类的方法。

2. start方法用来启动一个线程,真正实现了多线程运行;run方法是本线程中的,只是线程里的一个 函数,而不是多线程的。

3. 调用start方法后,线程进入就绪状态,而run方法是再运行状态是进行执行的线程体。 4. start方法执行后进入就绪状态,run方法体执行完后进入死亡状态。

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

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

相关文章

Qt6入门教程 11:父子对象关系

在上一篇中的纯手写部分,不管是创建菜单、工具栏还是状态栏,我们new完之后都未显式的调用delete进行销毁,这样难道不会有内存泄漏么? QMenuBar *menuBar new QMenuBar(this); QToolBar *toolBar new QToolBar(this); QStatusBa…

web前端之不一样的居中方式、解决tabBar选项卡居中问题、css支持嵌套、auto

MENU 前言htmlstyle效果 前言 这里不能使用justify-content: center;&#xff0c;因为在小屏幕上&#xff0c;这种方式无法显示最前面的两个tabBar。 html <div id"box" class"d_f o_a mt_50 mb_50 ml_20 mr_20"><div class"ws_n">…

【MySQL】如何通过DDL去创建和修改员工信息表

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-fmKISDBsFq74ab2Z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【vue】Vue2和Vue3中的代码逻辑复用对比(mixins、自定义hook):

文章目录 一、前言&#xff1a;二、mixins&#xff1a;【1】mixins是什么&#xff1f;【2】mixins如何使用&#xff1f;【3】mixins的一些特性&#xff1a;【4】mixins的缺点&#xff1a; 三、hook&#xff1a;【1】Vue3.x中的自定义hook函数是什么&#xff1f;【2】mixins和Co…

4.【SpringBoot3】文章管理接口开发

序言 在文章管理模块&#xff0c;有以下接口需要开发&#xff1a; 新增文章文章列表&#xff08;条件分页&#xff09;获取文章详情更新文章删除文章 数据库表字段和实体类属性&#xff1a; 1. 新增文章 需求分析 当用户点击左侧菜单中的“文章管理”后&#xff0c;页面主…

[EFI]HP EliteDesk 800 G6 Mini PC电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 HP EliteDesk 800 G6 Mini PC 处理器 Intel Core i5 10500 已驱动内存16GB 2667MHz DDR4已驱动硬盘SSD NVMe KINGSTON SNVS500G 500GB已驱动显卡Intel UHD Graphics 630已驱动声卡Realtek ALC222已驱动网卡Intel(R) Ethernet Connection (10) I219-LM已驱…

vue 点击按钮跳转另一个项目的链接地址,从另一个项目返回回来页面怎么让他刷新

如果你在 Vue 3 中点击按钮跳转到另一个项目的链接地址&#xff0c;然后从另一个项目返回时想要刷新页面&#xff0c;这就涉及到不同域的页面之间的通信问题。因为跨域的限制&#xff0c;返回的页面无法直接刷新原始页面。 一种解决方法是在跳转到另一个项目的链接地址时&…

腾讯云短信服务密钥信息

public IActionResult TestMessage() { // 腾讯云短信服务密钥信息 string secretId "-------------------------- "; string secretKey “---------------------------”; /* 必要步骤&#xff1a;* 实例化一个认证对象&#xff0c;入参需要传入腾讯云账户密钥对s…

SpringBoot_基础

学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发 一、SpringBoot简介 1. 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗&#xff1f; SpringBoot是由Pivotal团队提供的全新框架&…

java数据结构与算法刷题-----LeetCode697. 数组的度

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 方法一&#xff1a;hash表 此方法是工作中时间可以使用的&#xff0c;因为…

2024-01-25 力扣高频SQL50题目1174. 即时食物配送

题目如下&#xff1a; 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | order_date…

阅读go语言工具源码系列之gopacket(谷歌出品)----第一集 DLL的go封装

gopacket项目是google出品的golang第三方库&#xff0c;项目源码地址google/gopacket: Provides packet processing capabilities for Go (github.com) gopacket核心是对经典的抓包工具libpcap(linux平台)和npcap(windows平台)的go封装&#xff0c;提供了更方便的go语言操作接…

嵌入式linux学习之系统烧录

1.所需文件 1. 开发板为正点原子stm32mp157,文件可按照linux驱动教程编译&#xff0c;也可在正点原子文档->08、系统镜像\02、出厂系统镜像中找到&#xff1a; 2.烧录 1.拨码开关为000(usb启动)&#xff0c;otg接口接入虚拟机&#xff0c;打开stm32cubeProgrammer: 2.页面…

AP5101C 高压线性 LED恒流驱动器 DFN2*2 LED灯汽车雾灯转向灯

产品描述 AP5101C 是一款高压线性 LED 恒流芯片 &#xff0c; 简单 、 内置功率管 &#xff0c; 适用于6- 100V 输入的高精度降压 LED 恒流驱动芯片。电流2.0A。AP5101C 可实现内置MOS 做 2.0A,外置 MOS 可做 3.0A 的。AP5101C 内置温度保护功能 &#xff0c;温度保护点为 130 …

c# 策略模式

在 C# 中&#xff0c;策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装到具有公共接口的独立类中&#xff0c;使得它们可以互相替换。这样可以使得算法的选择独立于算法的使用者&#xff0c;从而提高了灵活性和可维护性。 以下是策略…

【字节二面算法题】84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 解题思路 从左向右依次遍历数组中的元素如果栈为空或者当前考察的新元素值比栈顶元素大&#xff0c;表明以栈顶元素值为高的矩形面积暂时不能确定&#xff0c;将当前考察的元素入栈&#xff0c;在这个条件下&#xff0c;栈中的元素从栈底到栈顶元素依…

门面模式 Facade Pattern

门面模式 门面模式&#xff08;Facade Pattern&#xff09;&#xff0c;也称之为外观模式&#xff0c;其核心为&#xff1a;外部与一个子系统的通信必须通过一个统一的外观对象进行&#xff0c;使得子系统更易于使用。 在软件开发领域有这样一句话&#xff1a;计算机科学领域…

CQ 社区版 2.8.0 | 支持TiDB、StarRocks,新增列过滤算法、导出模式设置等

Hello&#xff0c;CloudQuery 社区版 2.8.0 已发布&#xff0c;本文将带大家详细解析本次更新的功能~&#xff08;完整的讲解视频可点击 &#x1f449;&#x1f3fb; CloudQuery 社区版2.8.0 功能讲解演示 本期亮点更新 新增支持数据源 TiDB、StarRocks数据保护新增列过滤脱敏…

cmd命令行输出的内容复制粘贴到文本中

cmd程序执行完后按任意键进行结束&#xff0c;无法直接复制命令行里输出的内容&#xff0c;如下图&#xff0c;在Windows系统里按ctrlC&#xff0c;然后该窗口就关闭了&#xff0c;内容也没有复制成功到粘贴板。 解决办法如下&#xff1a; 在上方打开设置 然后在“交互”里打…

JDBC 总结

一、JDBC概述 JDBC&#xff08;Java DataBase Connectivity&#xff09;java数据库连接是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系型数据库提供统一访问&#xff0c; 它由一组用Java语言编写的类和接口组成。有了JDBC,java开发人员只需要编写一次程序,就可以…