
Java面试题
文章平均质量分 91
打架不行的二哈
点点关注,点个赞,会让作者元气满满的哦
展开
-
Java动态代理
1、概述1.1 什么是代理我们都知道微商代理,简单地说就是代替厂家卖商品,厂家“委托”代理为其销售商品。关于微商代理,首先我们从他们那里买东西时通常不知道背后的厂家究竟是谁,也就是说,“委托者”对我们来说是不可见的;其次,微商代理主要以朋友圈的人为目标客户,这就相当于为厂家做了一次对客户群体的“过滤”。我们把微商代理和厂家进一步抽象,前者可抽象为代理类,后者可抽象为委托类(被代理类)。通过使用代理,通常有两个优点,并且能够分别与我们提到的微商代理的两个特点对应起来:优点一:可以隐藏委托类的实现;原创 2021-10-25 17:18:13 · 139 阅读 · 0 评论 -
Java类加载基础
我们知道,我们从写java代码开始,到代码执行的时候,中间一共经历四个阶段:新建.java文件 并写代码,这称为编辑期。将.java文件编译为.class文件,这称为编译期。将.class文件加载到内存 并 生成.class类,这称为加载期。通过.class类去创建对象、执行代码,这称为运行期。其中,除了第一个阶段我们能直接干预,剩余三个阶段,都是jvm自己执行的(当然也有黑科技可以人工干预)。1、类加载时机引起类加载的场景使用new创建对象时读取或设置类的静态变量时(编译期常量除外原创 2021-10-09 10:52:52 · 159 阅读 · 0 评论 -
Java双亲委派机制
1、什么是双亲委派?虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加载器加载呢?这就不得不提到"双亲委派机制"。首先,我们需要知道的是,Java语言系统中支持以下4种类加载器:Bootstrap ClassLoader 启动类加载器Extention ClassLoader 标准扩展类加载器Application ClassLoader 应用类加载器User ClassLoader 用户自定义类加原创 2021-09-09 15:39:53 · 694 阅读 · 0 评论 -
Java每日面试题5
一、CountDownLatch和CyclicBarrier的区别1、CountDownLatch用于主线程等待其他子线程任务都执行完毕后再执行,CyclicBarrier用于一组线程相互等待大家都到达某个状态后再同时执行。public class CountdownLatchExample { public static void main(String[] args) throws InterruptedException { final int totalThread = 10; Cou原创 2020-08-07 13:57:16 · 141 阅读 · 0 评论 -
Java每日面试题4
一、Java 中能创建volatile 数组吗?能, Java 中可以创建volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到volatile 的保护,但是如果多个线程同时改变数组的元素, volatile 标示符就不能起到之前的保护作用了。二、volatile 能使得一个非原子操作变成原子操作吗?一个典型的例子是在类中有一个long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为volati原创 2020-07-17 20:09:59 · 178 阅读 · 0 评论 -
Java每日面试题3
一、请说出与线程同步以及线程调度相关的方法。wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException 异常;notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM 确定唤醒哪个线程,而且与优先级无关;notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让原创 2020-07-16 17:50:36 · 180 阅读 · 0 评论 -
Java每日面试题2
一、抽象类(abstract class)和接口(interface)有什么异同?抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现, 否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以private、默认、protected、public 的,而接口中的成员全都是public 的。抽象类原创 2020-07-15 19:59:41 · 236 阅读 · 0 评论 -
Java每日面试题1
一、面向对象的特征有哪些方面?抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。继承:继承是从已有类得到原创 2020-07-14 11:26:27 · 160 阅读 · 0 评论