面试题01
1、jvm加载class文件原理机制
答:jvm中类的装载是由classLoader和它的子类来实现的,java ClassLoader是一个重要的java运行时系统组件,它负责在运行时查找和装入类文件的类。
2、简述Servlet生命周期
答:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
3、jsp和Servlet有哪些相同点,那些不同点?
答:jsp是servlet技术的扩展,本质上是servlet的简易方式,更强调应用的外表表达。jsp编译后是"类servlet"。servlet和jsp最主要的不同点在于,servlet的应用逻辑在java中,并且完全从表示层中的HTML里分离开来。而JSP的情况是java和HTML可以组合成一个.jsp的文件。jsp侧重于视图,servlet主要用于控制逻辑。
4、jsp中数据传递到页面有哪几种方法?
答:request、session、application、cookie
5、各自简述final、finally、finalize的基本作用
答:final--用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally--是异常处理语句结构的一部分,表示总是执行
finalize--是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集的其他资源回收,例如关闭文件等。
6、JDBC连接数据库的完成代码
答:Class.forName("驱动类的名称");-------加载驱动
Connection con=DriverManager.getConnection("数据库连接字符串","数据库用户名","密码");--------与数据库连接
Statement stmt=con.createStatement();
Resulte rs=stmt.executeQuery("SQL查询语句");--发送sql语句,并得到返回结果
while(rs.next()){int id=rs.getInt(id)}----处理返回结果
7、写一个方法,实现字符串的反转,如:输入abc输出cba.
答:public class Test{
public static void main(String[]ags){
String a="abc";
char s[]=a.toCharArray();
for(int i=s.length-1;i>=0;i--){
System.out.println(s[i]);
}
}
}
8、简述servlet和cgi的区别
答:与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务与多个请求,并且其实例一般不会销毁,而cgi对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
9、SingleTon(单态)模式?
答:SingleTon模式主要作用是保证在java应用程序中,一个类Class只有一个实例的存在。
10、作用域public、private、protected以及不写时的区别?
答:public定义的类、方法和属性其他类可以调用使用
private定义的类、方法和属性其他类不允许调用,它只能在本类中使用
protected定义的类、方法和属性与它同包可见+不同包的子类可见
11、分别写出下面运算结果,直接写在“----”后面
答:alert(typeof(null))----object alert(typeof(undefined))-----undefined
alert(typeof(NaN))-----number alert(NaN==undefined)-----false
alert(NaN==NaN)-----false
var str="123abc"
alert(typeof(str++))----number alert(str)----NaN
12、面向对象的特征有哪些方面
答:继承:派生类可以从它的基类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更合适特殊的需要。
封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
多态性:多态性是指允许不同类的对象对同一个消息作出响应。多态性包括参数化多态性和包含多态性。
13、String是最基本的数据类型嘛?
答:基本数据类型包byte、int、char、long、float、double、boolean、short。java.lang.String类是final类型,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该使用StringBuffer类。
14、String和StringBuffer的区别?
答:它们可以存储和操作字符串,即包含多个字符数据,这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变时你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符串。
15、说出ArrayList、Vector、LinkedList的存储性能和特征
答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
16、Collection和Collections的区别?
答:Connection是集合类的上级接口,继承与他的接口主要有Set和List
Collections是针对集合类的一个帮助类、他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。
17、&和&&的区别?
答:&是位运算符,表示按位运算,&&是逻辑运算符,表示逻辑与(and).
18、Sleep()和wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
19、Overload和Override的区别。Overloaded的方法是否可以改变返回值类型
答:重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
20、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
答:SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。
EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。
21、数组有没有length()这个方法?String有没有Length()这个方法?
答:数组没有length()这个方法,有length的属性。String有Length()这个方法。
22、构造器Constructor是否可被Override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
23、请说出你所知道的线程同步的方法?
答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
24、多线程有几种实现方法,都有什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
25、JSP的内置对象及方法?
答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,提供了用于获取cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)
out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet实例