主要是自己什么都不怎么会。在这里可以学习很多的!
第一天看题自己回答,第二天看牛客网的答案!
1什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
看到这个问题的时候,我首先想到了JVM.接着看平台无关的编程语言。对这个问题我还真不知道。
2JDK和JRE的区别是什么?
JDK--->JAVA开发工具包;JRE--->JAVA运行环境JDK包含了JRE
3”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
静态
4是否可以在static环境中访问非static变量?
不可以
5Java支持的数据类型有哪些?什么是自动拆装箱?
8种charbyteshortintlongfloatdoubleboolean装箱int---》Integerdouble--->Double...拆箱就反过来!
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
1)Java虚拟机(JVM)是JavaVirtualMachine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机可以执行Java字节码的一个虚拟机进程。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。(这个实在是。。。。。)
2)
JRE:Java运行时环境是将要执行Java程序的Java虚拟机。(它同时也包含了执行applet需要的浏览器插件。这个不太了解)
JDK:Java开发工具包含了JRE,编译器和其他的工具(JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。
3)
static:静态
静态成员为类的所有对象共享;静态方法中,只能直接调用静态成员。
4)
不可以!
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。
5)
charbyteshortintlongfloatdoubleboolean
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化char--》Char、byte---》Byte、short---》Short、int-->Integer、long--->Long、float--->Float、double-->Double、boolean-->Boolean
====================================================================================
6Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
方法覆盖我们讲的方法重写:子类对父类方法的重写,方法名,参数列表,返回类型必须相同
方法重载:在一个类中,方法名相同,参数类表不同,返回值可以相同可以不同。
7Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
构造函数:又称构造器,对象实例化是使用,构造器的名称必须与类名相同。在没有写有参构造函数的时候,java编译器会自动默认一个无参构造器。
构造函数重载:,方法名相同,参数类表不同。
复制构造函数??
8Java支持多继承么?
不支持,只能是单继承!
9接口和抽象类的区别是什么?
关键词
接口:多实现抽象方法变量默认修饰符是finall方法默认public
抽象类:单继承既可以是抽象方法也可以有普通方法可以包含非finall变量方法可以是private,protected或者是public
10什么是值传递和引用传递?
终于遇到这个问题了!
值传递:对象的一个副本
引用传递:对象的引用,地址。
6)方法覆盖(Overriding):方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。
方法重载(Overloading):Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
7)
构造函数:当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
构造函数重载:Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
9)
10)
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
============================================================================================
11进程和线程的区别是什么?
进程:执行的应用程序,一个进程可以包含多个线程。
线程:是在进程内部执行的一个程序。
12创建线程有几种不同的方式?你喜欢哪一种?为什么?
两种:实现runnable接口,继承thread类。
我喜欢实现runnable接口,java不支持多继承。
new创建线程runnable可运行状态running运行状态blocked阻塞dead死亡
14同步方法和同步代码块的区别是什么?
15在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
11)
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
12)
有三种方式可以用来创建线程:继承Thread类实现Runnable接口应用程序可以使用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。
13)
14)
===============================================================================================================
16什么是死锁(deadlock)?
两个线程在互相的等待中,并且是一直在等待。
18Java集合类框架的基本接口有哪些?
Collection工具ListMapSet
19为什么集合类没有实现Cloneable和Serializable接口?
克隆序列化都是针对的某个实体对象。
20什么是迭代器(Iterator)?
循环
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
16)两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。
17)使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
18)
集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:Collection:代表一组对象,每一个对象都是它的子元素。Set:不包含重复元素的Collection。List:有顺序的collection,并且可以包含重复元素。Map:可以把键(key)映射到值(value)的对象,键不能重复。
20)Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的
=================================================================================================================
21Iterator和ListIterator的区别是什么?
没遇见过
22快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
这个没遇过
23Java中的HashMap的工作原理是什么?
键值对的形式
24hashCode()和equals()方法的重要性体现在什么地方?
hashCode():
equals:
25HashMap和Hashtable有什么区别?
都实现了Map接口
HashMap:允许键、值都为null,线程不安全。
Hashtable:不允许键或者是值为null,线程安全
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
21)
Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
22)
Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。
23)
Java中的HashMap是以键值对(key-value)的形式存储元素的。
HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重要的特性是它的容量(capacity),负载因子(loadfactor)和扩容极限(thresholdresizing)。
24)
Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。
25)
HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:HashMap允许键和值是null,而Hashtable不允许键或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。一般认为Hashtable是一个遗留的类。
======================================================================================================================
26数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
Array:包含基本类型和对象类型。
ArrayList:值包含对象类型的。
Array使用:对于一些基本的固定的数据的时候。
ArrayList使用:对于集合对象。
我感觉说不清楚,但是自己的用的时候知道什么地方用哪个!(语言表达能力有待提高)
27ArrayList和LinkedList有什么区别?
相同的是都实现了List接口。
ArrayList:基于动态数组的数据结构;对于数据访问的时候ArrayList比较快。
LinkedList:基于链表的数据结构;对于书记的增删改LinkedList比较快一些。
28Comparable和Comparator接口是干什么的?列出它们的区别
29什么是Java优先级队列(PriorityQueue)?
(这个不清楚)
30你了解大O符号(big-Onotation)么?你能给出不同数据结构的例子么?
(一点都不了解)
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
26)
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
27)
28)
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。
29)
30)
===================================================================================================================
以下的就是我自己的理解了!就没有参考答案了!
31Java中Exception和Error有什么区别?
Execption:是用于用户程序的捕获的异常。
Error:这个是不需要用户程序捕获的异常。
32throw和throws有什么区别?
33finally代码块和finalize()方法有什么区别?finally:一般和try-catch-finally一起使用,用于释放资源。
finalize():是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。
34什么是JDBC?
35解释下驱动(Driver)在JDBC中的角色?
JDBC驱动提供了特定厂商对JDBCAPI接口类的实现,驱动必须要提供java.sql包下面这些类的实现:Connection,Statement,PreparedStatement,CallableStatement,ResultSet和Driver。
36解释下Servlet的生命周期?
初始化(init())服务(service())销毁(destory())
37doGet()方法和doPost()方法有什么区别?
doGet():地址栏会显示路径路径参数有一定的限制
doPost():地址栏不显示路径无限制
38浏览器和Servlet通信使用的是什么协议?
HTTP
39HTTP响应的结构是怎么样的?
HTTP响应里又包含状态行,响应码,空行,消息体。
40什么是cookie?session和cookie有什么区别?
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下面列出了session和cookie的区别:无论客户端浏览器做怎么样的设置,session都应该能正常工作。客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法禁用服务端的session。在存储的数据量方面session和cookies也是不一样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。
===========================================================================================================================