部分java面试常问问题及答案

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java面试题

java面向对象的特点:

1.抽象:

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。

2.继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

3.封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。

4. 多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。

说出Servlet的生命周期:

web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet 的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

final, finally的区别:

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

String 和StringBuffer、StringBuilder的区别:

String是长度不可变的字符串。

StringBuffer是长度可变的字符串,如果对字符串中的内容经常进行操作,特别是内容需要修改时,使用StringBuffer,最后使用toString()方法,StringBuffer 是线程安全的。

StringBuilder是JDK5以后补充的一个StringBuffer的等价类,StringBuilder不是线程安全的。

运行时异常与一般异常有何异同:

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

Collection 和Collections的区别:

Collection是集合类的上级接口,继承于他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

sleep() 和wait() 有什么区别:

sleep是线程类(Thread)的方法,导致此线程暂停执行,指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

error和exception有什么区别:

Error:错误,通常都是虚拟机级别的异常。程序(通过我们的代码)无法解决。Exception:异常,程序级别的异常。

我们可以通过代码的形式捕获异常,并进行相应的处理。

什么是MVC:

MVC是模型(model)-视图(view)-控制器(controller)的缩写,

模型(model)的职责是负责业务逻辑的。包含业务数据和业务处理逻辑两部分。视图(view)的职责是负责显示界面和用户交互。

控制器(controller)是模型层M和视图层V之间的桥梁,用于控制流程。

JSP有几个隐含对象,都是什么隐含对象:

1、out 它用于发送输出流到客户端。

2、request 它被关联到每一个HTTP请求。

3、response 用于把取得的数据返回到客户端。

4、pageContext 提供访问JSP页面的命名空间。

5、session 用于存储客户端请求的信息,因此它是有状态交互式的。

6、application 来源于javax.servlet.ServletContext。

7、config 包含了当前JSP/Servlet所在的WEB应用的配置信息。

8、page 实际使用的是JSP转换成的Servlet。

9、exception 用于捕获JSP抛出的异常。

抽象类是否可以实现接口,是否可以继承实体类:

抽象类可以实现接口中的方法,也可以继承实体类。

String是最基本的数据类型吗:

基本数据类型包括byte、int、char、long、float、double、boolean和short。String类是final类型的,因此不可以继承这个类、不能修改这个类。

struts2的工作原理:

1.客户发送一个Action请求,请求交给控制器

2.控制器创建一个ValueStack,将Action压入栈顶

3.控制器调用ActionInvoaction组件执行请求处理

4. ActionInvoaction组件调用请求相关的拦截器组件--前部分处理

5.然后再调用Action组件业务方法

6.然后再调用Result组件处理方法。

7.最后执行拦截器组件--后部分处理

8.将响应信息输出,为客户端响应

重载和重写的差别:

重载:方法明相同,参数不同的方法,根据"参数的类型"调用相应的方法

重写:一定发生在子类型中!是子类型对父类型的功能(方法)修改子类型定义与父类型方法名称一样,参数一样.子类重写方法的时候,修饰词只能放大范围,不能缩小。调用规则:在'运行期间','动态绑定''对象'的类型的方法。

三种程序结构分别是什么:

顺序、分支、循环

break和continue的作用分别是什么:

break用在循环体中,用于退出循环体。

continue用在循环体中,用于结束本次循环,开始下一个循环。

do-while与while结构的区别:

如果循环条件一开始就不满足时,while结构将不会执行循环体,do-while结构执行一次循环体。

JVM内存结构中,堆、栈、方法区分别存储什么:

堆中存储的是对象,栈中存储局部变量,方法区存储的是字节码。

equals和 == 区别:

equals比较的是字符串是否相同。==不仅比较的字符串是否相同,还比较数据类型是否相同

请说出ArrayList,Vector, LinkedList的存储性能和特性。

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

相关文档
最新文档