Java面试题亲测版(一)

开通帐号半月之久了,一直想发布关于Java资料以及问题供大家学习与讨论,但无奈来公司的这二十多天都在生病,每天回到宿舍已经是精疲力尽了,所以一直没有更新。昨天下午去参加一家国企的招聘,并且顺利通过笔试进入今天的面试,虽然身体仍有不适,但鉴于这些题目的重要性,以及笔试过后公司就把试题收回这一原因,趁热打铁回忆一部分笔试以及面试题供大家参考。面试的是中部地区一家国营企业,该企业在全国一线城市以及日本、新加坡、欧美等地都有分公司或合资公司,所以题目还是很具有参考价值的。(题目不分先后顺序)


一、Servlet 的生命周期:   

1)创建 Servlet 实例。    

2)Web 容器调用 Servlet 的 init() 方法,对Servlet 进行初始化。    

3)Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。根据客户端的请求方式通过Servlet中service()方法去相应的doXXX()方法;    

4)Web 容器销毁Servlet 时,调用 Servlet 的 destroy() 方法,通常在关闭Web容器之时销毁Servlet。


二、用sql语句分页:

Mysql数据库:

SELECT TOP 页大小 *  FROM table1  WHERE id NOT IN (SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id)  ORDER BY id ;

Oracle数据库:

在ORACLE大数据量下的分页解决方法,一般用截取ID方法,还有是三层嵌套方法。

截取ID的方法

select * from emp a, (select empno,rownum as num from emp)b  where a.empno=b.empno and b.num between 5 and 7;

三层嵌套

SELECT * FROM ( SELECT A.*, rownum r  FROM  ( SELECT *  FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;


三、final,finally,finalize的区别

       final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 

        finally:在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 

        finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 ;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。


四、String 和StringBuffer的区别

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。


五、forward与redirect 的区别?有哪些方式实现

1)<jsp:forward>重定向后url地址栏地址不变还是原来的地址;而response.sendRedirect()重定向后url地址栏地址显示的请求后的新地址。

2)<jsp:forward>重定向的时候可以保存会话信息,因此可以使用request来进行参数传递,在新页面可以使用request.getAttribute ()来得到参数。而response.sendRedirect()不支持此通过request进行参数传递。它唯一的传值方式为response.sendRedirect(“example.jsp?aa=123”),在新的页面通过request.getParameter(“aa”)来得到参数值。


六、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people

where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)

and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)


七、静态变量和实例变量的区别? 

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。


八、jsp有哪些内置对象?作用分别是什么? 分别有什么方法? 

答:JSP共有以下9个内置的对象: 

request 用户端请求,此请求会包含来自GET/POST请求的参数 

response 网页传回用户端的回应 

pageContext 网页的属性是在这里管理 

session 与请求有关的会话期 

application :servlet正在执行的内容 

out 用来传送回应的输出 

config :servlet的构架部件 

page :JSP网页本身 

exception 针对错误网页,未捕捉的例外 


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实例 


九、abstract class和interface有什么区别?

含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体子类中实现。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

下面比较一下两者的语法区别:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7. 一个类可以实现多个接口,但只能继承一个抽象类。


结束语:万事开头难,今天发布第一篇文章,日后定会及时发布与Java相关的一切干货,敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值