首页 > 编程语言 > 详细

java面试题

时间:2020-05-15 23:45:26      阅读:74      评论:0      收藏:0      [点我收藏+]
1.private修饰的方法可以通过反射访问,那么private的意义是什么
答:(1)java的private修饰符并不是为了绝对安全性设计的,更多的是对用户常规使用java的一种约束;
(2)从外部对对象进行常规调用时,能够看到清晰的类结构。
 
2.Java类初始化顺序
答:基类静态代码块->基类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)->派生类静态代码块->派生类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)->基类普通代码块->基类普通成员字段(并列优点级,按代码中出现先后顺序执行)->基类构造方法->派生类普通代码块->派生类普通成员字段(并列优点级,按代码中出现先后顺序执行)->派生类构造方法。


3.对方法区和永久区的理解以及它们之间的关系
答:方法区是jvm规范里要求的,永久区是Hotspot虚拟机对方法区的具体实现,前者是规范,后者是实现方式。
4.一个java文件有3个类,编译后有几个class文件
答:文件中有几个类编译后就有几个class文件。
 
5.ReadWriteLock读写之间互斥吗
答:ReadWriteRock读写锁,使用场景可分为读/读、读/写、写/写,除了读和读之间是共享的,其它都是互斥的。
 
6.写一个你认为最好的单例模式
答:双检锁的:
    public class Singleton {
    //定义一个私有的实例
    private volatile static Singleton instance;
    //构造方法私有化
    private Singleton() {
    }
    //定义一个公共的方法获取私有的实例
    public static Singleton getInstance(){
        if(null==instance){
            synchronized (Singleton.class){
                if(null==instance){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }    
}
 
7.写一个生产者消费者模式
答:生产者消费者模式,synchronized锁住一个LinkedList,一个生产者,只要队列不满,生产后往里放,一个消费者只要队列不空,向外取,两者通过wait()和notify()进行协调。
8.写一个死锁
答:定义两个ArrayList,将他们都加上锁A,B,线程1,2,1拿住了锁A,请求锁B,2拿住了锁B请求锁A,在等待对方释放锁的过程中谁也不让出已获得的锁。
 
12.String a = "ab"; String b = "a" + "b"; a == b 是否相等,为什么。
答:相等。
13.int a = 1; 是原子性操作吗
 答:int a = 1; 是原子性操作
14.可以用for循环直接删除ArrayList的特定元素吗?可能会出现什么问题?怎样解决
答:for循环直接删除ArrayList中的特定元素是错的,不同的for循环会发生不同的错误,泛型for会抛出ConcurrentModificationException,普通的for想要删除集合中重复且连续的元素,只能删除第一个。
解决方案:用 Iterator。
15.新的任务提交到线程池,线程池是怎样处理
答:第一步:线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则执行第二步。
第二步 :线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里进行等待。如果工作队列满了,则执行第三步。
第三步 :线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务。

java面试题

原文:https://www.cnblogs.com/liqinzhen/p/12897661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!