1. Error和Exception的区别?
Error表示系统级的错误和程序不必处理的错误;
Exception表示需要捕获和程序进行处理的异常;
2.堆和栈有什么区别?
栈是一种线性结构,后进先出,增加和删除在同一端;堆是栈的一个组成元素;
堆是用来new创建出来的对象和数组的空间,栈是存放基本数据类型的变量和引用的内存空间;
栈中的变量,超过变量的作用域范围,就会被回收内存空间;堆中的内存则是由Java虚拟机的垃圾回收器来回收,只有当内存不够的时候,垃圾收集器会回收堆的内存空间;
3.throw和throws的区别?
throws是声明一个方法可能抛出的异常,throw是抛出具体的异常。throws用于方法声明的后面,throw则用于方法方法的内部来抛出异常;
throws表示当前方法不需要捕获的异常,由系统重新抛出给方法的调用者;throw是捕获异常,重新封装后抛出上一级;
4.super和this的区别?
Java虚拟机会为当前类的对象分配一个指向自身的指针,this就是这个对象的默认引用;需要用到this的情况:
调用本类的一个构造方法;
局部变量和成员变量同名的时候,要用this.num的方式来调用成员变量;
访问当前方法的引用;
super是指向父类的应用。下面是要用到super的情况:
调用父类的构造方法,通过super来调用;
在子类访问父类被屏蔽的方法和属性;
5.类的初始化机制?
创建类的实例;
调用类的静态方法;
访问某个类的或接口的静态变量;
调用Java API的某些反射方法;
初始化一个类的子类;
启动类。
6.构造方法的特点?
没有返回值;
方法名和类名相同;
不能被static,final,synchronized,native等修饰;
不能显式调用构造方法;
7.垃圾回收的优点和缺点?
把程序员从复杂的内存的跟踪,检测,释放中解放出来,
防止内存泄露,提高程序的健壮性;
程序中的对象只有不被引用变量引用的时候,才可以回收;
程序无法迫使垃圾收集器回收内存;
当垃圾收集器要回收这个对象的内存的时候,会调用finalize方法,但是调用这个方法可能会导致这个对象复活。
8.异常处理机制?
把异常分类,用Java类来表示异常;
把异常的代码和正常的流程分开,提高程序的可读性,简化结构;
灵活处理异常,当前可以处理的异常就处理,不能处理的异常抛出给调用者处理;
滥用异常会降低程序的性能;
过多使用异常会影响程序的可读性;
容易覆盖程序的错误,影响调试;
用异常来表示正确的情况,违背了异常的处理机制。
9.异常的处理原则?
异常只能用于非正常的情况;
为异常提供说明文档;
尽可能避免运行性异常;
保持异常的原子性;
避免过于庞大的try代码块;
catch最好跟具体的异常;
不雅忽略catch捕获的异常。
10.Java的异常处理机制和简答应用?
当违反Java的语义规则的时候,Java虚拟机就会错误表示一个异常。Java的违背语义规则有两种情况:
一种是Java内置的类库的语义检查,如数组越界,null异常;
另一种是程序员扩充语义检查,自定义异常,在适当的地方和适当的时候抛出异常。
11.接口的特征
接口的变量时静态常量,默认是用public static final来修饰;
接口中的方法是公有的抽象方法,用public abstract来修饰;
接口中不能有构造函数;
一个只能继承一个父类,但是可以实现多个接口;
不允许创建一个接口的实例。
12.抽象类和接口的区别?
都代表系统的抽象层;
不能被实例化;
都可以有抽象的方法;
一个类可以有实现多个接口,但是只能继承一个类;
抽象类可以与构造函数,但是接口不能有构造函数;
类代表的是is a的关系,接口代表的是has a的关系;
接口的变量都是公有的静态常量,但是抽象类可有各种类型的变量;
接口中的方法必须是抽象的,但是抽象类的方法可以有实现;
13.static的用法?
static代表内存中只有一份拷贝,所有的额对象实例共用这一份内存;
static的变量和方法可以用类名去访问;
不能用abstract来修饰静态变量和方法;
静态方法不能使用this,super的关键字;
静态方法不可以使用成员函数和成员变量;
在类加载的时候,静态变量会被加载一次,加载的顺序和静态代码块的顺序有关。
14 abstract的使用?
abstract修饰类,表示这个是抽象类,可有抽象方法,但是抽象类不能被实例化;
abstract修饰方法,表示这个方法是抽象方法,抽象方法只有声明,没有方法体;
抽象类和抽象方法不能被final修饰;
15.多态有什么特征?
对于引用类型的变量,编译器按照它声明的类型处理;
对于引用类型的变量,运行时Java虚拟机根据它实际引用的类型来处理;
实例方法和运行时候的实际类型的方法绑定,属于动态绑定,因为运行的时候由Java虚拟机决定的;
静态方法和引用变量所声明的类型的方法绑定,属于静态绑定,因为在编译的时候已经决定了;
成员变量和所声明的类型的变量绑定,属于静态绑定,因为在编译的时候已经决定了。
16.静态内部类和内部类的区别?
静态内部类不依赖于外部类被实例化,而普通的内部类依赖于外部类的实例化。
17.什么是GC?
GC是垃圾回收器,内存是编程人员很容易出现问题的地方,忘记或者错误的内存管理会导致程序不稳定甚至奔溃,
Java的GC功能可以自动检测对象是否超过作用域而达到自动回收内存的目的,
18.length()和length?
数组有length;String有length()的方法;
19.Java中的内置异常原理?
当违反Java的语义时候,Java的虚拟机就会抛出异常。一种是Java的内置语义检查,一种是程序员扩充的语义检查,如创建自己的异常类。
20.Java虚拟机加载Class文件的机制和原理?
JVm的类加载是由classLoader和它的子类来完成,在运行的时候查找和加载类。
21.简述Synchronized和lock的异同?
lock可以实现synchronized的功能;
lock可以比synchronized有更好的线程语义和线程性能;
synchronized自动释放内置的锁,Lock要手工释放锁;
22.Java如何进行异常处理?
Java通过面向对象的方法进行异常处理,把各种不同的异常分类,提供了良好的接口。Java中每一个异常都是对象,它是Throwable类和它的子类。
当方法遇到异常的时候,JVM就会生成一个异常类,可以通过调用这个异常类的方法来对异常进行处理。
23.Java的可序列化?
序列化是一种处理对象流的机制,为了解决在对象流进行读写所产生的问题。
24.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括SessionBean,EntityBean和Message Driven Bean,基于JNDI、RMI、JAT等技术实现。
实体Bean代表系统要用到的数据;
SessionBean是J2EE应用程序用来完成服务器端的一些业务操作,例如访问数据库,调用其它EJB组件;
25.JSP中动态INCLUDE与静态INCLUDE的区别?
静态INCLUDE不会检查文件的变化,把文件插入到页面执行,<@ include="index.html">
动态INCLUDE包含的是一个动态文件,相当于调用,就是那个文件编译执行,返回结果,可以传递参数,会检查文件的变化。
26.JavaBean和EJB的区别?
JavaBean是可重用的组件,对于JavaBean没有严格的规范,理论上,任何一个Java类都可以是JavaBean。JavaBean一般是由如Tomcat这样的容器创建,
要有一个无参数的构造函数,要实现Serialable接口。EJB是分布式组件,它是基于Java的远程调用技术实现的。EJB容器是EJB的远程代理。
27.EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
SessionBean的生命周期是由容器决定的;
EntityBean存活时间较长,并且是连续的,只要数据库中的数据存在,EntityBean就存在。
28.数据连接池的工作机制是什么?
J2EE的服务器启动的时候,会启动一定数目的连接,并且维护不少于此数目的连接。当有连接到来的时候,连接池驱动程序会返回一个未使用的连接并标记为
忙。如果当前没有空连接,连接池会新建一个连接,标记为忙。当池连接调用完之后,又会重新标记为空闲。
29.JSP的内置对象及方法?
request表示HttpServletRequest,包含了所有浏览器的请求信息,提供了获取Cookie,Session和Header的方法;
response表示HttpServletResponse,包含了处理请求的相应方法;
out是JspWriter的一个实例,提供了几个向浏览器返回结果的方法;
session是用于保存用户会话的信息;
aplication表示一个ServletContext对象,有利于查找servlet引擎和servlet环境的信息;
config表示ServletConfig,用于初始化存取Servlet实例化的参数;
page表示一个Servlet的实例。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
30.jsp的常用指令?
<%@ page language="java" contentType="text/html;charset="UTF-8" pageContext="UTF-8">
<%@ include="path">
<%@ taglib prefix="tagPrefix" uri="tagURI">
31.页面间对象传递的方法
request,session,application,cookie
32.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
jsp的本质是Servlet,翻译后就是类Servlet文件;
Servlet只有Java代码,逻辑清晰,用于逻辑控制;jsp由HTML和Java代码显示,用于试图显示。
33.四种会话跟踪技术?
page代表页面相关的对象和属性;
request代表一个请求相关的对象和属性;
Session代表会话相关的对象和属性,可以跨多个请求;
Application代表整个应用程序相关的对象和属性。
34.排序都有哪几种方法?请列举。用JAVA实现一个快速排序.
/ /使用快速排序方法对a[ 0 :n- 1 ]排序
从a[0:n-1]选取一个数值为middle,作为支点;
把剩下的元素分割为两段left和right,使得left那段的元素小于middle,right那段的元素大于middle;
递归地使用快排对left段的元素排序;
递归地使用快排对right段的元素排序;
35.请对以下在J2EE中常用的名词进行解释(或简单描述)
web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。
JNDI:(Java Naming & Directory Interface)JAVA命名目录服务:提供一个目录系统,让其他的应用程序在上面留下一个自己的索引,满足快速查找和定位
分布式应用程序的功能;
JMS:(Java Message Service)JAVA消息服务:用于应用程序之间的通讯;
JTA:(Java Transaction API)JAVA事务服务:提供分布式事务管理;
JAF:(Java Action FrameWork)JAVA安全认证框架;
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。
36.J2EE是什么?
J2EE是sun提出来的多层,分布式,基于组件的企业级应用模型。它包括客户层,web层,Business层,企业信息系统层。
37.BS和CS的区别和联系?
C/S是Client/Server的缩写,B/S是Brower/Server的缩写。
硬件环境不同: 局域网和广域网;
对安全要求不同:
程序架构不同:
软件重用不同:
系统维护不同:
用户接口不同