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

Android面试题汇总(二)

一、Java集合

1、谈谈 Java 中 List、Set 以及 Map 的区别?

List:有序的,数据可以重复。。

Set:无序的,数据不能重复。

Map:键值对存储。键是唯一的,值不是唯一的。

2、谈谈 ArrayList 和 LinkedList 的区别?

ArrayList:底层是基于数组的,数组占用的是一个连续的内存空间。在新增和删除的时候效率低,因为新增的时候需要有扩容判断在新增元素,在删除的时候因为是连续的内存空间除了删除最后一个元素外,删除其他元素都会是数组元素发生移动。查询和修改效率高,可以直接根据index去直接进行定位。

LinkList:底层是基于链表的,占用的是分散的内存空间。在新增和删除的时候效率高。新增的时候不需要考虑扩容问题,删除的时候只需要被删除的后一个节点的指向发生改变。查询和修改的效率低,因为没有index下标

3、请说一下 HashMap 与 HashTable 的区别?

1、父类不同,HashMap是继承于AbstractMap,HashTable是Dictionary的子类

2、HashMap的key和value可以是null,但是HashTab不可以

3、HashMap是线程不安全的,HashTab是线程安全的可以在多线程下操作,但是JAVA后ConcurrentHashMap可以代替,比TashTab的扩展性更好

4、HashMap速度快,因为是线程不安全的,HashTab速度慢

5、HashMap不能保证元素的次序不变,因为每次扩容的时候会重新排序

6、HashMap初始大小16,HashTab初始大小11

4、说一说 ArrayList 的扩容机制?

ArrayLsit的初始容量是10,每次超过的时候都*1.5

5、HashMap 的实现原理?

HashMap底层是数组和链表的形式,只要是为了解决数据和链表的痛点,更好的进行增删改查。

首先是根据K来计算HashCode然后在确定数组的下标,实际上就是Node<K,V>[] 链表数据,在添加数据的时候判断如果下标位置没有数据直接添加上,如果有数据判断key的hash值和equalus相同则覆盖,否则添加到链表的尾部

6、请简述LinkedHashMap的原理

底层是数据+双链表的形式,使用上和HashMap一样,他是HashMap的子类。只是它是有序的,而HashMap是无需的。因为底层是双链表所以内存占用会大一些

7、ConcurrentHashMap理解

ConcurrentHashMap比起Hashmap,是线程安全的,比起HashTable是高效的使用分段锁。

二、JAVA多线程

1、Java 中使用多线程的方式有哪些?

1、Thread重新run方法创建线程

2、实现Runnable接口,传给Thread使用

3、ExecutorService 线程池来使用线程

4、FutureTask+Executors 实现带有返回值的线程

2、说一下线程的几种状态?

创建状态:线程被创建的时候就是创建窗体

就绪状态:线程执行的了strat方法,调度的线程还没有把此线程设置为当前线程时 还没有执行run中的代码。线程重新启动的时候也会进度就绪状态

执行状态:开始指定run方法中的代码了  就是执行状态

阻塞状态:当调用sleep或者wait方法阻塞线程后,线程会进入阻塞状态

死亡状态:当调用stop方法后,线程会停止运行,进入死亡状态

3、如何实现多线程中的同步?

volatile关键词 -- 某种简单的逻辑下, 是可以的,只能修饰变量。保证变量的可见性

synchronized -- 重量级,会遭成线程阻塞

4、Thread 中 run() 与 start() 方法的区别?

run就是一个普通方法,调用一下执行一次,可以无限调用

start方法只能调用一次,是启动线程的方法,然后会自动执行run方法,执行完毕后线程销毁。

5、说一下 synchronized 和 volatile 关键字的区别?

1、synchronized重量级的可以修饰类、方法、变量。volatile轻量级只能修饰变量,volatile本质就是告诉jvm 寄存器中的值是不准确的,需要在主内存中读取

2、synchronized是具有原子性和可见性的,volatile只具备可见性

3、synchronized会造成线程阻塞,volatile不会

4、synchronized标记的变量会被编译器优化,volatile不会

6、如何保证线程安全?

根据具体的场景进行加锁(volatile或者synchronized),保证原子性,可见性和有序性

7、谈谈 Java 线程中 notify 和 notifyAll 方法有什么区别?

notify:只会唤醒等待该锁的其中一个线程。notifyAll:会唤醒等待该锁的所有线程。

8、什么是线程池?

线程池:就是线程的管理工具。

线程是为了执行任务的每个任务都需要重建一个线程,执行完就销毁掉。

线程池会管理所有线程,当某个线程空闲的时候会自动分配任务,如果等待的时间久也能自动回收,线程不够的时候也可以自动创建

9、谈一谈线程 sleep() 和 wait() 方法的区别?

1、sleep是Thread的方法,wait是Object的方法

2、sleep不释放锁,wait会释放锁

3、sleep不需要Synchronized,wait需要Synchronized

4、sleep不需要唤醒,wait需要唤醒

10、什么是悲观锁和乐观锁?

乐观锁:执行任务的时候默认同一时间不会出现其他线程一起处理任务的情况,会处理完任务后看一下数据有没有被修改过

悲观锁:执行任务的时候默认同一时间一定有其他线程一起处理任务,在处理任务的时候会直接上锁

11、谈一谈 Java 线程安全的集合有哪些?各有什么特点?

hashTab:加锁的hashMap,方法上直接加synchronized

concurrentHashMap:会在具体的位置加锁使用分段锁,保证效率,是HashTab的升级

相关文章:

Android面试题汇总(二)

一、Java集合 1、谈谈 Java 中 List、Set 以及 Map 的区别&#xff1f; List&#xff1a;有序的&#xff0c;数据可以重复。。 Set&#xff1a;无序的&#xff0c;数据不能重复。 Map&#xff1a;键值对存储。键是唯一的&#xff0c;值不是唯一的。 2、谈谈 ArrayList 和 Link…...

最新模块化设计小程序系统源码完整版:开源可二开,支持DIY

随着互联网的快速发展&#xff0c;小程序已成为各行各业开展业务的重要工具。而模块化设计小程序系统源码完整版则是一种高效、灵活、易维护的解决方案。 分享一个最新的模块化设计小程序系统源码完整版&#xff0c;源码开源可二开&#xff0c;支持自由DIY设计&#xff0c;含完…...

edge扩展下载出现Download interrupted

一、Edge扩展下载失败无法下载网络问题完美解决方案 1.首先我们找到我的电脑双击我的电脑&#xff0c;找到C盘并打开C盘&#xff0c;并找到windows选项 双击打开windows并找到system32 2.双击打开system32并找到drivers 4.双击打开drivers找到etc选项 5.双击打开etc选项找到hos…...

Dokcer搭建Apache Guacamole堡垒机

一、什么是堡垒机 “堡垒机” 这个词通常指的是 “堡垒机器”&#xff08;Bastion Host&#xff09;的简称。堡垒机是一种计算机系统或网络设备&#xff0c;用于增强计算机网络的安全性。它在网络中充当一个重要的安全关口&#xff0c;通过限制对内部网络的访问&#xff0c;帮…...

【Spring Boot自动装配】

Spring Boot启动的时候会通过EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类&#xff0c;并对其进行加载&#xff0c;而这些自动配置类都是以AutoConfiguration结尾来命名的&#xff0c;它实际上就是一个JavaConfig形式的Spring容器配置…...

windows彻底卸载unity

1.控制面板卸载 双击打开桌面的控制面板&#xff0c;选择卸载程序&#xff0c;选中Unity和UnityHub右击卸载。 2.清除unity的注册表 在运行中输入“regedit”双击打开注册表界面 删除 HKEY_CURRENT_USER\Software\Unity 下所有项 删除 HKEY_CURRENT_USER\Software\Unity Tec…...

Java项目-苍穹外卖-Day10-SpirngTask及WebSocket

文章目录 前言SpringTask介绍SpringTask_corn表达式Spring_Task入门案例 订单状态定时处理需求分析代码开发功能测试 WebScoket介绍入门案例 来单提醒需求分析代码开发功能测试 客户催单代码开发功能测试 前言 本章实现的业务功能 超时未支付订单自动取消&#xff0c;配送中订…...

Spring IOC 容器:掌握 Spring 的核心技术

Spring 是一个非常流行和强大的 Java 开发框架&#xff0c;它可以帮助我们简化和优化 Java 项目的开发过程。Spring 的核心技术之一就是 IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;&#xff0c;它可以实现对象之间的解耦&#xff0c;让对象的创建和…...

python实现批量从excel列表显示图片网址中下载图片

遇到一个需求&#xff1a;给了一个excel表&#xff0c;里面有很多网址图片&#xff0c;要把图片下载到本地。手动操作的话就是在浏览器里输入网址&#xff0c;再图片另存为保存。这篇文章介绍一下使用python代码批量实现 第一步操作就是实现从网上下图片&#xff0c;这个用到了…...

java 单元测试Junit

所谓单元测试&#xff0c;就是针对最小的功能单元&#xff0c;编写测试代码对其进行正确性测试。为了测试更加方便&#xff0c;有一些第三方的公司或者组织提供了很好用的测试框架&#xff0c;给开发者使用。这里介绍一种Junit测试框架。Junit是第三方公司开源出来的&#xff0…...

Java中Timer和TimerTask的使用

这两个类使用起来非常方便&#xff0c;可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类&#xff0c;它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data)&#xff0c;2:在某个固定的时间之后…...

计算机竞赛 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…...

DFS寻找从s到t的所有路径

问题描述&#xff1a; 输入一个有向图&#xff0c;输出从s到t的所有路径的结点 输入&#xff1a; 3 3 0 1 1 2 0 2输出&#xff1a; 0 1 2 0 2 代码&#xff1a; #include<bits/stdc.h> using namespace std;const int N 103; vector<int>e[N];//用行为N的…...

分享!JetBrains IDE中的GitLab支持

GitLab是流行的基于git的软件开发和部署平台之一&#xff0c;虽然很长一段时间以来&#xff0c;所有基本git操作都已经可以通过GitLab实现&#xff0c;但GitLab集成仍是JetBrains社区的一大最热门请求。为此&#xff0c;JetBrains团队今年与GitLab联手提供了这种类型的集成。 …...

jq弹窗拖动改变宽高

预览效果 <div classtishiMask><div class"tishiEm"><div id"coor"></div><div class"topNew ismove"><span class"ismove">提示</span><p onclick"closeTishi()"></p&…...

时间不确定度在分布式系统中的说明

On the one hand 时间不确定度问题和影响在分布式系统中 说明 时钟不确定度&#xff08;Clock Uncertainty&#xff09;是指在分布式系统中&#xff0c;由于网络延迟、时钟漂移等因素导致系统中各个节点时钟的不同步现象。这种不同步可能会影响到分布式系统的一致性和正确性…...

VMware vCenter 从6.7跨版本升级至7.0U3N

本文尝试使用 vCenter Server Appliance 管理界面 (VAMI) 进行对vCenter Server Appliance7应用进行小版本升级&#xff0c;从6.7.0.47000升级到7.0.3.01600&#xff08;7.0U3N&#xff09;。 一、升级前的准备工作 1、检查当前运行环境&#xff08;当前为6.7.0.47000&#x…...

大麦订单生成器最新版 大麦订单一键生成截图

1.可以一键添加&#xff0c;生成的假订单没有水印&#xff0c;界面也很真实。 2.在软件中输入生成的信息&#xff0c;这是产品信息&#xff0c;选择生成的产品图像&#xff0c;最后生成它。 后台一键生成&#xff0c;独立后台管理 教程&#xff1a;解压源码&#xff0c;修改数…...

如何对Map集合的key进行大小写转换?

工具类&#xff1a; ToUpperCaseKeyMapUtil.java public class ToUpperCaseKeyMapUtil {//对单一的mappublic static <T> Map<String, T> toUpperCaseKeyMap(Map<String, T> map) {if (map ! null) {List<String> mapKeyList new ArrayList<>…...

将函数实现放到CPP报“无法解析的外部符号...”,系VS Bug

发现一个现象&#xff0c;就是项目中有一个类&#xff0c;如果将函数实现全部放到头文件中&#xff0c;编译不报错&#xff0c;如果将函数实现放到CPP中则始终提示“无法解析的外部符号...”&#xff0c;考虑到放到头文件中能正常编译运行&#xff0c;显然这里不符合“无法解析…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...