2023年Java核心技术面试知识总结
文章平均质量分 91
算法编程张老师
头部金融企业研发人员。
头部教育机构高级算法主讲老师。
世界大学生程序设计竞赛亚洲区(ACM)银牌codeforces2400左右。
个人空间:https://b23.tv/F3SiPnS
展开
-
2023年Java核心技术第十三篇(篇篇万字精讲)
目录23. JVM的基本常见点23.1 什么是JVM的跨平台23.2 什么是JVM的语言无关性23.3 什么是JVM的解释执行23.4 什么是JIT23.5 对象一定是在堆创建的吗23.6JVM的10种垃圾回收器23.7什么是垃圾回收中的STW23.8 什么是可达性算法23.9 JVM中的垃圾回收算法23.10 JVM中的分代模型23.11 CMS垃圾回收器23.12 G1垃圾回收器23.13 JVM的运行时数据区有哪些23.14 什么是原创 2023-09-02 22:03:39 · 256 阅读 · 0 评论 -
2023年Java核心技术第十二篇(篇篇万字精讲)
AtomicIntger 是对int类型的一个封装,提供原子性的访问和更新操作,其原子性操作的实现是基于CAS技术。这一篇我们将走进各种同步结构,线程池,是基于什么原理来进行设计和实现。原创 2023-09-01 19:51:17 · 502 阅读 · 0 评论 -
2023年Java核心技术第十一篇(篇篇万字精讲)
当所有线程的请求都完成后,主线程就会从await()方法中返回,并输出"所有接口数据请求完成,开始进行下一步处理...",表示可以开始下一步操作了。,可以实现多个线程之间的同步,让它们在某个点上进行协调,等待彼此达到同一个状态,然后再继续执行后续操作。强大的Executor框架,可以创建各种不同类型的线程池,调度任务运行等,绝大部分情况,不需要自己从头进行实现线程池和任务调度器。是 Java 提供的一种同步工具类,它可以用于多个线程之间相互等待,直到所有线程都达到一个共同的屏障点,然后同时继续执行。原创 2023-08-31 23:59:22 · 403 阅读 · 0 评论 -
2023年Java核心技术第十篇(篇篇万字精讲)
操作系统的角度,我们可以简单的认为,线程是系统调度的最小单元,一个进程可以包含多个线程,作为任务真正运作者,有自己的栈(Stack),寄存器(Register),本地存储(Thread Local)等,但是会和进程内其他线程共享描述符,虚拟地址空间等。梳理锁的获取顺序:确保线程获取锁的顺序是一致的,避免出现循环依赖的情况。对于我们最熟悉的JDk,线程也进行了一个演进过程,基本上在Java 1.2 后,JDK已经抛弃了Green Thread,也就是用户调度的线程,现在的模型是一对一映射到操作系统内核线程。原创 2023-08-29 18:00:45 · 735 阅读 · 0 评论 -
2023年Java核心技术第九篇(篇篇万字精讲)
指的是对象一旦创建后,其状态(数据)不能被修改。不可变对象在创建后不可更改,任何操作都不会改变原始对象的值,而是返回一个新的对象。线程安全就是在多线程的环境下正确的一个概念,保证在多线程的环境下是实现共享的,可修改的状态是正确性,状态可以类比为程序里面的数据。指的是当一个线程修改了共享变量的值后,其他线程能够立即看到最新的值。指的是程序执行的顺序与预期的顺序一致,不会受到指令重排序等因素的影响。如果状态不是共享的,或者不是可修改的,就不存在线程安全的问题。进行封装,我们将对象内部的状态隐藏,保护起来。原创 2023-08-26 23:55:43 · 393 阅读 · 0 评论 -
2023年Java核心技术面试第八篇(篇篇万字精讲)
继承是建立类之间的一种层次关系,子类可以继承父类的属性和方法,并且可以增加自己的特定实现;而多态是在继承关系中,通过父类的类型引用来指向子类的对象,并且根据对象的实际类型执行不同的行为。我们可以定义一个"Animal"类作为父类,其中包含通用的属性和方法,如"eat"和"sleep"。然后可以创建子类如"Cat"和"Dog"来继承"Animal"类,并在子类中添加特定的属性和方法,如"meow"方法和"bark"方法。多态:多态是指同一种操作可以作用于不同的对象,并根据对象的实际类型执行不同的行为。原创 2023-08-23 15:40:00 · 281 阅读 · 0 评论 -
2023年Java核心技术面试第七篇(篇篇万字精讲)
十二 . Java 提供了哪些IO方式?NIO如何实现多路复用?IO是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO扩展能力愈发重要。原创 2023-08-22 09:09:37 · 400 阅读 · 0 评论 -
2023年Java核心技术面试第六篇(篇篇万字精讲)
同样地,当一个线程调用SynchronousQueue的take()方法尝试从队列中获取并删除一个元素时,如果此时没有其他线程正在等待插入操作,则获取操作也会被阻塞,直到另一个线程调用put()方法来插入一个元素为止。也就是说,每个插入操作都必须等待一个相应的删除操作,反之亦然。具体保证线程安全的方式,包括从简单的synchronize方式,到基于更加细化,基于分离锁实现的ConcurrentHashMap等并发实现,具体选择要看开发的场景需求,并发包内提供的容器通用场景,远优于早期的简单同步实现。原创 2023-08-20 23:37:56 · 340 阅读 · 0 评论 -
2023年Java核心技术面试第五篇(篇篇万字精讲)
ConcurrentHashMap 是 JDK 提供的线程安全的哈希表实现,它是在多线程环境下使用的一种高效的并发容器。相对于传统的 HashMap,ConcurrentHashMap 在并发场景下提供了更好的性能和线程安全性。但需要注意的是,HashMap 不是线程安全的,如果在多线程环境下使用,需要进行适当的同步处理或选择线程安全的替代类(如 ConcurrentHashMap)。HashMap 是 Java 中常用的散列表(哈希表)实现,它提供了快速的插入、查找和删除操作。原创 2023-08-19 17:38:34 · 935 阅读 · 0 评论 -
2023年Java核心技术面试第四篇(篇篇万字精讲)
是Java早期提供的线程安全的动 态数组,如果不需要线程安全,不建议使用,同步需要进行额外开销,Vector内部使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并且拷贝原有的数组数据。三者都是实现集合框架中的List,即有序集合,都按照位置进行定位,添加或者删除的操作,都提供迭代器进行遍历内容,由于具体的设计,在行为,性能,线程安全方面又有些不同。Java 提供的双向链表,不需要进行上面两种进行调整容量,也不是线程安全的。原创 2023-08-18 22:42:37 · 415 阅读 · 0 评论 -
2023年Java核心技术面试第三篇(篇篇万字精讲)
在方法执行前,会输出相应的日志信息(例如"Before invoking addUser()"),然后调用目标对象的对应方法,最后输出方法执行后的日志信息(例如"After invoking addUser()")。比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。是一种方便运行时动态构建代理,动态处理代理方法调用的机制,很多场景都是利用类似机制做到的。实现动态代理的方式很多,比如 JDK 自身提供的动态代理,就是主要利用了反射机制。原创 2023-08-17 19:59:28 · 558 阅读 · 0 评论 -
2023年Java核心技术面试第二篇(篇篇万字精讲)
Java语言中,除了原始数据类型的变量,其他都是引用类型,指向各种不同的对象,理解引用可以帮助掌握Java对象生命周期和JVM内部相关机制。原创 2023-08-16 20:01:54 · 303 阅读 · 0 评论 -
2023年Java核心技术面试第一篇(篇篇万字精讲)
"一次编译,到处运行"是Java语言跨平台的特性,Java的跨平台特性与Java虚拟机的存在密不可分,可在不同的环境里面运行,window平台和Linux平台都有对应的JDK,安装JDK后就有了Java语言的运行环境,Java语言和其他编程语言并没有特别大的区别,并不是Java语言可以跨平台,而是在不同的平台都有让Java语言运行的环境,所以才有,Java一次编译,到处运行的结果。跨平台的语言中Java是较为成熟的一种,"一次编译,到处运行"这种效果与编译器有关,编程语言的处理需要编译器和解释器。原创 2023-08-12 12:53:28 · 248 阅读 · 0 评论