java面试问题及答案
Java面试问题对于Java程序员来说很重要,想要取得面试成功,提前了解面试题目很重要,以下是帮你们的java面试问题及答案,一起来学习啦。
1.Java语言中public、private、protected三个关键字的用法,重载和重写的区别。
作用域当前类同包子类其他
Public √ √ √ √
Protected √ √ √ ×
Private √ × × ×
Friendlly √ √ × ×
重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同,访问权限不能更封闭,抛出异常不能宽泛;
重写:发生在同一个类中,方法名相同,单参数不同(类型不同或个数不同或参数的顺序不同),返回值
可以不相同。
2.JSP页面之间传递参数的方法有哪些?
1)Request
2)Session
3)Application
4)提交表单
5)超链接
3.Forward和redirect的区别?
Forword是容器中控制权的转向,是效劳器请求资源,效劳器
直接访问目标地址的URL。把那个URL的响应内容读取过来,然后
吧这些内容在转发给浏览器,浏览器根本不知道效劳器发送的内容是从哪里来的,所以它的地址栏中还是原来的地址。
Redirect就是效劳器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚刚请求的所有参数重新请求,并且从浏览器的地址栏中可以看到跳转后的。前者更加高效,在前者可以满足需要时,尽量使用forword()方法,并且这样也有助于隐藏实际的连接;在有些情况下,比方,需要跳转到一个其他效劳器上的资源,那么必须使用sendRedirect()方法。
4.Java反射机制的作用?
1)在运行时判断任意一个对象所属的类
2)在运行时构造任意一个类的对象
3)在运行时判断任意一个类所具有的成员变量的方法
4)在运行时调用任意一个对象的方法
5.你是怎样理解java的泛型的?
在JavaSE1.5之前,没有反省的情况下,通过对类型Object的应用来实现参数的“任意化”,“任意化”带来的缺点是要做现实的强制类型的转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进展的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现的异常,这是一个平安隐患。
泛型是JaveSE1.5的特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定一个参数。这种参数类型可以用在类、接口和方法的创立中,分别称之为泛型类、泛型接口、泛型方法。
反省的好处是编译的时候检查类型平安,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
java重写和重载的区别6.Java源文件中是否可以包含多个类,有什么限制?
一个java源文件可以包含多个类,每个源文件之多有一个public类。如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,那么源文件用什么名字都可以,但是最好还是具有特定的意义,免得自己都不记得里面写的是什么了。
1.在Java中,List是一个借口,那实现List接口的类有哪些,有什么区别?
ArrayList是使用数组方式存储数据,此数组元素大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。
LinkedList使用双向链表实现存储,按序号索引数据需要进展前向或者后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
2.Char类型能否存储一个中文字符?为什么?
可以。一个char是两个字节,而一个中文也是两个字节。
3.Switch选择语句能否作用在String[字符串]上,也就是能否这么写:switch(一个字符串变量)?
不可以,只能处理 int、byte、short、char(其实是只能处理int,其他三种是可以promotion到int类型),不能处理String.
4.关键字final分别修饰一个类,一个方法,一个变量,各起什么作用?
Final修饰类是不能被继承,final修饰方法不能在子类中被覆盖,final修饰变量,称之为常量,初始化以后不能改变值。
5.启动一个县城是用run()还是start();
Start();
6.是否可以继承String类?
不可以。因为String类有final修饰
7.Java异常处理中,try{}里有一个return语句那么紧跟在这
个try后的finally{}里面的code会不会被执行,什么时候被执
行,在return前还是后?
会执行,在return之前
8.EJB包含哪3中bean?
Session bean(会话bean),entity bean(实体bean),message bean(消息bean)
1.Class.forName(String className)这个方法的作用?
通过类的全名获得该类的类对象
2.你认为在表上建立索引可以提高数据库系统的效率吗?为什么?
不一定。建立太多的索引将会影响更新和插入的速度,因为他
需要同样更新每个索引文件。对于一个经常需要更新和插入的表
格,就没有必要为一个甚少使用的where字句单独建立索引,对于
比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
3.Hibernate中的java对象有几种状态,其相互关系如何(区
别和相互转换)。
在hibernate中,对象有三种状态:临时状态、持久状态和游
离状态。
临时状态:当new一个实体对象后,这个对象处于临时状态,
即这个对象只是一个保存临时数据的内存区域,,如果没有变量引用
这个对象,那么会被jre垃圾回收机制回收掉。这个对象所保存的
数据与数据库没有任何关系,除非通过session的sava或是savaorupdate把临时对象与数据库关联,并把数据插入或者更新到
数据库,这个对象才转换为持久对象。持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化现象进展delete操作,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。
游离状态:当session进展了close,clear或者evict后,持久化对象虽然用于持久化标识符和数据库对应记录一致的值,但是因为会话已经失效,对象不再持久化管理之内,所有处于游离状态。(也叫托管状态)。游离状态的对象与临时状态对象是十分相似的,只是他还含有持久化标识。
4.对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的?
延迟加载就是并不是在读取的时候把数据加载进来,而是等到使用时再加载。那么Hibernate是怎么知道用户在什么时候使用数据了呢?又是如何加载数据呢?其实很简单,他使用了代理机制。返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时释放了。这种情况就叫做未初始化的关系。
延迟加载与session关闭的矛盾一般可以这样处理:
1)关闭延迟加载特性
操作起来比较简单,因为hibernate的延迟加载特性实在hbm 配置里面可控制的。默认lazy=”true”,集体配置可以查看一下相关文档,就不详细表达了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。