
Java 面试重点
文章平均质量分 80
菜菜的大数据开发之路
Java技术栈 AND 大数据开发,学习笔记, 拒绝水文
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【转载】搞懂G1垃圾收集器
https://www.cnblogs.com/GrimMjx/p/12234564.html转载 2022-06-04 20:04:33 · 108 阅读 · 0 评论 -
Java面试重点_10. Java集合的快速失败机制 “fail-fast”和安全失败机制“fail-safe”
0. 什么是快速失败和安全失败简而言之:系统运行中,如果有错误发生,那么系统立即结束,这种设计就是快速失败。系统运行中,如果有错误发生,系统不会停止运行,它忽略错误(但是会有地方记录下来),继续运行,这种设计就是失败安全。他们是一种设计思想.1. “fast-fail” 快速失败机制Java的快速失败机制是Java集合框架中的一种错误检测机制,当多个线程同时对集合中的内容进行修改时可能就会抛出ConcurrentModificationExceptioon异常.其实不仅仅是在多线程状态下,在原创 2022-04-08 21:33:27 · 1097 阅读 · 0 评论 -
Java面试重点_9. HashMap常用方法和扩容, 树化, 链化源码详尽分析
文章目录一, HashMap二, HashMap的结构如下所示:三, 构造函数与成员变量四, 成员变量1, 概述2, 原理3. 源码分析3.0 构造方法3.1 预备知识(初始容量, 负载因子, 阈值)3.2 查找3.3 遍历3.4 插入3.4.1 插入逻辑3.4.2 扩容机制3.4.3 链表树化, 红黑树链表化与拆分1. 链表 --> 红黑树 (树化)2. 红黑树拆分3. 红黑树链化3.5 删除3.6 其他细节一, HashMap数组与链表在处理数据时各有优缺点,数组查询速度很快而插入很慢,链表原创 2022-04-04 22:08:26 · 959 阅读 · 0 评论 -
Java面试重点_8. PriorityQueue 使用方式及源码分析
一, 概述PriorityQueue 并没有直接实现 Queue接口,而是通过继承 AbstractQueue 类来实现 Queue 接口的一些方法,在 Java 定义中,PriorityQueue 是一个基于优先级的无界优先队列。通俗的说,添加到 PriorityQueue 队列里面的元素都经过了排序处理,默认按照自然顺序,也可以通过 Comparator 接口进行自定义排序。PriorityQueue 是采用树形结构来描述元素的存储,具体说是通过完全二叉树实现一个小顶堆,在物理存储方面,P原创 2022-03-31 17:17:16 · 1149 阅读 · 0 评论 -
Java面试重点_7. Queue, Deque, 及ArrayDeque 源码分析和对比
一, QueueQueue是一种很常见的数据结构类型,在Java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能的类主要有如下几个:AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, LinkedBlockingQueue, DelayQueue, LinkedList, Prio原创 2022-03-30 21:30:31 · 1379 阅读 · 2 评论 -
Java面试重点_6. ArrayList 源码分析及其扩容机制总结
一, 集合整体架构图1.集合常用的三种遍历方式Iterator, 迭代器, 所有单例集合(Collections)的超级父类, 对各种单列集合当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法:写法1: for循环for(int i = 0, len = strings.size(); i < len; i++){ System.out.println(strings.get(i));}写法2: foreach循环(增强for循环)for(S原创 2022-03-29 20:16:18 · 1521 阅读 · 4 评论 -
Java面试重点_5. Java BIO, NIO, AIO 简明总结
文章目录一, 何为同步和异步, 阻塞和非阻塞 ?1.1 同步和异步1.2 阻塞和非阻塞1.3 同步阻塞, 同步非阻塞, 异步阻塞, 异步非阻塞的情况二, BIO, NIO, AIO2.1 Java中的IO原理2.2 `BIO, NIO, AIO, 面向面试总结`一, 何为同步和异步, 阻塞和非阻塞 ?1.1 同步和异步同步和异步概念以调用者的行为方式作区分;当程序产生一个调用后, 如果调用者主动等待该调用的结果, 则称之为同步;当程序产生一个调用后, 如果调用者不以主动的方式等待结果, 而是原创 2022-03-12 14:52:49 · 951 阅读 · 1 评论 -
数据研发典型面试题_1. Java必须要熟练的知识点
数据研发, 跟Java后端开发关系千丝万缕, 尤其是Java部分(Java+JVM+JUC), 基本上就是完全重叠;1. Java语言的特点; JDK与JRE的关系2. 字节大小3. Java的8种数据类型, 以及存在的类型转换关系4.Java常见的关键字,4.1 static, super, this各自的作用简述4.2 final, finally, finalize的区别4.3 break和cotinue的区别5. 方法的重载和重写6. Java中方法的参数传递机制7. Jav.原创 2022-03-02 22:35:16 · 617 阅读 · 0 评论 -
Java IO流详解和常用流的使用
一, IO概念I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程 ;java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io这个包里面。二, “流” 是原创 2021-12-14 14:50:28 · 1313 阅读 · 0 评论 -
Java中的File类及其常用方法详解
〇. File类的一些前置知识一, 如何实例化一个File类对象Java中提供了四种不同参数列表的构造器来实例化一个File类对象:[举个栗子]@Test public void fileTest(){ //1. 使用代表路径的字符串创建File类对象 // new File("e:\\parentDirectory\\res.txt"); String pathName = "e:\\parent1\\parent11\\res.tx原创 2021-12-11 16:02:58 · 6100 阅读 · 0 评论 -
Java面试重点_1.1. String的不可变性 0.5
为什么说 String 有不可变性?这种设计有什么好处?一、String 的不可变性String类 是 final修饰的,而final 修饰的类不能被继承。String 是不可变的,当修改已有字符串的值的时候,(如将 str = "abc" 修改为 "abcdef"),不是在原内存地址上修改数据,而是将原引用重新指向新对象、新地址。为什么不可变呢?在 JDK 1.8 的源码中,java.lang.String 类的起头几行为:public final class String implem原创 2021-12-11 09:46:26 · 304 阅读 · 0 评论 -
Java面试重点_4. 一文彻底搞懂Java中的反射 0.5
一, 什么是反射? 反射存在的意义是什么?反射作为Java这门语言中, 可以说是最抽象的一种概念, 让我们先从知乎大佬的一番近似于大白话的叙述看起来:概念:Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。1.1 反射存在的意义有的同学可能会疑惑,Java 已原创 2021-12-05 22:46:33 · 765 阅读 · 0 评论 -
Java面试重点_3. 你了解引用拷贝,浅拷贝和深拷贝吗? 0.5
文章目录引用拷贝, 深拷贝, 浅拷贝1. 引用拷贝2. 浅拷贝3. 深拷贝引用拷贝, 深拷贝, 浅拷贝在开发、刷题、面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝。拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的!在对象的拷贝中,很多初学者可能搞不清到底是拷贝了引用还是拷贝了对象。在拷贝中这里就分为引用拷贝、浅拷贝、深拷贝进行讲述。1. 引用拷贝**引用拷贝会生成一个新的对象引用地址(变量),但是两个最终指向依然是同一个对象。**如何更好的理解引用拷原创 2021-12-03 15:45:48 · 710 阅读 · 0 评论 -
Java面试重点_2.为什么重写 equals() 时必须重写 hashCode() 方法?0.5
我觉着很无聊的一个问题;原创 2021-12-02 22:18:04 · 337 阅读 · 0 评论 -
Java面试重点_1. 常量池 和 String类的不变性, 拼接方式等 0.8
一, 常量池1. 常量池的好处常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。(1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。(2)节省运行时间:比较字符串时,比equals()快。对于两个引用变量,只用判断引用是否相等,也就可以判断实际值是否相等。2. 双等号 ==, equals();在基本数据类型中使用==表示比较他们的数值大小, 在引用数据类型的对象之间, ==是比较原创 2021-12-02 21:52:20 · 600 阅读 · 0 评论