Java常见的面试二

 1、普通类和抽象类有那些区别

  1. 普通类中不能有抽象方法,抽象类中可以有抽象方法
  2. 普通类可以直接实例化,抽象类不能直接实例化

2、抽象类能够使用final修饰吗

        不能,抽象类是由子类继承的,但是final修饰的类不能被继承。两者矛盾所以抽象类不能使用final修饰

3、接口和抽象类有什么区别

         接口是子类通过implement实现的,抽象类需要子类使用extends来继承。

          接口之间可以实现多继承,子类可以进行多实现,但类之间只能单继承。      

           接口中的方法默认修饰符是public ,抽象类中方法的修饰符可以是任意类型的修饰符

4、Java中IO流分为几种

按功能分:输入流(input)和输出流(output)

按类型来分:字节流和字符流

字节流是按8位传输以字节为单位进行输入输出数据,字符流是按16位传输以字节为单位进行输入输出数据

5、BIO、NIO、AIO有什么区别

        BIO:Block IO同步阻塞IO,模式简单操作方便,处理并发能力低

        NIO:Non IO同步非阻塞IO 客户端和服务器通过Channel(通道)通讯,实现了多路复用

        AIO:Asynchronous IO是NIO的升级,也叫NIO2,实现了异步非阻塞IO,异步通过事件和回调机制实现的

6、Files的常用方法有哪些

  1. Files.exists()检验文件是否存在
  2. Files.createFile()创建文件
  3. Files.createDirectory()创建文件夹
  4. Files.delete()删除一个文件或目录
  5. Files.copy()复制文件
  6. Files.move()移动文件
  7. Files.size()获取文件个数
  8. Files.read()读取文件
  9. Files.write()写入文件

7、Java中的容器都有那些

Java容器分为Collection和Map两大类

Collection

       List

       ArrayList

        LinkedList

        Vector

        Stack

        Set

        HashSet

        LinkedHashSet

        TreeSet

Map

        HashMap

       LinkedHashMap

        TreeMap

        ConcurrentHashMap

        Hashtable

8、Collection和Collections有什么区别

        Collection是一个集合的接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如List、Set等

        Collections是一个包装类,包含了很多静态方法,不能被实例化,就像一个集合的工具类。比如排序方法:Collections.sort(list)

9、List、Set、Map之间的区别是什么

List和Set是存储单例数据集合,Map是以键值对的形式存储数据的

List中存储的数据是有序可以重复的,Set中存储的数据无序不可以重复

Map存储的数据是无序的,键是不可以重复的但是值可以重复

Set存储的数据的位置是根据元素的hashcode决定的,所以对于用户来说是无序的

10、HashMap和Hashtable有什么区别

        存储:HashMap的key和value允许为null,而Hashtable不允许

        线程安全:HashMap线程不安全,Hashtable线程安全,所有HashMap的效率要比Hashtable效率高

        推荐使用:在Hashtable的类注释可以看到,Hashtable是保留类不建议使用,推荐在单线程环境下使用Hash Map替代如果需要多线程使用则用ConcurrentHashMap替代

11、HashMap的实现原理

        HashMap基于Hash算法实现的,我们通过put(key,value)存储,get(key)来获取,当传入key时,HahMap会根据key.hashCode()计算出hash值,根据hash值将value保存在bucket里。当计算出的hash值相同时,我们称之为hash冲突。如果出现hash冲突会变量该位置上的链表中的所有数据通过equals()方法来对比每个数据的key如果key相同时会进行数据覆盖,如果key不同,在jdk1.8以前使用的是头插法,在1.8之后使用的是尾插法。另外1.8以后当链表上的节点数大于等于8并且数组长度不小于64时,链表会自动转换成红黑树,当链表中的数据小于8时会变成链表。

为什么要将链表转换成红黑树? 

        当数据量大时,链表链表查询的时间复杂度为O(n),红黑数查询的时间复杂度为O(logn),最坏时间复杂度为O(algn)

如果链表数据达到8之后数组长度小于64话会先进行数组扩容直到数组长度达到64才会转成红黑树

数组扩容有两种:一种时数组达到阙值时,数组会扩容两倍。HashMap数组长度默认是16,默认负载因子为0.75。所有刚开始阙值为12。另一种是在没有红黑树的情况下,添加元素链表长度超过8,数组会扩容为两倍。

HashMap的做法是用链表和红黑树存储相同hash值的value。当hash冲突的个数比较少时,使用链表否则使用红黑数

        

        

        

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

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

相关文章

17.5【C语言】static的补充说明

static &#xff08;静态的) 作用&#xff1a;修饰局部变量&#xff0c;修饰全局变量&#xff0c;修饰函数 对比两段代码 #include <stdio.h> void test() {int a 5;a;printf("%d ", a); } int main() {int i 0;for(i0; i<5; i){test();}return 0; } …

高并发内存池——链表设计

自由链表类的设计 由于申请的空间块经过对齐之后大小至少为8&#xff0c;因此可以考虑在未被使用的内存块中取前8字节存储下一个空间的地址 FreeList类初步声明 class FreeList { private:void* _freelistnullptr; //自由链表头指针size_t _size0; //自由链表的长度size_t …

【Django】anaconda环境变量配置及配置python虚拟环境

文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…

最新风车IM即时聊天源码及完整视频教程2024年7月版

堡塔面板 试验性Centos/Ubuntu/Debian安装命令 独立运行环境&#xff08;py3.7&#xff09; 可能存在少量兼容性问题 不断优化中 curl -sSO http://io.bt.sy/install/install_panel.sh && bash install_panel.sh 1.宝塔环境如下: Nginx 1.20 Tomcat 8 MySQL 8.0 R…

Java 开发环境配置

1. 下载 JDK 直接在oracle 官网下载 https://www.oracle.com/java/technologies/downloads或者使用博主已经从oracle下载的 jdk21&#xff1a;https://download.csdn.net/download/u011171506/89585231jdk8&#xff1a;https://download.csdn.net/download/u011171506/8958523…

快醒醒,别睡了!...讲《数据分析pandas库》了—/—<4>

一、废话不多说&#xff0c;直接开讲 1、DataFrame的索引和切片 1.1 选择列 当想要获取 df 中某列数据时&#xff0c;只需要在 df 后面的方括号中指明要选择的列即可。如果是 一列&#xff0c;则只需要传入一个列名;如果是同时选择多列&#xff0c;则传入多个列名即可&#xf…

SAPUI5基础知识20 - 对话框和碎片(Dialogs and Fragments)

1. 背景 在 SAPUI5 中&#xff0c;Fragments 是一种轻量级的 UI 组件&#xff0c;类似于视图&#xff08;Views&#xff09;&#xff0c;但它们没有自己的控制器&#xff08;Controller&#xff09;。Fragments 通常用于定义可以在多个视图中重用的 UI 片段&#xff0c;从而提…

集成千兆网口(Gigabit Ethernet Port)的作用主要是提供高速的有线网络连接,其工作原理涉及以下几个关键点:

传输速率&#xff1a; 千兆网口支持的最高传输速率达到1 Gbps&#xff08;即每秒10亿位&#xff09;&#xff0c;是传统百兆网口&#xff08;100 Mbps&#xff09;的十倍速度。这使得它能够处理更大量、更高质量的数据传输。 数据传输效率&#xff1a; 千兆网口能显著提高局域…

C#如何引用dll动态链接库文件的注释

1、dll动态库文件项目生成属性中要勾选“XML文档文件” 注意&#xff1a;XML文件的名字切勿修改。 2、添加引用时XML文件要与DLL文件在同一个目录下。 3、如果要是添加引用的时候XML不在相同目录下&#xff0c;之后又将XML文件复制到相同的目录下&#xff0c;需要删除引用&am…

【机器学习】Python、NumPy和向量化的基础知识以及三者结合的用法和示例

引言 在机器学习中&#xff0c;NumPy是一个非常重要的库&#xff0c;特别是在进行向量化操作时。向量化是一种优化技术&#xff0c;可以显著提高数组计算的效率&#xff0c;特别是在处理大型数据集时。NumPy提供了丰富的数组运算功能&#xff0c;使得向量化操作变得简单高效 文…

驾驭代码的无形疆界:动态内存管理揭秘

目录 1.:为什么要有动态内存分配 2.malloc和free 2.1:malloc 2.2:free 3.calloc和realloc 3.1:calloc 3.1.1:代码1(malloc) 3.1.2:代码2(calloc) 3.2:realloc 3.2.1:原地扩容 3.2.2:异地扩容 3.2.3:代码1(原地扩容) 3.2.3:代码2(异地扩容) 4:常见的动态内存的错误…

掀桌子了!原来是咱们的大屏设计太酷,吓着前端开发老铁了

掀桌子了&#xff01;原来是咱们的大屏设计太酷&#xff0c;吓着前端开发老铁了 艾斯视觉观点认为&#xff1a;在软件开发的世界里&#xff0c;有时候创意和设计的火花会擦得特别亮&#xff0c;以至于让技术实现的伙伴们感到既兴奋又紧张。这不&#xff0c;我们的设计团队刚刚…

Vue的安装配置

1.安装node js Node.js — 在任何地方运行 JavaScript (nodejs.org) 2.测试nodejs是否安装成功 node -v npm -v3.通过npm 安装 vue npm install -g vue/cli4.测试vue是否安装成功 vue --version5.打开PyCharm&#xff0c;创建项目&#xff1a;flask-web vue create flask…

【H.264】H.264详解(二)—— H264视频码流解析示例源码

文章目录 一、前言二、示例源码【1】目录结构【2】Makefile源码【3】h264parser.c源码【4】编译运行【5】源码下载地址 声明&#xff1a;此篇示例源码非原创&#xff0c;原作者雷霄骅。雷霄骅&#xff0c;中国传媒大学通信与信息系统专业博士生&#xff0c;在此向雷霄骅雷神致敬…

MySQL客户端命令一节将.sql文件导入MySQL

MySql客户端命令 直接输入SQL语句 使用MySQL客户端连接到服务器之后&#xff0c;可以发送SQL语句到服务器执行&#xff0c;并且以&#xff1b;和\g, \G作为结束不同的结束方式显示内容有所不同** TIPS: ;和\g结尾以表格的形式显示结果\G以行的形式显示结果 在连接到服务器之后…

FineBI连接MySQL5.7

一、在FineBI系统管理中&#xff0c;点击【新建数据库连接】 选择MySQL数据库 配置数据库连接&#xff0c;如下&#xff0c;其中数据库名称就是需要连接的目标数据库

5.CSS学习(浮动)

浮动&#xff08;float&#xff09; 是一种传统的网页布局方式&#xff0c;通过浮动&#xff0c;可以使元素脱离文档流的控制&#xff0c;使其横向排列。 其编写在CSS样式中。 float:none(默认值) 元素不浮动。 float:left 设置的元素在其包含…

Web3 职场新手指南:从技能到素养,求职者如何脱颖而出?

随着 2024 年步入下半年&#xff0c;Web3 行业正在经历一系列技术革新。通过改进的跨链交互机制和兼容性&#xff0c;逐步消除市场碎片化的问题。技术的进步为开发者和用户都打开了新的前景。然而&#xff0c;复杂的技术和快速变化的市场环境也让许多新人望而却步。求职者如何找…

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示

Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 目录 Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示 一、简单介绍 二、共享纹理 1、共享纹理的原理 2、共享纹理涉及到的关键知识点 3、什么可以实现共享 不能实现共享…

LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)

给你一个下标从 0 开始的字符串 num &#xff0c;表示一个非负整数。 在一次操作中&#xff0c;您可以选择 num 的任意一位数字并将其删除。请注意&#xff0c;如果你删除 num 中的所有数字&#xff0c;则 num 变为 0。 返回最少需要多少次操作可以使 num 变成特殊数字。 如…