Java面试AndroidAndroid面试相关

Java基础总结

2019-10-17  本文已影响0人  酱爆大头菜
  亲们,作为程序员你可以不跳槽,但是不能不学习,本文针对多份面试情况,总结了面试Android岗必问的Java部分的基础,多维度分析了问题的原理,使用,以及特点,希望对正在面试或将要面试的你带来一点帮助。如有疑问可留言说明。

HashMap,HashTable,ConcurrentHashMap的内部实现方式都是什么?有什么区别?

HashMap

实现方式以及内部原理

包含的属性

特性


HashTable

实现方式

包含属性

特性


ConcurrentHashMap

实现方式

特性

JDK1.7~1.8实现分析


Java线程创建有几种方式?分别是什么?这几种创建方式的有啥不同?

这三种创建线程的区别?


Synchronized和ReentantLock锁内部原理?

Synchronized

举例

ReentantLock
  ReentrantLock lock = new ReetrantLock();
  lock.lock() ;

Synchronized和ReentantLock锁有什么区别?


死锁是怎么产生的?


死锁的有哪几种?


乐观锁和悲观锁有说明区别?


乐观锁有什么弊端?


并发编程的三大概念是什么?


Volatile有什么特性?用来做什么?

  volatile boolean flag = false;
     //线程1
    while(!flag){
        doSomething();
    }
      //线程2
    public void setFlag() {
        flag = true;
    }
 class Singleton {
    private volatile static Singleton instance = null;

    private Singleton() {

    }

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null)
                    instance = new Singleton();
            }
        }
        return instance;
    }
}

线程池有什么优势?为什么使用线程池?


线程池有几种?分别是什么?都有什么区别?

  new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>())
  newCachedThreadPool() {
     //核心线程数0,最大线程数MAX_VALUE,60秒钟超时等待,
    //SynchronousQueue代表没有等待队列,每次都创建新线程。 线程空闲60秒后,线程将全部清空
     return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>());
    }

线程池内线程数量分配多少合适?

上一篇 下一篇

猜你喜欢

热点阅读