JavaEE面试题

时间:2024.4.13

26、空字符串("")和null的区别?

答:空字符串是 String类的一个对象,而null是指一个引用变量没有引用对象,在值为null的引用变量上调用方法或变量,将会导致 NullPointerException。通过以下代码来验证变量x是否为null,x == null,通过"".equals(x)来验证x是否为空字符串。

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

答:静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。

24、当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对?

答:对。但是在Java中建议,当x.equals(y)等于true时,x.hashCode()与y.hashCode()也相等。

23、列举几个常见的RuntimeException的子类?

答:ArithmeticException、NullPointerException、IndexOutOfBoundsException、ClassCastException、ArrayStoreException

22、Java有没有goto?

答:Java没有使用goto关键字,但它是Java的保留字。

21、在Java中char类型的变量占用几个字节?char类型的变量能不能存储一个中文汉字?

答:在Java中char类型的变量占用2个字节,char类型变量采用Unicode编码。可以存储一个汉字,但不是所有的汉字都能存储,你想想,汉字至少10万个,而Unicode占用两个字节,最多能存储6万多个。

20、有如下代码:

try {

代码1

return 1;

}finally{

代码2

return 2;

}

问,代码2是否会被执行?若会被执行,是try里的return语句先执行还是finally里的代码先执行?最后该代码片段的返回值是1还是2? 答:代码2会被执行,因为finally里的代码总会被执行。

finally里的代码会在return 1;之后被执行。

既然finally里的代码会在return 1;之后被执行,所以return 2;覆盖return 1;返回2。

19、有如下方法的定义:

public static int getNumber(int a){

int b = 0;

try {

b = 10/a;

return b;

} catch (Exception ex) {

b = 100;

return b;

}finally{

b = 1000;

return b;

}

}

在main方法中调用以上方法,如下: System.out.println(getNumber(10)); System.out.println(getNumber(0)); 结果是多少?

答:1000 和 1000 。

18、有如下方法的定义:

public static int getNumber(int a){

int b = 0;

try {

b = 10/a;

return b;

} catch (Exception ex) {

b = 100;

return b;

}

}

在main方法中调用以上方法,如下: System.out.println(getNumber(10)); System.out.println(getNumber(0)); 结果是多少?

答:1 和 100 。

17、用最有效率的方法算出2乘以8等於几?

答:用位运算,2<<3

16、switch能否作用在byte上,能否作用在long上,能否作用在String上?

答:能作用在byte上,不能作用在long或String上。

15、Math.round(11.5)等于多少? Math.round(-11.5)等于多少? Math.round(-11.7)等于多少? Math.round(11.3)等于多少?

答:Math.round(11.3) 等于 11

Math.round(11.5) 等于 12

Math.round(-11.5) 等于 -11

Math.round(-11.7) 等于 -12

速记:距离11.3最近的整数,是11。距离11.5最近的整数,有两个11和12,取大。距离-11.7最近的整数,是-12(别告诉我是-11)。距离-11.5最近的整数,有两个-11和-12,取大-11(也别和我说-12比-11大)。

14、解释一下&和&&的区别?

答:&和&&都可以作为逻辑运算符,但还是有区别的,&&是短路与。单独运行以下两行代码:

System.out.println(false & (1/0 == 0)); 抛出异常

System.out.println(false && (1/0 == 0)); 打印出false

&作为逻辑运算符时,即使第一个操作符是false,那么它仍然会计算第二个操作符。&&短路与,如果第一个操作符为false,那么它不会再去

计算第二个操作符。另外&还是一个按位与运算符,请看以下代码: System.out.println(5 & 4); 打印出4,结果怎样计算呢?将它们转换成二进制数据,一目了然。

00000101 & 00000100 = 00000100

13、解释一下int和Integer有什么区别?

答:int 是原始数据类型,而Integer是引用数据类型,是int的包装类。Java中的八种原始数据类型都有对应的包装类,boolean-- Boolean char--Character byte--Byte short--Short long--Long float--Float double--Double。int和Integer是可以相互转换的如:

int a = 1; Integer in = new Integer(a);

Integer in = new Integer(10); int i = in.intValue(); 支持自动包装和自动解包,以下代码与以上完成相同的功能: int a = 1; Integer b = a;

Integer c= new Integer(10); int d = c;

12、介绍什么是JDK?什么是JRE?

答:有关JDK的介绍,点此链接参见 JRE是Java的运行环境,不包含编译、调试环境。如果你只是运行一个Java程序,那么安装JRE就够用了。

11、一个Java源文件中是否可以定义多个类?接口和类是否可以定义在一个源文件中?

答:一个源文件中可以定义多个类,但只能有一个类是public。接口和类也可以定义在一个源文件中,同样也只能有一个是public。

10、String、StringBuffer、StringBuilder有什么区别?

答:String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。StringBuffer是字符串缓存区,它的内容可以被修 改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。

9、short s1 = 1;s1 = s1 + 1;是否有错?short s1 = 1;s1 += 1;是否有错? 答:short s1 = 1;s1 = s1 + 1;有错误,s1 + 1 是int类型,不能赋值给short类型。short s1 = 1;s1 += 1;正确。

8、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类(非抽象类)?一个类是否可以继承多个类?

答:接口可以继承接口,但是只能继承一个。

抽象类可以实现接口。

抽象类可以继承实体类。

一个类不可以继承多个类,Java只允许单一继承,可以实现多个接

口。

7、一个类的构造方法是否可以被重载(overloading),是否可以被子类重写(overriding)?

答:构造方法可以被重载,但是构造方法不能被重写,子类也不能继承到父类的构造方法。

6、如何防止一个类被其它类继承?

答:定义一个类时将该类声明为final class。

或者将此类的所有构造方位声明为private。

5、如何获得静态数组的长度?如何获得字符串的长度?

答:使用数组变量的length属性。使用字符串变量的length()方法。

4、谈一谈final关键字的作用?

答:final class 表示此类不允许有子类。

final virable 表示一个常量。

final method 表示一个方法不能被重写。

3、String类是否可以被继承?

答:String 类是final类,不可以被继承。

2、Java语言中有哪些基本数据类型,String是不是基本数据类型? 答:有八种基本数据类型(有的资料也称为原始数据类型),分别是byte short int long float double boolean char。String不是基本数据类型,是引用数据类型。

1、面向对象编程的三个基本特性是什么?

答:封装、继承和多态。

5、介绍一下数据库连接池的优点和原理?

答:作用:提高程序的运行效率,能够支持更多的用户。方便监视连接的数量和使用情况。原理:在应用程序启动时建立一定数量的连接,并将这些连接通过某种机制组成一个池,当应用程序需要连接时可以动态的从池中获取或向池中释放连接。

4、web.xml文件的作用是什么?

答:web.xml文件是WEB应用程序配置文件,存放了JSP、Servlet、Listener、Filter、错误页面、安全约束等信息。

3、JSP页面中errorPage的作用是什么?

答:可以给一个页面定义异常页面,这样当该页面发生异常时,就会调用异常页面,有两种方式定义异常页面:

在JSP页面中通过<%@ page errorPage="error.jsp"%>指令。

在web.xml文件中通过<error-page>标签。

2、描述一下JSP和Servlet的相同点和不同点?

答:相同点:都能产生动态网页,另外从技术上讲JSP仍然是Servlet。 不同点:它们的侧重点是不同的,JSP更侧重于数据的显示,Servlet侧重于控制。

1、介绍什么是Java SE、Java EE、Java ME?

答:JDK(Java Develpment Kit)是Java开发工具包,包括Java程序的编译、调试、运行及类库,至今发布的最高版本为6.0,Sun公司将Java应用分为3个领域:

标准版:Java SE(Java Standard Edition)

企业版:Java EE(Java Enterprise Editon)

移动版:Java ME(Java Mobile Edition)

注:在JDK5.0前,称为J2SE、J2EE、J2ME。

我们可以从类库的角度来做简单的区分:

Java SE包含基本的类库,如java.lang、java.io、javax.swing等。刚开始学习Java时我们用的就是Java SE版本。

Java EE包含开发分布式应用程序的类库,如:javax.servlet、

javax.mail、javax.ejb等。当我们学习了Web应用程序、EJB等,用的就是Java EE版本。Java EE比较复杂,包含了许多技术,Java SE

是基础。

Java ME也包含了一些类库,没有做过相关开发,不大清楚。

26、空字符串("")和null的区别?

答:空字符串是 String类的一个对象,而null是指一个引用变量没有引用对象,在值为null的引用变量上调用方法或变量,将会导致 NullPointerException。通过以下代码来验证变量x是否为null,x == null,通过"".equals(x)来验证x是否为空字符串。

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

答:静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。

24、当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对?

答:对。但是在Java中建议,当x.equals(y)等于true时,x.hashCode()与y.hashCode()也相等。

23、列举几个常见的RuntimeException的子类?

答:ArithmeticException、NullPointerException、IndexOutOfBoundsException、ClassCastException、ArrayStoreException

22、Java有没有goto?

答:Java没有使用goto关键字,但它是Java的保留字。

21、在Java中char类型的变量占用几个字节?char类型的变量能不能存储一个中文汉字?

答:在Java中char类型的变量占用2个字节,char类型变量采用Unicode编码。可以存储一个汉字,但不是所有的汉字都能存储,你想想,汉字至少10万个,而Unicode占用两个字节,最多能存储6万多个。


第二篇:javaEE阶段常见面试题题锦


1、 Servlet执行时一般实现哪几个方法?

doGet(HttpServletRequest request,HttpServletResponse response)

doPost(HttpServletRequest request,HttpServletResponse response)

init()

destroy()

2、 说出Servlet的生命周期?

Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。

Servlet的生命周期包含了下面4个阶段:

(1)加载和实例化

Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。

(2)初始化

在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。在初始化期间,如果发生错误,Servlet实例可以抛出ServletException异常来通知容器。

(3)请求处理

Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在service()方法调用之前,init()方法必须成功执行。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。在service()方法执行期间,如果发生错误,Servlet实例可以抛出ServletException异常。

(4)服务终止

当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。

在整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务

3、 请描述Session与Cookie的异同之处

具体来说cookie机制采用的是在客户端保持状态的方案。存储在客户端,可以设定时间限制,若不设定时间则不会消亡。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持。

而session机制采用的是一种在客户端与服务器之间保持状态的解决方案。存储在服务端,必须有时间限定,若不设置,在一段时间后自动消亡。

4、 什么情况下调用doGet()和doPost()?

1)、Form表单的method方法如果是post的话当表单提交的时候就要调用doPost,其他的访问方式比如链接访问,表单里method为get表单提交时候调用doGet。

2)、地址栏里直接提交都默认用get方法提交。

3)、这两种方法有本质的区别,get传递参数附加在url后,大小个数有严格限制且只能是字符串(255)。post的参数传递不通过url,使用数据包传递,所以可以很大,也可以传递二进制数据,如文件的上传。

5、java web的四种作用域

page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类.这既 包括servlet 又包括被编译成servlet 的JSP页面。当前页面有效。

request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面, 涉及多个Web组件。比如forward指令就可以使请求跨越多个页面。同一请求内有效。 session 是代表与用于某个Web客户机的一个用户体验相关的对象和属性。一个 Web会话 可以也经常会跨越多个客户机请求。一次会话(session)通常持续于用户打开浏览器后的一系列访问中。从用户登录到用户退出之间有效。

application 是代表与整个Web应用程序相关的对象和属性。这实质上是跨越整个 Web应用 程序,包括多个页面、请求和会话的一个全局作用域。从服务器启动到服务器关闭之间有效。

6、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

1)、Jsp是页面技术,但是编译后的文件就是servlet文件。

2)、Servlet是服务器端的小程序,主要是用来处理请求的。

3)、Jsp有自己的标签。

4)、JSP侧重于视图,Servlet主要用于控制逻辑

7、JSP的内置对象?

1)、request 代表请求

2)、response 响应对象

3)、out 输出对象

4)、page 代表当前页面

5)、application 应用程序对象

6)、pageCotext 页面上下文

7)、config 配置对象

8)、session 会话

9)、exception 异常

8、说一下常用的jsp标准动作

Jsp:useBean动作,主要功能是用来实例化一个bean对象

Jsp:setProperty动作,主要是用来给bean对象中的某些属性或单个属性赋值 Jsp:getProperty动作,主要用来显示bean对象中的属性值

Jsp:forward动作,主要用来进行页面跳转,属于请求转发模式

Jsp:include动作,主要用来导入页面,属于页面的动态导入

Jsp:param动作,主要是在forward跳转或页面include导入时进行参数值传递的 Jsp:plugin动作,主要是引入插件

9、JSP中动态INCLUDE与静态INCLUDE的区别?

动态导入:先编译后包含

静态导入:先包含后编译

10、forward 和redirect的区别?

forward: 1)此行为是服务器端行为。

2)地址栏仍为原来的页面显示URL 3)多个页面共用request对象 4)只能在同一工程内跳转

5)forward下面的代码不在编译。

redirect: 1)此行为是客户端行为

2)地址栏显示新页面URL

11、在web开发中我们经常使用iso8859-1,我们如何实现编码的转化? 使用request对象 request.setCharacterEncoding("utf-8"); 使用response对象 response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); 通过流进行转换:

String name = "highcom工程有限公司";

name = new String(name.getBytes("ios8859-1"),"utf-8");

12、JDBC中,Statement ,PreparedStatement的区别是什么? 3)多个页面不共用requst对象 4)可以在不同工程中跳转 5)redirect下面的代码也编译,编译后才跳转

Statement 接口提供了执行语句和获取结果的基本方法。

PreparedStatement 接口添加了处理 IN 参数的方法。可以进行预编译,提高速度。

13、说出数据连接池的工作机制是什么?

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。(通过参数可以决定最大连接数是多少,服务器启动的时候建立多少连接,池中需要维持多少空闲连接等。)当使用的连接调用完成后,就可以讲连接close,这个时候池驱动程序将此连接放回连接池并且标记为空闲,其他调用就可以使用这个连接。

14、 j2ee常用的设计模式?简单介绍一个你常用到的设计模式

Java中的23种设计模式:

Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式), Composite(合成模式),Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),Observer(观察者模式), State(状态模式), Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

15、EJB与JAVA BEAN的区别?

EJB的英文全称是企业级的JavaBean

两者是完全不同的

JavaBean是一个组件,而EJB就是一个组建框架

JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示。

EJB主要分为会话bean,实体bean,消息驱动bean。是部署在服务器上的可执行组建或商业对象。EJB有一个部署描述符,通过这个部署描述符可以对EJB的属性进行描述。EJB不和表示层交互。

16、说一下常用的JSTL?

我们通常使用标签去替换jsp页面中的代码段和java表达式,常用的有EL表达式,forEach标签,if标签,choose标签,set标签,out标签等,这些都是jstl(jsp标准标签库)中核心库的标签,其uri是/jsp/jstl/core,除此还有一些其他的标签库,如

函数,sql,xml等,不过我们常用的就是core,而且现在多使用框架编程,struts框架有其自带的标签库,对我们来说最重要的是使用标签的习惯和意识。

17、简单描述一下MVC的流程

在MVC模型中,M代表model,模型层;V代表view,视图层;C代表controller,控制层。首先由浏览器browser发送请求到达控制器(controller),在控制器中可以选择接下来的操作,如果不需要对数据进行操作或与数据进行交互,可直有控制器选择相应视图,响应会浏览器。如果需要对数据进行操作或与DB进行交互,可由控制器(C)选择需要的model,在model层中进行数据操作和与DB的交互,将操作后的数据返回给控制器(C),在由控制器选择相应的视图,将其相应会浏览器。

18、谈一下对ajax的了解?

1)、javaScript脚本

2)、必须有XmlHttpRequest对象

3)、DOM对象

4)、回调函数。

5)、返回数据类型可以是字符串或XML

6)、主要的框架:DWR,jQuery,Ext等

更多相关推荐:
java程序员_英语自我介绍_就业

GoodmorningItisreallymyhonortohavethisopportunityforainterviewIhopeicanmakeagoodperformancetodayI39mconfi...

java程序员面试必读

Java程序员面试必读快来10月25日读者见面会清华大学出版社Java程序员上班那点事儿作者钟声章节122面试是一个简单而又复杂的事情正因为它具有简单和复杂的双重性质才使我们对这个问题不敢掉以轻心介绍如何面试有...

java程序员面试简历(列子)

java程序员面试简历(列子),内容附图。

java工程师面试记录

面试记录一20xx59候选人A面试官研发一处白鹏自我介绍现在在做的项目有多少人20人是独立在做还是开发独立但上面还有系统下面有带人吗没有了解一下用过什么技术来做接口webservicesophy有没做过报表的开...

软件相关面试自我介绍模板

应届生自我介绍写作要点我能胜任这份工作1当成议论文写论点论据论证这里着重强调论点和论据论证不需要2围绕这个主题给出几个论点自己是优秀的学生学生成绩获取奖项奖学金两三项没有的拿别人的用用专业知识过硬是相关专业熟练...

应聘java软件工程师

应聘java软件工程师个人简历第1页个人简历第2页个人简历第3页

java自我学习总结~

数组每个元素的地址是数组的索引值javaclass中的类定义是数据类类型的定义的字符串Class的对象才是类型实例类型实例的newinsss放回值才是Class对象的对象变量是字面量的代词什么叫做匹配转义字符就...

java进阶部分自我总结

Java进阶部分进程部分进程中至少有一个线程负责执行java程序而且这个线程运行的代码存在main方法中正在运行的线程成为主线程扩展jvm启动的不仅仅一个线程各个线程在不断的切换中只是切换的速度比较快而已jav...

在职MPA复试面试自我介绍中文英文模板

GoodafternoonSirandMadamNicetomeetyouItismyhonortohavethisopportunityofbeinginterviewedMynameisyearsoldIc...

MPA面试英语自我介绍

个人情况姓名年龄籍贯毕业学校现在工作地点职位报考矿大的缘分之前曾在工作过去的同事介绍联合培养信息同时由于家庭在盐城由于现在工作个人提升的需要有这个好的机会参加考试另外说起来和我同年录取的公务员同事就是徐州人矿大...

mPA复试中面试的英语自我介绍

MPA复试中面试的英语自我介绍GoodmorningdearteachersandprofessorsIamsogladtotakethisopportunitytointroducemyselfMynamei...

mpa面试研究生面试英文自我介绍

GoodmorningafternoonmydearteachersandprofessorsItisreallymyhonortohavethisopportunityforaninterviewIhopeIcanmakeago...

java面试自我介绍(1篇)