当前位置:文档之家› Java框架面试题总结

Java框架面试题总结

Java框架面试题总结
Java框架面试题总结

目录

................................................................................................................ Struts 篇4

1. Struts的工作流程 (4)

2. Struts的工作流程分解 (4)

3. Struts控制器组件的组成. 和控制器的主要功能 (4)

4. Struts中的几个关键对象的作用(说说几个关键对象的作用) (4)

5. Struts工作流程图(用例图) (5)

6. 说说MVC设计模式和它的优点 (5)

7. 说说struts是如何实现MVC的? (6)

8. Struts优点与缺点 (6)

9 . strust的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安 (6)

10. Tiles框架是什么? (6)

11. struts1.x 和struts 2 的区别 (6)

12 . Struts 的常用标签库及用法 (8)

Struts html标签库 (8)

Struts bean标签库 (12)

Struts Logic标签库 (13)

13、JSP中动态INCLUDE与静态INCLUDE的区别? (15)

15

1. ............................................................................................................. a jax是什么15

2. .................................................................................................... ajax实现的原理16

3. ............................................................................................. ajax框架的基本流程16

4. .................................................................................................... dwr的实现原理. 16

5. ...................................................................................................... ajax 开发步骤. 16 ............................................................................................................... Spring 篇16

一. .............................................................................................................. 基础知识16

1. ........................................................................................................ 对IOC的理解. 16

2. ..................................................................................... 依赖注入的三种实现形式? 17

3. ............................................................................ Setter注入和构造方法注入比较18

4. ............................................... 对AOP的理解,以及AOP在项目中是如何使用的? 18

19

6. .................................................................................. S pring中有五中不同的通知: 19

7. ....................................................................................... Spring bean的生命周期: 19

8. ....................................................................................................... Bean的作用域19

9. ..................................................................................................... Spring自动代理20 10.................................................................................................... Spring 事务特点20 11......................................................................................... 谈谈Spring 事务的理解20

12. ................................................................... 编程式事务和声明式事务如何选择?21

二. .......................................................................................................... Spring应用21

13. ...................... spring中的BeanFactory与ApplicationContext的作用和区别?21

14..................... S pring里面applicationContext.xml文件能不能改成其他文件名?22

15. ................................................................ s pring中commons-logging.jar的作用22

16........................................... spring中读取xml配置文件、获取bean的几种方式22

17. ......... Spring 启动参数contextConfigLocation 和ContextLoaderListener 理解23

18. ................................................................ Spring框架在web容器是如何启动的? 25 ......................................................................................................... Hibernate 篇25 1. ............................................................................................. H ibernate优缺点?25 2.................................................................... Hibernate工作原理及为什么要用?26 3................................................................................. Hibernate是如何延迟加载? 26

4. ................. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 27 5.................................................................................. 说下Hibernate的缓存机制27 6. ................................................................. 什么样的数据适合放到二级缓存中?27 7.......................................................................................... Hibernate的查询方式28 8.......................................................................................... 如何优化Hibernate?28

9. ................................. 说说Hibernate中的update()和saveOrUpdate()的区别28

10. ................................... 说说Hibernate中的session的load()和get()的区别。

28

11.谈谈Hibernate中inverse的作用 (28)

12. ............................................................................. h ibernate中对象的三种状态29

13.在数据库中条件查询速度很慢的时候,如何优化? (29)

14.在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题? (29)

................................................................................................................ iBatis 篇30

1. ................................................................................................... iBatis的优缺点?

30

2. ..........................................................................iBatis与Hibernate区别(比较)?

30

3. ........................................................................................ iBatis与传统JDBC比较

31

4. ............................................................................ Hibernate和iBatis的映射关系

31

5. ....................................................................................... iBatis动态标签有哪些?

31

6. ..................................... i Batis中使用like ‘%#filedName#%’ 时,有什么问题?

32

7. .......................................................................................... iBatis中#与$的区别?32 ................................................................................................................ 框架问题32

1. SSH框架的配置文件加载顺序 (32)

2. Spring框架在web容器是如何启动的? (33)

3. Webservice + spring2.0 + iBatis项目的加载顺序 (33)

4. ................................................................................................. appfuse框架机制. 33

5. ............................................................................ iBatis与Hibernate如何选择?33

参考:iBatis与Hibernate比较。 (33)

Struts 篇

1. Struts的工作流程

当客户端向浏览器发送HTTP请求时,所有浏览器请求都被提交给ActionServlet 处理。如果用户提交表单,则会将表单中的数据放入到ActionForm中。ActionServlet 根据struts_config.xml文件中预先配置好的设置选择将请求转发到哪个action对象,action对象从actionForm对象中获取数据,但后调用业务逻辑组件,完成业务功能。

2. Struts的工作流程分解

Web应用如果采用struts框架,在web应用启动时就会加载并初始化ActionServlet, ActionServlet从struts_config.xml文件中读取配置信息,基本执行步骤如下:

(1)所有浏览器请求都被提交给ActionServlet处理

(2)ActionServlet根据struts_config.xml文件中预先配置好的设置,选择应该

将请求转发到哪个action对象.

(3)当用户提交表单时,一个配置好的ActionForm对象将被创建,并被填入表

单中的相当数据.

(4)Action对象从ActionForm对象中获取数据.

(5)Action对象调用业务逻辑组件完成业务功能.

3. Struts控制器组件的组成. 和控制器的主要功能

S truts控制器组件主要包括:

ActionServlet组件:充当Struts框架的中央控制器.

RequestRrocessor组件:充当每个子应用模块的请求处理器.

Action组件:负责处理一项具体的业务.

Struts控制器组件主要完成以下任务:

接受用户请求.

根据用户请求,调用合适的模型组件来执行相应的业务逻辑.

获取业务逻辑执行结果.

根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户.

4. Struts中的几个关键对象的作用(说说几个关键对象的作用)

ActionServlet类控制导航流.

ActionServlet根据URI来决定哪个Action类被用于处理请求,Action可以校验输入,并访问业务层以便从数据库检索信息.

Action需要知道页面提交了哪些内容,所以由ActionServlet根据请求URI来决定将请求参数绑定到哪个ActionForm中并传入Action.

Action在完成业务逻辑后,返回一个ActionForward对象,ActionServlet根据ActionForward对象中的路径来调用页面完成响应.

Struts将这些信息绑定在一个ActionMapping对象中,一个ActionMapping对应一个请求URI,当请求路径到达的时候,ActionServlet就会查询ActionMapping对象,ActionMapping 对象将告诉ActionServlet哪个Action类会被调用,哪个ActionForm类被用于传递页面数据以及哪些ActionForward将被用于转向.

有关Action,ActionForm,ActionForward等信息,通过struts-config.xml配置文件来定义.

5. Struts工作流程图(用例图)

注: Servlet 容器在启动时,或者用户首次请求ActionServlet时加载ActionServlet 类.

6. 说说MVC设计模式和它的优点

MVC是一种设计模式,.它强制性的把应用程序的输入,处理和输出分开.MVC把应用程序分成三个核心模块:模型(Model),视图(View)和控制器(Controller).他们分别处理不同的任务.

视图是用户看到并与之交互的界面.视图向用户显示相关的数据,并能接受用户的输入数据,但是它不进行任何实际的业务处理.

模型是应用程序的主体部分.模型表示业务数据和业务逻辑.一个模型能为多个视图提供数据.由于同一个模型可以被多个视图重用,所以提高了应用的重用性.

控制器接受用户的输入并调用模型和视图去完成任务.

MVC的处理逻辑如下:

首先控制器接受用户请求,并决定应该调用哪个模型来进行处理,然后模型根据用户请求进行相应的业务逻辑处理,并返回数据. 最后控制器调用相应的视图来格式化模型返回的诗句,并通过视图呈现给用户.

MVC的优点:

(1)在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化

数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重

用,所以大大提高了代码的可重用性.

(2)MVC的三个模块相互独立,改变其中的一个不会影响其他两个,所以根据

这种设计思想能构造良好的松耦合的构件.

(3)控制器可以用来连接不同的模型和视图去完成用户的需求,也可以为构造

应用程序提供强有力的手段.给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的视图将结果显示给用户.

7. 说说struts是如何实现MVC的?

Struts采用JSP作为MVC的视图, 控制器由ActionServlet和Action类来实现. 控制器负责视图和模型之间的交互. 模型由实现业务逻辑的JavaBean或EJB组件构成, 然后说说Struts的工作流程.

8. Struts优点与缺点

Struts是开源软件,使开发者能更深入的了解其内部实现机制。

Struts 优点:业界"标准"(很多成功案例),学习资源丰富。

Struts的优点主要集中体现在两个方面:Taglib和页面导航。

a、利用Struts提供的taglib可以大大节约开发时间。

b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。

c、表现与逻辑分离

d、表单验证解决了请求数据的验证问题,增强了系统健壮性。

e、便于团队开发

Struts缺点:a、大量的使用标签,对于初学者难度较大。

b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)

9 . strust的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安

全?如果是,说明原因

不是. 为了确保action的线程安全, 最好的办法就是不要在action里定义实列变量.

10. Tiles框架是什么?

Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。

11. struts1.x 和struts 2 的区别

本文将从Struts1和Struts2的各个方面进行比较

12 . Struts 的常用标签库及用法

常见的struts标签库有struts html 标签库,struts bean标签库, struts Logic标签库,Struts Template 标签库, Struts Nested 标签库.

HTML 标签用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输

入表单

Bean 标签在访问JavaBeans 及其属性,以及定义一个新的bean 时使用

Logic 标签管理条件产生的输出和对象集产生的循环

Template 标签随着Tiles框架包的出现,此标记已开始减少使用

Nested 标签增强对其他的Struts 标签的嵌套使用的能力

以下分别讲解struts标签库的用法.

Struts html标签库

:生成html

标签

用法:

标签的action属性用来指定当前用户提交表单后,处理用户请求的组件.

生成html 标签

该标签在表单上创建HTML文本框字段.

用法:

p roperty:指定字段的名字

生成html 标签

这个标签在表单上生成隐藏字段.隐藏字段用于在表单上存放不希望让用户看到或不允许修改的信息.

生成html 标签

标签生成表单的提交按钮

用法:submit

生成html 标签

标签生成表单复位按钮

用法:reset

在表单上生成取消按钮

标签用于生成表单取消按钮

用法:cancel

:生成h tml 元素

用于生成单选按钮

用法:

单选按钮需要确保property一样,只是value值不一样就可以了.

:生成复选框

用法: 篮球

足球

乒乓球复选框按钮需要确保property一样,value的值不同就可以了.还需要注意的是复选框的值需要写在标签按钮的最后面的.

如果应用中有多个Checkbox,并且希望ActionFrom Bean 中用单个数组表示,都可以采用. 的使用方法如下:

(1)在Action Form 中定义一个数组,用来存放checkBox的值,

private String strArray[] =new String[0];

public String getStrArray() {

return this.strArray;

}

public void SetStrArray(String strArray){

this. StrArray = strArray;

}

(2)在表单中加入元素,通过设置property=”strArray” 来把它和

ActionFrom Bean 关联.

(3)对于每个元素,设置它的初始值.

value1

下拉列表用于生成html 元素,提供从html表单中上传文件的功能.

标签可以方便的实现文件上传的功能.样列代码如下:


提交

使用标签要注意以下几点:

(1)标签必须嵌套在标签中

(2)标签的method属性必须设置为post

(3)标签的编码类型emctype属性必须设置为”

multipart/form-data”

(4)标签必须设置property属性,这个属性和ActionFrom Bean中的

FormFile类型的属性对应.

在ActiomForm中设置FormFile属性:

在actionForm中设置一个名为file的属性,这个属性必须为org.apache.struts.upload.FormFile类型.代码如下:

private FormFile file;

public FormFile getFile(){

r eturn this.file;

}

public void setFile(FormFile file){

t his.file=file

}

上传下载的例子详细参见(My_Java\E 实例\小例子\upDownFile)

标签:用于输出错误消息.

标签可以放在网页的任何地方,既可以位于HTML标签内,也可以位于HTML标签外,标签输出的错误消息和它在网页上的位置有关.标签具有以下重要的属性:

name:指定ActionMessage对象存放在request或sessios范围内的属性key.标签处理类将根据这一属性的key来检索request或session范围的ActionMessage对象.默认值为Globals.ERROR_KEY.

Property:指定消息的属性.如果此项没有设置,将显示ActionMessages对象中的所有的ActionMessage.

Bundle:指定Resource Bundle(资源包) ,如果此项没有设置.将从应用默认的Resource Bundle 中获取消息文本. [关于标签的用法详见:精通struts p326_p328].

错误消息的来源

标签在request或session范围内寻找ActionMessages(或其子类ActionErrors)集合对象.在从ActionMessages集合对象读取ActionMessage对象,把

ActionMessage包含的消息文本显示到网页上..

在ActionForm Bean和Action类中都可以生成ActionMessages对象.ActionForm Bean 的validate() 方法执行表单验证,返回ActionErrors对象,Struts控制器组件RequestProcessor(请求处理器)然后把ActionErrors对象存放在request范围内,存放时的属性key为Globals.ERROR_KEY .

以下是HtmlErrorForm 的validate() 方法:

在action类的execute()方法中可以进行数据逻辑验证,如果验证失败,将生成ActionMessages对象.以下是helloapp应用的LogonAction的execute()方法;

If(userName.equalsIgnoreCase(badUserName)){

Errors.add(“userName”,new

ActionMessage(“hello.don’t.talk.to.monster”,badUserName));

SaveErrors(request,errors);

Return (new ActionForward(mapping.getInput()));

}

}

以上代码先创建了一个ActionMessages对象,它用来存放ActionMessage对象,最后调用Action基类的saveErrors()方法,saveErrors()方法把ActionMessages 对象保存在request范围内.

标签:

用于显示正常消息的代码如下:

标签有以下一些重要属性:

name:指定actionMessages对象存放在request或session范围内的key.,标签处理类将根据这一属性key来检索request或session范围的ActionMessages对象.

Message属性:指定消息的来源.

Id属性: 用来命名从消息集合中检索出的每个ActionMessage对象.它和标签的name属性匹配.

Struts bean标签库

标签用于输出Resource Bundle 种的一条消息.标签的bundle属性指定Resource Bundle 它和struts配置文件的元素的key 属性匹配.如果没有设置bundle 属性,就采用默认的Resource Bundle.

标签的key属性直接指定消息key. Bundle属性指明资源文件的struts-config.xml文件种的配置的key值.

例如:

(详细参照:精通struts p339)

标签

标签用于在网页上输出某个Bean 或它的属性的内容.

标签可以输出单个字符串,或责一个对象的某个属性,或责通过迭代器遍历集合的所有值

标签的name属性指定已经存在的变量.例如:

在action中得到一个字符串的值,然后在页面上显示出来

//得到定单状态(action中)

String orderState=orderService.getOrderState(userOrderId);

request.setAttribute("orderState",orderState);

//在界面上显示为(界面中)

如果希望输出Bean的某个属性值,应该同时设置标签的name属性和property属性. Property属性指定Bean的属性.例如:

//得到当前定单的购货人信息

UserVO uVO =orderService.getUserbyOrderId(userOrderId);

request.setAttribute("userVO",uVO);

//在页面上显示购货人的信息

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

java基础笔试题(答案已整理)

Java基础试题 一:选择题(1*30=30)(题目写在答题纸上面) 1:Java 提供哪几种运算符多选( abcd )。 A)算术运算符B)位运算符 C)关系运算符D)逻辑运算符E)条件运算符 2:https://www.doczj.com/doc/3b2679221.html,ng包的()方法比较二个对象是否相等返回true.。(b) A:toString() B:equals() C:compare D:以上都不正确 3:下列对Java 的变量与函数说法正确的是多选(ace )。 A)变量是用来保存数据的B)变量是用来实现操作过程的C)函数是用来实现操作过程的D)函数是用来保存数据的E)函数的参数是数据的入口 4:已知:int[] a = new int[100];在下列给出的数组元素中,非法的是。(d) A:a[0] B:a[1] C:a[99] D:a[100] 5:在java中,一个类可同时定义许多同名的方法,在这些方法的形式参数个数,类型或顺序各不相同,传值也可以各不相同。这种面向对象程序的特性称为。(c) A:隐藏B:覆盖C:重载D:Java不支持此特性 6:()是一组常量和抽象方法的集合。(d) A:实例B:类C:包D:接口 7:下面关于数组说法正确的是多选(abcde)。 A)一维数组实质上是相同类型变量的列表 B)创建一个数组首先定义数组变量所需的类型 C)char c[]=new char[26];可声明一个含有26 个元素的char型数组 D)当为一个多维数组的时候分配内存时,仅需要为第一指定内存,然后再分配其他维的存E)int twain[][] = new int[4][5];可声明一个二维数组 8:Java源文件和编译后的文件扩展名分别为。(b) A:.class和.java B:.java各.class C:.class和.class D:.java和.java 9:设x=5;则y=x--和y=--x的结果,使y分别为。(c) A:5,5 B:5,6 C:5,4 D:4,4 10:若x是float类变量,x=10/4;则x 的值是。(b) A:2 B:2.0 C:2,5 D:编译错误 11:.下面方法中,用于调度线程使其运行的是?多选(bc ) A. init() B. start() C. run() D. resume() E. sleep() 12.下面哪种情况能实现自动转换多选(ace )。 A)byte 型转换成int 型B)int 型转换成byte 型 C)float 型转换成double型D)double 型转换成int 型E)char型转换成int 型 13:下列那些是正确的JAVA字符串?多选(abd )。 A. "\"\"" B. "Oxzabc" C. "\"\" D. "\t\t\r\n" E. "boolean"5 14:在使用super 和this关键字时,以下描述正确的是。(a) A::在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过 B:super()和this()不一定要放在构造方法内第一行

常见的Java上机面试题

常见的Java上机面试题 在程序员面试中,主要的考试形式分为笔试和上机编程考试两部分。笔试主要考查面试者的基础是否牢固;上机考试主要考查面试者的实际开发能力和技术技巧。 上机编程考试,要求面试者能够根据题目的要求,使用一种编程工具,编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是,这类面试题要求能够正确运行,往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符,而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类,希望能够给读者带来帮助和启示。 17.1 Java基础编程试题(1) 在上机编程类的面试题中,大部分涉及基础编程,例如算法、语法、常用的类等知识点。 面试题1 怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。 参考答案 具体代码实现如下: 1.package core_java; 2.import java.util.Scanner; 3.public class InterceptionStr { 4.static String ss; //要进行截取操作的字符串 5.static int n; //截取的字符串的字节数 6.public static void main(String[] args) { 7. System.out.println("请输入字符串:"); 8. Scanner scStr = new Scanner(System.in); //从键盘获取字符串 9. ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 10. System.out.println("请输入字节数:"); 11. Scanner scByte = new Scanner(System.in); //从键盘获取字符串 12. n = scByte.nextInt(); //将Scanner对象中的内容以数值的形式取出来

JAVA框架面试题汇总

1.SpringMVC Framework的理解: 1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成 2、不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3、可以任意使用各种视图技术,而不仅仅局限于JSP 4、支持各种请求资源的映射策略 5、它应是易于扩展的 2.简单的谈一下SpringMVC的工作流程? 流程? 1、用户发送请求至前端控制器DispatcherServlet? 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。? 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。? 4、DispatcherServlet调用HandlerAdapter处理器适配器? 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。? 6、Controller执行完成返回ModelAndView? 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet? 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器? 9、ViewReslover解析后返回具体View? 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。? 11、DispatcherServlet响应用户 3.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入: . .CharacterEncodingFilter . .???? .????????encoding .?????? utf-8

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.doczj.com/doc/3b2679221.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.doczj.com/doc/3b2679221.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.doczj.com/doc/3b2679221.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.doczj.com/doc/3b2679221.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.doczj.com/doc/3b2679221.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

JAVA基础面试题经典

JAVA基础面试题经典

第一阶段题库 基础知识部分: 1.JDK是什么?JRE是什么? a)答:JDK:java开发工具包。JRE:java运行时 环境。 2.什么是java的平台无关性? a)答:Java源文件被编译成字节码的形式,无论 在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3.在一台电脑上配置java环境,path起什么作 用?如何配置? a)答:path的作用是在DOS环境下,能在任意 位置使用JDK目录中bin文件夹中的可执行程序,来编译执行java程序。 b)在环境变量中找到path变量,把bin文件夹 的绝对路径加上即可。 4.什么样的标识符是合法的? a)由字母、数字、_和$组成,长度不限。其中字 母能够是大写或小写的英文字母,数字为0到9。

b)标识符的第一个字符不能是数字。 c)标识符区分大小写。 d)标识符不能包含空格。 5.Java有几种基本数据类型? a)byte,short,int,long,char,boolean,float,double 6.什么是隐式类型转换?什么是显示类型转换? a)当将占位数少的类型赋值给占位数多的类型 时,Java自动使用隐式类型转换。 b)当把在级别高的变量的值赋给级别底变量时, 必须使用显示类型转换运算。 7.&&和&区别,||和|区别? a)&&和||是短路与,短路或,当左边的表示式能 判断当前结果,则不判断右边的表示式。 b)而& 和|则将两边的表示式都运算完毕后,再 算结果。 8.break,continue区别? a)break结束最近的一个循环,continue结束当 次循环,进入下次循环。 9.类的命名规则是什么? a)如果类名使用拉丁字母,那么名字的首写字母 使用大写字母。

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.doczj.com/doc/3b2679221.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

java面试题-经典选择题部分

1 、给出如下代码: class Test{ private int m; public static void fun() { // some code... } } 如何使成员变量m 被函数fun() 直接访问? C A 、将private int m 改为protected int m B 、将private int m 改为public int m C 、将private int m 改为static int m D 、将private int m 改为int m 2 、下面哪个函数是public void example(){...} 的重载函数?D A 、private void example( int m){...} B 、public int example(){...} C 、public void example2(){...} D 、public int example ( int m, float f){...} 3 、给出下面的代码段: public class Base{ int w, x, y ,z; public Base(int a,int b) { x=a; y=b; } public Base(int a, int b, int c, int d) { // assignment x=a, y=b w=d; z=c; } } 在代码说明// assignment x=a, y=b 处写入如下哪个代码是正确的?D A 、Base(a,b); B 、x=a, y=b; C 、this(a),this(b); D 、this(a,b); 4 、已知如下定义:String s = "story"; 下面哪个表达式是合法的?A A 、s += "books"; B 、char c = s[1]; C 、int len = s.length;

Java经典面试编程设计题(含答案)

1、程序实现目标:输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。 1. package com.iotex; 2. public class StringParseASCII { 3. 4. public static void main(String[] args) { 5. System.out.print(stringParseASCII("abx")); 6. } 7. 8. public static String stringParseASCII(String str){ 9. StringBuffer result = new StringBuffer(); 10. char tmp; 11. for(int i = 0;i 'z') { 14. result.append('a'); 15. }else { 16. result.append(tmp); 17. } 18. } 19. 20. return result.toString(); 21. } 22. 23. } 1. package com.iotex; 2. 3. public class StringParseASCII { 4. 5. public static void main(String[] args) { 6. System.out.print(stringParseASCII("abx")); 7. } 8. 9. public static String stringParseASCII(String str){ 10. StringBuffer result = new StringBuffer(); 11. char tmp; 12. for(int i = 0;i 'z') { 15. result.append('a'); 16. }else { 17. result.append(tmp);

java面试题大全(整理版)

2018年(整理版) 1、面向对象的特征有哪些方面? - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中的方法);2). 对象造型(用父类型引用引用子类型对象,

这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为) 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。 4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

java编程常见面试题目

第一,谈谈final, finally, finalize的区别。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和Inner Class的不同, 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。 第六,Collection 和Collections的区别。 第七,什么时候用assert。 第八,GC是什么? 为什么要有GC? (基础)。 第九,String s = new String("xyz");创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 第十二,sleep() 和wait() 有什么区别? 搞线程的最爱 第十三,Java有没有goto? 第十四,数组有没有length()这个方法? String有没有length()这个方法?

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 第十七,给我一个你最常见到的runtime exception。 第十八,error和exception有什么区别? 第十九,List, Set, Map是否继承自Collection接口? 第二十,abstract class和interface有什么区别? 第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 第二十三,启动一个线程是用run()还是start()? 第二十四,构造器Constructor是否可被override? 第二十五,是否可以继承String类? 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

这76道Java面试题及答案

这76道Java面试题及答案,祝你能成功通过面试 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto? java中的保留字,现在没有在java中使用。 3、说说&和&&的区别。 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。 &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 4、在JAVA中如何跳出当前的多重嵌套循环? 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String 上? 在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char 都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 对于short s1 = 1; s1 = s1 + 1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。 对于short s1 = 1; s1 += 1;由于 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。 7、char型变量中能不能存贮一个中文汉字?为什么? char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。 8、用最有效率的方法算出2乘以8等於几? 2 << 3,

Java经典面试笔试题及答案

1.什么是对象序列化,为什么要使用? 所谓对象序列化就是把一个对象以二进制流的方式保存到硬盘上。好处:方便远程调用。 2.值传递与引用传递的区别? 所谓值传递就是把一个对象的值传给一个新的变量,但是系统会给这个新的变量开辟一个新的内存空间。不会改变原有的值所谓引用传递就是把一个对象在堆中保存的数据传递给一个变量,此时新的变量与原有的变量对应同一个内存存储空间,当新的变量修改对象的属性时,内存中的数据也会修改。 3.接口与抽象类的区别? 1:接口里面不可以实现方法体,抽象类可以实现方法体。 2:接口可以多继承接口,抽象类不可以。 3:接口需要被子类实现,抽象类是要被子类继承(单一继承)。 4:接口中只能有公有的方法和属性而且必须赋初始值,抽象类中可以有私有方法和属性. 5: 接口中不能存在静态方法,但属性可以和final,抽象类中方法中可以有静态方法,属性也可以。 4.谈谈继承,为什么要使用继承? 所谓继承就是找出几个类中共同的部分,提取出来作为父类。而子类只需要继承父类,就可以共享父类的方法。 使用继承能够减少重复的代码。 5.方法重载的好处?

所谓重载就是在一个类中可以定义多个相同的方法,但是方法的参数类型和参数的个数以及顺序要不同。 重载的好处就是能够让我们很快的掌握该方法的功能,我们只要要记住该方法就能很快的理解该方法的参数以及参数的作用 6.项目中印象最深的部分? 我觉得在该项目中我体现到了反射技术的强大之处,原来我一直不清楚反射是一种什么样的技术,只知道一些概念上的知识,经过这个项目之后,终于知道该怎样灵活运用反射,以及在什么时候运用。 谈谈你对面向对象的理解与认识? 我觉得使用面向对象这种思维的方式比较符合我们人类的思想,不需要去学习一些什么新的思考方式,就按照现实生活做的一些故事就能让人理解该内容的知识以及他们的作用。 我的看法就是: 1:当加入新的功能的时候不会修改原有的代码。(面向接口编程) 2: 当我们写的一个类可以重复的运用在其他项目中。(代码的复用性) 3:当写一个新类的时候要考虑到他的可扩展性。(灵活性) 7.谈谈集合框架? 集合框架分为三部分,第一部分是collection接口,第二部分是Map接口、第三部分是collections帮助类 首先说一下collection接口,collection接口下面的接口分为set 接口、list接口,在往下面就是他们一些实现类。

JAVA基础面试题(经典)

基础知识部分: 1. JDK是什么?JRE是什么? a) 答:JDK:java开发工具包。JRE:java运行时环境。 2. 什么是java的平台无关性? a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。 3. 在一台电脑上配置java环境,path起什么作用?如何配置? a) 答:path的作用是在DOS环境下,能在任意位置使用JD K目录中bin文件夹中的可执行程序,来编译执行java程序。 b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。

4. 什么样的标识符是合法的? a) 由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数字为0到9。 b) 标识符的第一个字符不能是数字。 c) 标识符区分大小写。 d) 标识符不能包含空格。 5. Java有几种基本数据类型? a) byte,short,int,long,float,double,char,bool ean 6. 什么是隐式类型转换?什么是显示类型转换? a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。

b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。 7. &&和&区别,||和|区别? a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表达式。 b) 而& 和|则将两边的表达式都运算完毕后,再算结果。 8. break,continue区别? a) break结束所有循环,continue结束当次循环,进入下次循环。 9. 类的命名规则是什么? a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。

java高级软件工程师面试题

java高级软件工程师面试题 招聘java高级工程师,职位描述如下,有兴趣的加394504340交流,打扰了,谢谢! 职位名称:java高级开发工程师(急) 职位描述:互联网产品的开发和维护。 职位要求:1. 熟悉JAVA、J2EE体系结构,熟练掌握Spring、Struts、Hibernate、ibatis 的开发技术。 2. 熟悉MySql等数据库开发,熟练掌握SQL语句,有较好的数据库设计能力。 3. 熟练掌握HTML、javascript、ajax等web开发技术,熟悉http协议。 4. 熟悉SVN、Maven、Junit等工具。 5. 具有良好的学习能力、沟通能力,乐于承担工作压力。 6. 有大型门户或社区网站开发经验者优先。 职位所在城市:杭州 职位所在行业:高科技 -------------------------========================================================= 1.说一下struts中常用的对象 2.怎样整合apatche和tomcat 3.说一下在linx系统中搭建服务器 4.简述一下sql server 建模 5.请写一个程序,把一个10进制转换成16进制 6.表student 列id name age WA(本科以上,大专,高中,初中以下) 毕业学校ID,学校信息表 问:统计出文化学历本科以上,大专,高中,初中以下,每个年龄各有多少人(一条SQL语句) 7.有两位少年从隧道的一端向另一端行走.当他们走过隧道的五分之二时,发现隧道外面迎来一辆火车.火车很快就要进入隧道.两位少年向来时隧道跑去.两位少年都是每小时10公里.两位在千钧一发跑出了隧道.假设火车速度恒定,并且两位少年都在瞬间达到最大速度,请问火车的速度 8.请写出常用的oracle语句及说明,存储过程的语句及说明 ---------------------------------------------------------------------------------------------------------------------------------

Java经典笔试题01

1. Given: 1. public class test ( 2. public static void main (String args[]) { 3. int i = 0xFFFFFFF1; //0001 4. int j = ~i;//1110,取反 5. 6. } 7. ) What is the decimal value of j at line 5? A. 0 B. 1 C. 14 D. -15 E. An error at line 3 causes compilation to fail. F. An error at line 4 causes compilation to fail. 2. Given: Integer i = new Integer (42); Long 1 = new Long (42); Double d = new Double (42.0); Which two expressions evaluate to True? (Choose Two) A. (i ==1) B. (i == d) C. (d == 1) D. (i.equals (d)) E. (d.equals (i)) F. (i.equals (42))

3. Click the exhibit button: 1. public class test ( 2. private static int j = 0; 3. 4. private static boolean methodB(int k) ( 5. j += k; 6. return true; 7. ) 8. 9. public static void methodA(int i) { 10. boolean b; 11. b = i < 10 | methodB (4);//非短路 12. b = i < 10 || methodB (8);//短路,后面不执行 13. ) 14. 15. public static void main (String args[] } ( 16. methodA (0); 17. system.out.printIn(j); 18. ) 19. ) What is the result? A. The program prints “0” B. The program prints “4” C. The program prints “8” D. The program prints “12” E. The code does not complete 4. Given: 1.Public class test ( 2. Public static void main (String args[]) ( 3. System.out.printIn (6 ^ 3); //0110 ^ 0011 = 0101 4. ) 5.) What is the output? 5 1.Which statement is correctly declare a variable a which is suitable for refering to an array of 50 string empty object? (长度为50的空数组引用) A. String [] a B. String a[]

相关主题
文本预览