Java虚拟机是一个可以执行java字节码文件的一款虚拟机进程。不同的 *** 作系统对应不同的java虚拟机,对下有着不同的接口,对上提供相同的接口,我们的java程序只有一次编码就可以通过不同的虚拟机完跨平台。
2.JDK 和 JRE 的区别是什么JDK是开发环境,JRE是java运行环境,都包含JAVA虚拟机。
3.static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者 是 static 的方法?static修饰的静态变量或者静态的方法,随着类加载而加载,可以直接通过类来访问。
被static修饰的静态函数只能访问静态的成员变量。
私有方法或者static的方法不可以被覆盖。
java一共有八种数据类型,byte,short,int,long,double,float,char,bool
5.什么是自动拆装箱?就是java自动的将基本数据类型转化成对应的包装类,比如int转化为Integer
6.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?方法覆盖就是重写,发生在父类和子类之间,子类重新父类方法,函数名,参数和返回值类型都必须相同,抛出的异常小于父类,修饰符要大于父类。
方法的重载发生在同一类中,方法名相同,参数类型和参数个数或者返回值类型不同。
每一个类都会有一个和类名相同的函数成为构造函数。当没有声明的时候,函数自己会创建一个默认的构造函数。当对象被调用的时候,自动的调用构造函数。
构造函数的重载和普通方法的重载类似,一个函数可以用多个构造函数,通过对象实例化的传参不同调用对应的构造函数。
不支持,,一个类只能集成一个父类,但是一个父类可以被多个子类继承。
但是java一个类可以实现多个接口。
1.接口interface是可以多继承的,抽象类abstract是不可以多继承的
2. 接口中的所有方法都是抽象方法,抽象类的方法不用abstract就是非抽象的
3.实现接口必须实现接口的所有方法,继承抽象类可以不实现所有的方法,但是这个继承的子类也是抽象的。
4.接口的成员变量都是默认public static final的常量。
值传递传递了一个副本,对原来的引用进行 *** 作不会对传递的值有影响。
引用传递是传递了一个引用的地址的值,对引用的对象进行改变,所有的引用传递对象都会发生改变。
Java 线程 11.进程和线程的区别是什么?
一个程序运行的进程产生一个进程,每个进程都有自己的独立的内存空间。
线程是进程下的单位,每个进程至少都有一个线程,可以有多个线程,线程是cup调度的最小单位。
单核的cup多线程 *** 作实际上是通过时间复杂的在同个时间快速切换不同的线程进程调用,实际上还是单线程。
四种方式,继承thread类,实现runnable接口,实现callable接口和工具类
13.概括的解释下线程的几种可用状态就绪,等待,运行和睡眠,阻塞和销毁。
14.同步方法和同步代码块的区别是什么?锁可以加载方法上,也可以加在代码块中,用{}。
15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?监听器和锁在虚拟机中同步使用的,每一个监听器监听一个同步代码块,确保每次只有一个线程 *** 作同步代码块,线程在获取锁之前不允许 *** 作同步代码块。
16 什么是死锁(deadlock)多个线程抢占同对方的资源,自己在抢占到对方的资源之前不释放锁,就会造成线程的死锁。
17.如何确保 N 个线程可以访问 N 个资源同时又不导致死锁?有一个简单的方法就是指定获取锁的顺序,线程1优先级高于线程2,就可以避免死锁。
Java 集合类 18.Java 集合类框架的基本接口有哪些?总共用两大集合,collection集合和map集合
其中list集合和set集合继承了collection集合
set是不包含重复的无序集合,list是包含重复的有序集合。
ArrayList类和LinkList类实现了List接口
HashMap和HashTable实现了Map接口
Iterator 接口提供了很多对集合元素进行迭代的方法。在遍历集合的时候可以提供一些remove等方法。
21.Iterator 和 ListIterator 的区别是什么? 22.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? 23.Java 中的 HashMap 的工作原理是什么?Java 中的 HashMap 的工作原理是什么?Hashmap是线程不安全的集合,没有加锁,所以效率比较高,可以存储空元素。
Hashmap的原理就是数组加链表的方式实现的
在像集合中添加数据的时候,会对key哈希,然后二次哈希取值进行比较。
如果没有hash冲突,代表没有这个值,直接存入数组中
如果有hash冲突,如果相同就取代元素,如果不同就插入链表
*插入的时候还会进行比较,如果数组大于8或者链表的长度大于64 就会转化成红黑树,小于6就退化成链表。
这两个方法 的实现对 HashMap 的精确性和正确性是至关重要的
25.HashMap 和 Hashtable 有什么区别? 26.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是 ArrayList?数组是长度是固定的,列表的长度是动态变化的
数组可以包含基本类型和对象,列表只能包含对象
当知道长度而且固定的时候用数组,其他的时候就用列表。
ArrayList和LinkList都实现了List接口
区别就是链表和数组的区别,链表插入快,遍历慢。数组遍历快,插入慢
关于ArrayList的扩容,首先会初始化一个数组,当长度大于初始化的数组时,就会新建一个1.5倍数长度的新数组,复制进去。
垃圾收集器(Garbage Collectors) 35.Java 中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收的目的是回收堆中保存的不在被用到的对象,达到内存的充分利用
垃圾回收 可以程序员手动回收,也可以让虚拟机自动回收,虚拟机的回收算法有两种,一种叫引用计数法一种是寻根计数法。
一般在释放对象占用的内存之前,会调用finalize方法。我们通常将释放的对象所持有的资源放在这个方法中被释放。
38.如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?不会立即的被释放,会在下一次垃圾回收的周期被释放
39.Java 堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?Java中的堆是运行时的数据区,所有的数组和类的实例都i在堆上分配内存,在java虚拟机启动的时候被创建,垃圾回收和我们的性能调优主要针对的就是这块。
40.串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 41.在 Java 中,对象什么时候可以被垃圾回收?当一个对象到GC Roots不可达时,或者说没有任何的引用指向该对象,在下一个垃圾回收周期中尝试回收该对象。
42.JVM 的永久代中会发生垃圾回收么?垃圾回收不会发生在永久代
异常处理 43.Java 中的两种异常类型是什么?他们有什么区别?受检查的和不受检查的两种异常。
44.Java 中 Exception 和 Error 有什么区别?Exception是程序可以处理的异常,可以用异常捕获去处理他们。Error通常是程序中不可以处理的,在运行过程中发生的,让程序异常终止。
45.throw 和 throws 有什么区别? 45.异常处理的时候,finally 代码块的重要性是什么?无聊是否发生异常,finally代码总会被执行,我们通常在这块写资源的是否,比如io和数据库连接等。
JavaWeb 46.什么是 Servlet?Servlet 是用来处理客户端请求并产生动态网页内容的 Java 类。Servlet 主要是用来处 理或者是存储 HTML 表单提交的数据,产生动态内容,在无状态的 HTTP 协议下管理状态信息
47.HTTP 响应的结构是怎么样的?http相应分为三个部分。
状态码;检查是否成功的完成了请求。
头部:指定相应过期时间,响应的编码格式等等。
身体:主体相应内容。
cookie是服务器发送给浏览器的一块信息,每个浏览器都会存储一份自己的cookie信息,再给服务器发生请求的时候会携带所有的cookie信息。
区别:cookie是存储在客户端,session存储在服务端
cook’ie是不安全的,在客户端可能会有cookie欺骗,session是安全的。
单个cookie只能保存4k的内容,浏览器最多20个cookie
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)