
面试
文章平均质量分 91
面试经验及感受
后端马农
这个作者很懒,什么都没留下…
展开
-
万字长文详解Java线程池
而如果我们设置更多的线程数,那么当一部分线程正在等待 IO 的时候,它们此时并不需要 CPU 来计算,那么另外的线程便可以利用 CPU 去执行其他的任务,互不影响,这样的话在任务队列中等待的任务就会减少,可以更好地利用资源。1、线程池不在RUNNING状态,线程池调用shutdown等方法关闭线程池后,即便线程池内部依然存在没有执行完的任务正在执行,但是线程池已经关闭,此时再向线程池内提交任务,就会遭到拒绝。线程可以从队列的两端出队任务执行,但通常从自己的那一端出队,而从其他线程的队列另一端窃取任务。原创 2024-09-29 09:12:01 · 781 阅读 · 0 评论 -
万字长文详解Java线程知识
因为线程之间如果有共享数据,为了避免数据错乱,为了保证线程安全,就有可能禁止编译器和 CPU 对其进行重排序等优化,也可能出于同步的目的,反复把线程工作内存的数据 flush 到主存中,然后再从主内存 refresh 到其他线程的工作内存中,等等。所以,我们在使用其他类时如果会涉及并发场景,那么一定要首先确认清楚,对方是否支持并发操作,以上就是四种需要我们额外注意线程安全问题的场景,分别是访问共享变量或资源,依赖时序的操作,不同数据之间存在绑定关系,以及对方没有声明自己是线程安全的。原创 2024-09-26 15:22:16 · 1048 阅读 · 0 评论 -
八股文-基础知识-int和Integer有什么区别?
而 Integer 是 int 的包装类,它位于 Java 的对象层次,存储在堆内存中,每个 Integer 实例都包含一个 int 类型的字段用于存储值,并提供了一系列对象方法,如数学运算、字符串转换等。此外,Integer 提供了缓存机制,默认情况下-128到127之间的值会被缓存,重复请求时直接返回缓存对象,以提升性能。int 是Java的原始数据类型(Primitive Type),它代表一个整数值,直接存储在内存栈中,占用固定大小的内存空间,不涉及对象的创建和销毁,效率高且内存占用小。原创 2024-07-29 20:42:38 · 820 阅读 · 0 评论 -
八股文-基础知识-面试题汇总(早期)
反射在运行状态中,对任意一个类都能够知道它的属性及方法,并且都能够调用它任何方法;这种动态获取信息以及动态调用对象方法的功能称为反射。抽象类只能单继承,接口可以多实现。抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有成员变量,接口中没有成员变量,只能有常量(默认就是 public static final)抽象类中可以包含非抽象的方法,在 Java 7 之前接口中的所有方法都是抽象的,在 Java 8 之后,接口支持非抽象方法:default 方法、静态方法等。原创 2024-07-27 16:27:48 · 348 阅读 · 0 评论 -
八股文-基础知识-面试题汇总(一)
Java 程序在执行子类的构造方法之前,如果没有用 super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super()来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。原创 2024-07-26 21:17:27 · 1072 阅读 · 0 评论 -
八股文-基础知识-面试题汇总(二)
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。原创 2024-07-26 21:18:10 · 373 阅读 · 0 评论 -
八股文-基础知识-面试题汇总(三)
AIO 是异步 IO 的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。资源关闭的最佳实践:自从Java 7引入了try-with-resources语句后,对于实现了AutoCloseable接口的资源,如JDBC连接或文件流,更推荐使用try-with-resources来代替传统的try-finally结构,因为它能自动管理资源的关闭,减少了手动编写finally块的必要性,且代码更简洁。这有助于保护方法的实现不被修改,从而确保方法的行为始终如一。原创 2024-07-27 16:28:41 · 530 阅读 · 0 评论 -
final、finally、finalize有什么区别?
由于final变量一旦初始化后不可再赋新值,所以在多线程环境下,程序员可以不必为final变量的同步操心,这无疑减轻了同步控制的负担,同时也规避了进行不必要的防御性复制操作,进而提升了代码的简洁性和效率。通过Cleaner,开发者可以确保在对象被垃圾收集器最终回收之前,操作系统级别的资源(如文件描述符等)得到妥善释放,从而降低了资源泄露的风险,并提高了程序的整体健壮性和稳定性。在后续的教程或专栏中,将进一步详细介绍Java中各种引用类型,包括幻象引用及其在资源回收中的具体应用。原创 2024-04-30 22:21:10 · 1155 阅读 · 0 评论 -
Exception和Error有什么区别?
在面试过程中,面试官往往会针对这些细节进行进一步的询问。例如,他们可能会问到你对哪些特定的Error、Exception或RuntimeException有所了解?为此,我精心绘制了一个简洁的类图,并列举了一些典型的例子,供你参考。通过熟悉这些例子,你至少能够对Throwable、Exception、Error的基本分类和常用子类有一个清晰的认识。在这些子类型中,有些特别重要,需要重点理解。原创 2024-03-15 16:42:02 · 1193 阅读 · 0 评论