Java面试复习(一)

1JVM

Java虚拟机,是java跨平台的关键。Java虚拟机根据不同的平台以及其指令集,对java字节码文件进行执行,换言之,java语言从源代码到执行的顺序是这样的:java源代码----->.class字节码文件----->不同平台对应的java虚拟机进行执行。

也就是说,我们的源代码只要编译一次,成为.class字节码文件,然后在不同的平台上,就会由java虚拟机解释为对应平台的指令进行执行。实现了一次编译,到处运行。

2jre

java运行时环境,它包括Java虚拟机、Java核心类库和支持文件。

3jdk

java开发工具包,包括jre,编译器和其他的工具(比如:JavaDocJava调试器)

4java面向对象的特征

封装,继承,多态

5、方法覆盖和方法重载

         覆盖是子类继承父类之后,重写父类方法,从而将父类方法覆盖(同返回值类型,同参数列表)。

         重载是指同一方法名不同的参数列表,运行期根据输入选择对应的方法。

6、接口和抽象类的区别

         继承/实现:只能继承一个抽象类,可以实现多个接口。

         抽象方法:接口全为抽象方法(public),抽象类可以有实际方法(publicprotectedprivate)。

         变量:接口为 public final,抽象类则没有限制

         接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

7java多线程

       synchronized关键字,同步方法默认用this或者当前类class对象作为锁,同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度

8java线程池

       Executorà ExecutorServiceà AbstractExecutorService àThreadPoolExecutor

       corePoolSize:核心池大小

       maximumPoolSize:最大线程数

       keepAliveTime: 表示线程没有任务执行时最多保持多久时间会终止

unit:参数keepAliveTime的时间单位

TimeUnit.DAYS;              //

TimeUnit.HOURS;            //小时

TimeUnit.MINUTES;          //分钟

TimeUnit.SECONDS;          //

TimeUnit.MILLISECONDS;     //毫秒

TimeUnit.MICROSECONDS;     //微妙

TimeUnit.NANOSECONDS;      //纳秒

workQueue:一个阻塞队列,用来存储等待执行的任务

threadFactory:线程工厂,主要用来创建线程;

handler:表示当拒绝处理任务时的策略,有以下四种取值:

ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。

ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。

ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)

ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务

9HashMapLinkHashMapTreeMapHashTable

       键值对进行存储value>

HashCode()计算散列值,由散列值确定存储位置,使用entry对象存储键值对对象

HashMap一般使用数组存储,数组元素是link对象。所以当keyhash值重复过多时链表过长,会影响效率。所以当链表长度达到8以上时,会已红黑树的形式存储,使得每次查找、插入、删除的复杂度不超过O(n log n)

LinkHashMap HashMap的基础上,在Entry类中添加了afterbefore对象的引用,使得遍历的时候元素顺序为插入顺序(HashMap的遍历是无序的)

       TreeMap使用红黑树进行存储,默认使用hash值的递增序列,也可以自己设计。

HashTable 线程安全的,但是效率及其低下,现已废弃,功能与HashMap基本相同(除了线程安全部分,)。(key不能为null,其他map可以)

ConcurrentHashMap 分段锁,线程安全的,但是如果并发执行 map.put ( key, map.get(key)+1 ) 的话,还是会出错。

你可能感兴趣的:(Java开发工程师面试复习)