Java常见面试题收集
1、final、finalize、finally之间的区别
final关键字用于对属性、方法、类进行修饰,表示属性值不可修改,定义的对象地址不可修改、方法不可被覆盖,类不可被继承。
finalize()方法类似其他语言当中的析构函数,用于释放对象占用的资源。
finally是异常处理try-catch-finally中的一部分,与其配合使用,表示不管异常是否处理,最终都将执行finally当中的代码。
2、Colection、Map之间的区别
Collection包含 List 和 Set 子接口,用来存储一组对象,而Map存储键值对。Map不能包含两个相同的键,null可以作为键。
继承自Map的类有 HashMap、HashTable。HashMap 缺省情况下是非同步的,可以通过Map Collections.synchronizedMap(Map m)来达到线程同步;
HashTable也是Dictionary的子类,缺省是线程同步的。不允许关键字或值为null。
当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap。
Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。
3、ArrayList、LinkedList、Vector、Stack区别
ArrayList、LinkedList 和 Vector 都实现了 List 接口,而List 接口继承自 Collection 接口;而 Stack 继承自 Vector。
ArrayList 是非线程安全的数组实现,因此访问每一个元素所花费的时间一样,检索数据元素效率较高,但对于数据的更新开销较大;相比之下,LinkedList 是非线程安全的链表实现,数据结构由节点组成,通过指针来访问数据元素,检索数据需要进行遍历,效率较低,但对于数据更新效率较高,针对于这种情况,我们会在查询的时候使用 ArrayList,而在进行数据更新的时候使用 LinkedList,所以对于同一组数据的操作,将涉及两者之间的转换;目前,ArrayList的数据更新效率已有了较大的提升,所以当两者效率相差不大的时候,一般会选择使用 ArrayList。Vector 是线程安全的数组实现,但资源开销较大,效率较ArrayList 低,在项目开发当中,应当根据具体的情况来选择。
4、HashMap、HashTable的区别
虽然 HashMap 和 HashTable 都实现了 Map 接口,但 HashTable 继承自 Dictionary。
在多线程环境下,应选择 HashTable,因为它的实现是线程同步的,而如果使用 HashMap,则应该通过自定义同步方法来实现。
在 HashTable 中,键值都不允许为null,这在 HashMap 中是允许的,但不允许存在多个null键,因为它不允许重复键。
具体实现不同,包含其迭代器、哈希值、数组初始大小及扩容方式。
-- 内容来自网络,未经验证,如有谬误,请联系 zndo@live.com 进行指正,我将及时对内容进行修改。
Java常见面试题收集的更多相关文章
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- Java 常见面试题(一)
1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
- JAVA常见面试题问题简述(持续更新中)
JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...
- java常见面试题总结2
JAVA必背面试题和项目面试通关要点 简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等. 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链 ...
- JAVA常见面试题及解答
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- Java常见面试题(含答案)
第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...
- java常见面试题
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分 ...
- java常见面试题及答案 11-20(JVM篇)
11.JVM内存分哪几个区,每个区的作用是什么? Java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区 ...
随机推荐
- [常用工具] PyAutoGUI使用教程
PyAutoGUI使用教程 目录 PyAutoGUI使用教程 1 基础知识 2 一般函数 3 故障保险 4 鼠标函数 4.1 鼠标移动 4.2 鼠标拖动 4.3 鼠标单击 4.4 鼠标滚动 4.5 鼠 ...
- [OpenCV实战]35 使用Tesseract和OpenCV实现文本识别
目录 1 如何在Ubuntu和windows上安装Tesseract 1.1 在ubuntu18.04上安装Tesseract4 1.2 在Ubuntu 14.04,16.04,17.04,17.10 ...
- (7)go-micro微服务zap日志配置
目录 一 Zap日志介绍 二 Zap日志安装 三 Zap日志初始化 四 Zap日志重写方法 五 Zap日志使用 六 最后 一 Zap日志介绍 Zap是在 Go 中实现超快.结构化.分级的日志记录. Z ...
- requests模块已经安装,vs code下无法导入requests模块
MacOS 11.2.3 确定自己确实已经安装requests cmd下输入pip list 看下python版本 看下visual studio code中python解释器的版本 cm ...
- 自从学习了MongoDB高可用,慢慢的喜欢上了它,之前确实冷落了
大家好,我是哪吒,最近项目在使用MongoDB作为图片和文档的存储数据库,为啥不直接存MySQL里,还要搭个MongoDB集群,麻不麻烦? 让我们一起,一探究竟,继续学习MongoDB高可用和片键策略 ...
- Java自动装箱与拆箱
装箱就是自动将基本数据类型转换为包装器类型(int-->Integer).调用方法:Integer的 valueOf(int) 方法 拆箱就是自动将包装器类型转换为基本数据类型(Integer- ...
- 字符输入流读取字符数据-writer类
字符输入流读取字符数据 读取字符:read方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1,循环读取,代码使用演示∶ writer类 java.io.Filelwriter ...
- 重定向Kubernetes pod中的tcpdump输出
重定向Kubernetes pod中的tcpdump输出 最新发现一个比较有意思的库ksniff,它是一个kubectl 插件,使用tcpdump来远程捕获Kubernetes集群中的pod流量并保存 ...
- ROS多机通讯
1.主机: sudo /etc/hosts 写入从机的地址和用户名: 192.168.31.14 raspi2 2.从机 sudo /etc/hosts 写入主机的地址和用户名 192.168. ...
- RocketMQ - 生产者最佳实践总结
相对消费者而言,生产者的使用更加简单,一般关注消息类型.消息发送方法和发送参数,即可正常使用RocketMQ发送消息 常用消息类型 消息类型 优点 缺 点 备注 普通消息(并发消息) 性能最好.单机T ...