java开发面试技巧方法

  篇一:Java开发工程师面试题总结

java开发面试技巧方法

JAVA开发工程师面试题总结--JAVASE部分

1.谈谈final,finally,finalize的区别?

final是Java的一个关键字,用于定义不能被继承的类,不能被覆写的方法,常量。 finally是Java的一个关键字,是异常处理操作的统一出口。

finalize是Object类中所提供的一个方法,用于在对象回收之前进行收尾操作。

2.请解释Java实现可移植性的原理

Java程序最终通过字节码文件运行,运行的时候字节码需要JVM的支持,但是在不同的操作系统上有不同JVM,程序不用关系操作系统,只关心JVM,只要JVM不改变,程序可以在操作系统间任意移植。

3.请解释path和classpath的区别?

path是windows的环境属性,用于指定可执行命令的路径

classpath是指在java程序执行的时候,用于指定类的加载路径

4.请说明下JAVA中的几个特殊关键字(了解,一般面试面这个问题的都是一些煞笔公司)

未使用到的关键字:goto、const

有特殊含义的关键字:null、true、false

JDK1.4之后增加了一个assert关键字

JDK1.5之后增加了一个enum关键字

5.请解释JAVA中的数据类型的划分,并说出其默认值 基本数据类型:

数值型:

整型:byte、short、int、long; 0

浮点型:float、double; 0

字符型:char 空字符:’u0000’

布尔型:boolean false

引用数据类型:数组、类、接口 null

6.请解释&和&&、|和||的区别

&(普通与)和|(普通或)指的是所有条件都进行判断;

&&(短路与)如果前面的条件不满足,则后面不再进行判断,||(短路或)如果前面的条件满足则后面不再判断;

在开发之中为了性能的提高,主要使用短路与和短路或操作;

&和|除了用于逻辑运算之外,也可以进行位运算的操作;

7.请解释String类的两种比较方式

在String类中可以使用“==”和equals()两种操作来进行字符串的比较

“==”比较的是两个字符串的内存地址数值,属于数值比较

equals()是String类中提供的一个方法,用于字符串内容的比较,最简单的做法就是比较字符串永远使用equals()方法就行了

8.请解释String对象的两种实例化方式的区别

首先String对象的实例化方式有两种:一种是直接赋值,另外一种是通过构造方法完成

直接赋值:只开辟一个堆内存空间,而且采用了共享设计模式,可以自动入池,以备下次对象继续使用

构造方法:会开辟两快内存空间,其中有一块空间将成为垃圾,而且不会自动入池,可以使用intern()方法进行手工入池

从开发角度来说,很明显使用直接赋值的方式会更好一些

9.请谈谈方法的重载和覆写的区别

首先重载和覆写都是面向对象多态性的一个体现

重载

单词:OverLoading

概念:方法名称相同,参数的类型或个数不同

范围:发生在一个类之中

权限:重载的时候没有权限的限制

覆写

单词:Override

概念:方法名称、返回值、参数的个数及类型全部相同

范围:发生在继承关系中

权限:子类覆写的方法不能拥有比父类更严格的访问控制权限

重载的时候可以返回值类型不相同,但是没有任何意义

10.请谈谈this和super的区别

this

属性:this.属性表示的是找到本类的属性,如果本类没有找到则继续查找父类 方法:this方法()表示找到本类的方法,如果本类没有找到则继续查找父类 构造:必须放在构造方法的首行,不能与super关键字同时出现

特殊:表示当前对象

super

属性:super.属性直接在子类之中查找父类中的指定属性,不在查找子类本身 方法:super.方法()直接在子类之中查找父类中的指定方法,不在查找子类本身 构造:必须放在构造方法首行,不能与this关键字同时出现

在开发之中使用this和super可以明确的划分出子类和父类之间的操作

11.请解释Collection和Collections的关系

两者之间在定义上没有直接的关系

Collection是单值集合的操作最大父接口

Collections只是一个集合的工具操作类

12.为什么构造方法的定义上不写返回值类型,如果不返回写一个void不也可以吗

如果构造方法上写了void的话,则表示的就是一个普通方法了,普通方法是在对象实例化之后调用的,而构造方法是在对象实例化的时候同时调用的

13.请解释Error和Exception的区别

Error:表示的是JVM出错,即,程序还没有运行时所发生的错误,用户无法处理; Exception:表示程序运行时发生的错误,用户可以处理;

14.请解释String与StringBuffer的区别,分别在什么时候用 String的内容不能改变(改变的是地址的指向),而StringBuffer的内容是可以改变的 String类和StringBuffer类中定义的方法可以很好的实现互补

从开发角度来说,大部分情况使用的都是String类,很少使用StringBuffer,使用StringBuffer只有一个前提,当字符串的内容需要不断的修改对象的时候

15.请解释throw和throws的区别

throw表示人为的进行异常抛出,手工抛出异常

throws表示:用于方法声明上,表示一个方法不处理异常,而是交给被调用处处理

16.使用char型数据能否表示一个汉字

首先一个汉字占2个字节,而UNICODE编码也是16位的,java又是采用UNICODE编码,但是保存汉字,语言必须是中文才可以保存

17.是否可以继承String类

不可以,因为String类是final类,不可以被继承

18.抽象类可以有构造方法吗

可以有构造方法,而且抽象类中的子类实例化对象的时候也依然符合子类对象实例化的过程,先调用父类的构造方法,为父类的属性初始化,而后调用子类自己的构造方法,所以抽象类中的属性,static属性,常量等都是可以定义的

19.抽象类中可以没有抽象方法吗

可以没有抽象方法,尽管没有抽象方法,也不能直接使用关键字new实例化对象

20.一个抽象类中能否包含内部类或内部抽象类

可以

21.一个抽象类能否使用static 关键字声明

在外部的抽象类肯定不能使用static关键字

在内部抽象类中使用static,则表示外部类,则可以使用

22.一个抽象类能否使用final声明

不能,final定义的类不能有子类,而抽象类必须有子类

23.请解释多线程的两种实例化方式

多线程的两种实现方式是继承Thread类和实现Runnable接口,不管使用何种方式都要覆写run()方法

继承Thread类与实现Runnable接口相比会有当继承的局限

Thread类也是Runnablee接口的子类,不管通过何种方式实现多线程,最终多需要依靠Thread类的start()方法启动

使用Runnablee接口可以更加清楚的表示出数据库共享的概念

24.多个线程操作同一资源的时候需要注意什么?会带来那些问题 多个线程操作同一资源的时候必须考虑到同步,但是过多的同步会造成死锁

25.抽象类和接口的区别

抽象类

关键字:abstract class

组成:属性,(全局)常量,构造方法,普通方法,(抽象方法),static方法 权限:可以使用各种权限,private,public等

使用:抽象类必须有子类,子类必须继承抽象类

子类关键字:class 子类 extends 父类

与接口的关系:一个抽象类可以实现多个接口

设计模式:模板设计

局限:子类只能继承一个父类,有单继承限制

接口:

关键字:interface

组成:全局常量,抽象方法

权限:所有权限必须都是public

使用:接口必须有子类,子类必须实现接口

子类关键字:class 子类 implements 接口A,接口B

与抽象类的关系:接口不能继承抽象类,但是可以继承多个接口

设计模式:工厂设计模式,代理设计模式

局限:子类可以实现多个接口,避免了单继承

当接口和抽象类都能满足的情况下,优先使用接口,因为接口避免了单继承的局限性,便于扩展

接口与抽象类合作适配器设计模式

26.请解释下JAVA中的垃圾回收机制

垃圾收集机制指的是可以对无用的内存空间进行释放,而对垃圾的收集采用两种方式 第一种:不定期的进行自动的垃圾回收,不可控制的

第二种:Runtime中的gc()方法回收,可控的

27.作用域public,private,protected以及不写时的区别

28.如果现在父类中的方法是private,子类中覆写此方法为default权限可以吗?

从概念上来说是可以的,因为父类是private,子类覆写之后是default,而default权限>private,但是从实际角度来说,这种操作是不可能实现的,因为private比较特殊

  篇二:Java软件开发工程师面试题宝典

1、了解j2EE规范,选择几点进行重点消化。

2、异常分类,一般性异常和运行期异常,异常捕获。

3、了解spring mvc框架,和struts mvc框架的区别。

4、要对spring和ibatis非常熟悉,必须,熟知。

5、应适当关注需求分析和产品方面的知识。

6、了解多线程相关知识

7、了解java5以及java6新特性

8、熟悉linux相关命令操作。

9、工厂模式,简单工厂、抽象工厂的区别

10、动态代理模式

11、

一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

二、VECTOR,ARRAYLIST, LINKEDLIST的`区别是什么?

三、HASHTABLE, HASGMAQ,TreeMap区别

四、ConcurrentMap和HashMap的区别

五、Tomcat,apache,jboss的区别

六、GET POST区别

七、SESSION, COOKIE区别

八、Servlet的生命周期

九、HTTP 报文包含内容

十、Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入 十一、redirect, foward区别

十二、关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态,

几个对象,几个属性,几个方法。

十三、谈谈Hibernate的理解,一级和二级缓存的作用,在项目中Hibernate都是怎么使用缓存的

十四、反射讲一讲,主要是概念,都在哪需要反射机制,反射的性能,如何优化 十五、谈谈Hibernate与Ibatis的区别,哪个性能会更高一些

十六、对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理

十七、线程同步,并发操作怎么控制

十八、描述struts的工作流程。

十九、Tomcat的session处理,如果让你实现一个tomcatserver,如何实现session机制

二十、关于Cache(Ehcache,Memcached)

二一、sql的优化相关问题

二二、oracle中 rownum与rowid的理解,一千条记录我查200到300的记录怎么查? 二三、如何分析ORACLE的执行计划?

二四、 DB中索引原理,种类,使用索引的好处和问题是什么?

二五、JVM垃圾回收实现原理。垃圾回收的线程优先级。

二六、jvm 最大内存设置。设置的原理。结合垃圾回收讲讲。

Java面试宝典2010版

一. Java基础部分..................................................................................................................... 8

1、一个""源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 9

2、Java有没有goto ....................................................................................................... 9

3、说说&和&&的区别。 ............................................................................................... 9

4、在JAVA中如何跳出当前的多重嵌套循环? .......................................................... 9

5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上 10

6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错 ..................... 10

7、char型变量中能不能存贮一个中文汉字为什么 ................................................ 10

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

9、请设计一个一百亿的计算器 ................................................................................... 11

10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

......................................................................................................................................... 12

11、"=="和equals方法究竟有什么区别? ................................................................. 12

12、静态变量和实例变量的区别? ............................................................................. 13

13、是否可以从一个static方法内部发出对非static方法的调用? ........................ 14

14、Integer与int的区别 .............................................................................................. 14

15、d(11.5)等於多少 d(-11.5)等於多少 ................................... 14

16、下面的代码有什么不妥之处 ............................................................................... 14

17、请说出作用域public,private,protected,以及不写时的区别 ........................ 15

18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

......................................................................................................................................... 15

19、构造器Constructor是否可被override ................................................................ 16

20、接口是否可继承接口 抽象类是否可实现(implements)接口 抽象类是否可继

承具体类(concrete class) 抽象类中是否可以有静态的main方法? ...................... 16

21、写clone()方法时,通常都有一行代码,是什么? ............................................. 16

22、面向对象的特征有哪些方面 ................................................................................. 16

23、java中实现多态的机制是什么? ......................................................................... 18

24、abstract class和interface有什么区别 ................................................................. 18

25、abstract的method是否可同时是static,是否可同时是native,是否可同时是

synchronized .................................................................................................................. 20

26、什么是内部类?Static Nested Class 和 Inner Class的不同。 ........................... 20

27、内部类可以引用它的包含类的成员吗?有没有什么限制? ............................. 22

28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可

以implements(实现)interface(接口) ............................................................................ 22

29、lass()方法调用 .......................................................................... 23

30、String是最基本的数据类型吗 ............................................................................ 23

31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的

内容到底变了没有? ..................................................................................................... 23

32、是否可以继承String类 ....................................................................................... 24

33、String s = new String("xyz");创建了几个String Object 二者之间有什么区别?

......................................................................................................................................... 24

34、String 和StringBuffer的区别 ............................................................................... 25

35、如何把一段逗号分割的字符串转换成一个数组 ............................................... 25

36、数组有没有length()这个方法 String有没有length()这个方法? .................... 26

37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; .................. 26

38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不

会被执行,什么时候被执行,在return前还是后 .................................................... 26

39、下面的程序代码输出的结果是多少? ................................................................. 27

40、final, finally, finalize的区别。 .............................................................................. 29

41、运行时异常与一般异常有何异同? ..................................................................... 29

42、error和exception有什么区别 ............................................................................. 29

43、Java中的异常处理机制的简单原理和应用。 ..................................................... 29

44、请写出你最常见到的5个runtime exception。 ................................................... 30

45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表

什么意义?在try块中可以抛出异常吗? .................................................................. 30

46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法 stop()和

suspend()方法为何不推荐使用? ................................................................................. 30

47、sleep() 和 wait() 有什么区别 ............................................................................. 31

48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ................. 34

49. 下面两个方法同步吗?(自己发明) .................................................................. 34

50、多线程有几种实现方法同步有几种实现方法 ................................................. 34

51、启动一个线程是用run()还是start() . .................................................................. 35

52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此

对象的其它方法 ........................................................................................................... 35

53、线程的基本概念、线程的基本状态以及状态之间的关系 ................................. 35

54、简述synchronized和的异同 ? ........................ 36

55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。

写出程序。 ..................................................................................................................... 38

56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着

再回到主线程又循环100,如此循环50次,请写出程序。 .................................... 40

57、介绍Collection框架的结构 .................................................................................. 45

58、Collection框架中实现比较要实现什么接口 ....................................................... 45

59、ArrayList和Vector的区别 .................................................................................... 45

60、HashMap和Hashtable的区别 .............................................................................. 46

61、List 和 Map 区别 ............................................................................................... 46

62、List, Set, Map是否继承自Collection接口 ......................................................... 47

63、List、Map、Set三个接口,存取元素时,各有什么特点? ............................. 47

64、说出ArrayList,Vector, LinkedList的存储性能和特性 ......................................... 48

65、去掉一个Vector集合中重复的元素 .................................................................... 48

66、Collection 和 Collections的区别。 ..................................................................... 48

67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢 是用==还是

equals() 它们有何区别 .............................................................................................. 48

68、你所知道的集合类都有哪些?主要方法? ......................................................... 49

69、两个对象值相同(ls(y) == true),但却可有不同的hash code,这句话对不

对 ................................................................................................................................... 49

70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

......................................................................................................................................... 50

71、说出一些常用的类,包,接口,请各举5个 ..................................................... 51

72、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请

说出他们分别是哪些类? ............................................................................................. 51

73、字节流与字符流的区别 ......................................................................................... 51

74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作

用。 ................................................................................................................................. 53

75、描述一下JVM加载class文件的原理机制 ....................................................... 53

76、heap和stack有什么区别。 .................................................................................. 53

77、GC是什么 为什么要有GC .............................................................................. 54

78、垃圾回收的优点和原理。并考虑2种回收机制。 ............................................. 54

79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法

主动通知虚拟机进行垃圾回收? ................................................................................. 54

80、什么时候用assert。 ............................................................................................... 54

81、java中会存在内存泄漏吗,请简单描述。 ......................................................... 55

82、能不能自己写个类,也叫ng? ....................................................... 58

83. Java代码查错................................................................................................................... 59

二. 算法与编程 ...................................................................................................................... 63

1、编写一个程序,将文件中的单词与文件中的单词交替合并到文件中,文件中的单词用回车符分隔,文件中用回车或空格进行分隔。 . 63

2、编写一个程序,将d:java目录下的所有文件复制到d:jad目录下,并将原

来文件的扩展名从改为。 .............................................................................. 64

3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。

......................................................................................................................................... 66

4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各

个字符的个数。 ............................................................................................................. 67

5、说明生活中遇到的二叉树,用java实现二叉树 .................................................. 68

6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次

数,并按重复次数排序: ............................................................................................. 73

7、写一个Singleton出来。 ......................................................................................... 77

8、递归算法题1 ............................................................................................................ 79

9、递归算法题2 ............................................................................................................ 80

10、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 ...................... 81

11、有数组a[n],用java代码将数组元素顺序颠倒 ................................................. 82

12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千

零一拾一元整)输出。 ................................................................................................. 83

三. html&JavaScript&ajax部分 ............................................................................................. 84

1. 判断第二个日期比第一个日期大 ............................................................................ 84

2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6

用绿色字体,7,8,9用红颜色字体。 ...................................................................... 85

3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字 否则的话提

示用户并终止提交 ....................................................................................................... 86

4、请写出用于校验HTML文本框中输入的内容全部为数字的javascript代码 .... 86

5、说说你用过那些ajax技术和框架,说说它们的区别 .......................................... 87

四. Java web部分 ................................................................................................................... 87

1、Tomcat的优化经验 .................................................................................................. 87

2、HTTP请求的GET与POST方式的区别 .............................................................. 87

3、解释一下什么是servlet; .......................................................................................... 87

4、说一说Servlet的生命周期 .................................................................................... 87

5、Servlet的基本架构 .................................................................................................. 88

6、SERVLET API中forward() 与redirect()的区别? ............................................... 88

7、什么情况下调用doGet()和doPost()? ................................................................... 88

8、Request对象的主要方法: ..................................................................................... 88

9、forward 和redirect的区别 ...................................................................................... 89

10、ttribute() 和 arameter() 有何区别............................... 89

11. jsp有哪些内置对象作用分别是什么 分别有什么方法? ................................ 89

12. jsp有哪些动作作用分别是什么 .......................................................................... 90

13、JSP的常用指令 ...................................................................................................... 90

14. JSP中动态INCLUDE与静态INCLUDE的区别? ............................................. 91

15、两种跳转方式分别是什么有什么区别 ............................................................. 91

16、页面间对象传递的方法 ......................................................................................... 91

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

18、MVC的各个部分都有那些技术来实现如何实现 ........................................... 91

19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,

如何输出一个某种编码的字符串? ............................................................................. 92

20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就

在另一页面显示按什么排序,结果为,提供reset .................................................... 92

五. 数据库部分 ...................................................................................................................... 92

1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 ....... 92

2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排

序..................................................................................................................................... 93

3、存储过程与触发器必须讲,经常被面试到 ......................................................... 93

4、数据库三范式是什么 ............................................................................................. 95

5、说出一些数据库优化方面的经验 ......................................................................... 96

6、union和union all有什么不同 ............................................................................... 97

7.分页语句 ...................................................................................................................... 98

8.用一条SQL语句 查询出每门课都大于80分的学生姓名................................... 101

9.所有部门之间的比赛组合 ........................................................................................ 102

10.每个月份的发生额都比101科目多的科目 .......................................................... 102

11.统计每年每月的信息 .............................................................................................. 104

12.显示文章标题,发帖人、最后回复时间 .............................................................. 105

  篇三:Java面试题—WEB开发必看

以前的收藏,估计很少有这么全的面试题集了^_^

基础知识:

1. C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是able的子类。

的接口和C++的虚类的相同和不同处。

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是publicstatic,所有方法默认情况下是public.一个类可以实现多个接口。

3.垃圾回收的优点和原理。并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

4.请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

5.请讲一讲析构函数和虚函数的用法和作用。

r与Exception有什么区别?

Error表示系统级的错误和程序不必处理的异常,

Exception表示需要捕捉或者需要程序进行处理的异常。

7.在java中一个类被声明为final类型,表示了什么意思?

表示该类不能被继承,是顶级类。

8.描述一下你最常用的编程风格。

和stack有什么区别。

栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。

堆是栈的一个组成元素

10.如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。

publicclassBigInt()

{

int[]ArrOne=newArrOne[1000];

StringintString="";

publicint[]Arr(Strings)

{

intString=s;

for(inti=0;i<t;i++)

{

11.如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现

12,谈谈final,finally,finalize的区别。

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

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

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

13,AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

14,StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。

NestedClass(一般是C++的说法),InnerClass(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见

=704&page=1

注:静态内部类(InnerClass)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

第四,&和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

15,HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。

16,Collection和Collections的区别。

  篇四:java_web开发人员面试题及答案

java 面试题

一.选择题(每题1分)

1. jsp 有几个内置对象?()(单选)

A 5个 B 6个C9个 D 8个 2.在JAVA中,如何跳出当前的多重嵌套循环?()(多选)

A break Breturn C forward D finally

3. 四种会话跟踪技术,哪个范围最大?()(单选)

A page B request C session Dapplication

4. java中有几种方法可以实现一个线程?()(单选)

A 1种B 2种 C 3种 D 4种

5. 同步有几种实现方法()(单选)

A 4种B 2种 C 3种 D 1种 6. xml有哪些解析技术()(多选)

ADOMBSAXCSTAXD JDOM

7. 下列说法正确的是()(多选) A 构造器Constructor可被继承

BString类不可以继承 C 判断两个对象值相同用“==”

Dchar型变量中能存贮一个中文汉字

8.下面说法错误的是()(单选)

A Vector是线程安全的

Bfloat f=3.4是正确的

C StringBuffer的长度是可变的

D StringBuffer的长度是不可变的 9. 下列关于集合的说法正确的是()(多选)

AList 的具体实现包括 ArrayList 和 Vector

BMap 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值

C Set的元素是有序的

DHashtable是线程安全的。 10. 下列关于线程说法正确的是()(多选)

A调用sleep不会释放对象锁。

B调用wait方法导致本线程放弃对象锁

C当一个线程进入一个对象的一个synchronized方法后,其它线程不可进入此对象的其它方法

D notify():唤醒全部处于等待状态的线程。

11. 给定JSP程序源码如下,该JSP运行后输出的结果是()。(单选)

<%int count="1;%">

Count:<%=++count%>

A Count:1BCount:2 C1:2 D Count:

12在J2EE中的一个JSP文件中,有表达式<%=2+3%>,它将输出()(单选)

a)2+3b)5c)23d)不会输出,因为表达式是错误的

13 在J2EE中,JSTL提供条件标签以支持JSP页面的各种条件,其中()类似于Java语言的switch语句。(单选)

a)b)c)d)

14. 在进行Java Web开发时,假定一个变量保存在session中,要获得这个变量的值,可以使用以下()语句。(单选)

a)ttribute(“name”) b)ttribute(“name”)

c)ttribute(“name”)

d)nitParameter(“name”)

15)在J2EE中,编写Servlet过滤器时,()接口用于调用过滤器链中的下一个过滤器。()(单选)

a)Filterb)FilterConfigc)FilterChaind)Servlet

16) 关于视图的描述正确的是() (单选)

a) 视图是一种特殊的表,它存储了用户定制的数据。

b) 视图仅用于用户进行查询,不可以通过视图对数据进行修改。

c) 在sql server中可以通过用T-sql语句来创建,也可以通过企业管理器。

d) 创建视图只能操作本机器上的数据库表。

17)STRUTS框架中,()类在视图层和控制层之间传递HTML表单数据。(单选) a) Action b) ActionForwardc) ActionFormd) ActionServlet

18)Struts控制器的主要任务是接受用户请求、根据用户请求调用对应的模型组件、获取业务逻辑执行结果的根据处理结果选择适合的视图组件返回给用户,实现Struts控制器的类中不包括()。(单选) a)ActionServletb)Actionc) ActionFormd)ActionForward

19)在OOD中,类和接口之间的关系称之为()。(单选)

a) 泛化b)实现c) 关联d) 继承

20) 以下关于SessionFactory的说法哪些正确?()(多选)

A) 对于每个数据库事务,应该创建一个SessionFactory对象

B) 一个SessionFactory对象对应一个数据库存储源。

C) SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源只需要创建一个。

D) SessionFactory的load()方法用于加载持久化对象

21) 关于AOP错误的()(单选)

A)AOP将散落在系统中的“方面”代码集中实现

B)AOP有助于提高系统可维护性

C)AOP已经表现出将要替代面向对象的趋势 D)AOP是一种设计模式,Spring提供了一种实现

22) 依赖注入说法正确的(单选)

A)依赖注入的目标是在代码之外管理程序组建间的依赖关系

B)依赖注入即是“面向接口”的编程

C)依赖注入是面向对象技术的替代品

D)依赖注入的使用会增大程序的规模

23)以下哪些属于Session的方法?()(多选)

A)load()

B)save()

C)()

D)update()

E)open()

F)close() 24) 下面那些是Hibernate的查询方式()(多选)

A) sql B) hql C)Criteria

25) 以下数据结构不属于线性结构的是()(单选)

A) 队列 B) 线性表C)二叉树 D) 栈

26)下列是文件读写的类是()(多选)

A)File Reader B) File C)FileWriter D) InputStream

27)数据库技术中的“脏数据',是指()的数据。(单选)

A) 错误B回返C未提交D未提交的随后又被撤消

28)在计算机中,—个字节是由多少个二进制位组成的() (单选)

A). 4 B). 8 C).16 D). 24

29)设正x、y均为整型变量,且x=10 y=3,则以下语句printf("%d,%d ",x--,--y); 的输出结果是()(单选) A).10,3 B). 9,3 C). 9,2 D).10,2

30) 下列不属于面向对象的方法是()(单选)

A).对象 B). 类 C). 继承 D).过程调用

二. 填空(每空1分) 1. String s = new String("xyz");创建了____2_个String 对象?

2. d(9.5)等於____10_ d(-9.5)等於______ -9

3. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会被执行,什么时候被执行,在return_________ ( 前还是后?)

4. 如何现实servlet的单线程模式<%@ page="" isthreadsafe="false">

5. 类变量必须带的修饰符是 _________static____

6. final类可以修饰在属性 , 方法 和 ______类_ 前面

7. Java默认的包是________________.* ___

rnate里面怎样实现类与类之间的关系___________________________表映射_______

9. Socket 编程服务器端用___________serverSocket_类来创建socket对象

三. 判断题(每题2分)

1. 依赖注入即是“面向接口”的编程。错

2. Overload和Override都是java多态的不同体现形式。对

3. String是最基本的数据类型错

4. 启动一个线程是用start()对

5. 接口可以继承接口对

四.简答题(每题4分)

1.下列程序打印结果是

int[] arr = {1,3,3,2,8};

String str = “”;

int i=0;

publicvoid doIt(){

for(;i<th;){

if(arr[i]>arr[i+1]){

str=arr[i]+arr[i+1]+str;

break;

} elseif(arr[i]<arr[i+1]){

str=arr[i]+str+arr[i+1];

i++;

continue;

} else{

str+=arr[i];

i++;

}

}

tln(i);

tln(str);

}

i=2;str=5133

2. 将会打印出什么 package test; public class FatherClass

public FatherClass()

{ tln("FatherClass Create"); }

类:package test;import erClass;

public class ChildClass extends FatherClass public ChildClass() { tln("ChildClass Create"); }

public static void main(String[] args) { FatherClass fc = new FatherClass();

ChildClass cc = new ChildClass(); }}

输出结果:

fatherClass Create

fatherClass Create

hildClass Create

3.下列程序对还是错,如果错请说明原因!

abstract class Name {

private String name;

public abstract boolean isStupidName(String name) {}

abstract method必须以分号结尾,且不带花括号

4. 表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。

select fclass,max(fscore) from table1 group by fclass,fid

5. 下面程序运行结果是

String[] arr1 ={”a”,”b”,”1″,”c”,”b”};

List lst1 = new ArrayList();

(”d”);

ll(lst1,arr1);

tln(lst1);

Setset1 = new HashSet();

(”d”);

ll(set1, arr1);

tln(set1);

运行结果:

d, a, b, 1, c, b

  篇五:JAVA开发工程师面试题

一、 概念题

1、 解释什么是队列(queue),什么栈(stack),有何区别?

队列是一种特殊的线性表,他按照先进先出的原则存储数据。

栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。 2、 用C/C++或者Php,或Java,给出例子,解释什么是异常(exception)?

3、 简述HashMap、HashSet、HashTable的区别。 Hashtable类

Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。 HashMap类

HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key,null key只能有一个。 HashSet类

HashSet继承Set接口。

Set是一种不包含重复的元素的Collection。 4、public、protect和private的区别是什么?

二、 数据库相关题

试设计一个商品相关数据库,要求包括商品类别、商品的基本信息,并完成下面的三个查询。

1、请写出创建相关表的SQL语句。

2. 使用标准SQL,得到2008年1月份入库的所有商品信息。 3. 使用标准SQL,得到“Toy”分类下的所有商品信息。

4. 使用标准SQL,统计出所有包含商品价格低于100.00的分类。

三、 程序填空题。

阅读下列说明、图以及Java程序,将应填入__(n)__处的字句写在答题纸的对应栏内。 1、[说明]

某订单管理系统的部分UML类图如图1-1所示

图4-1 订单管理系统的部分类图

图1-1中,Product表示产 品,ProductList表示所销售产品的列表,Order表示产品订单,0rderltem表示产品订单中的一个条目,OrderList表示订单列 表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表1-1所示。 表1-1

可以使用类java.util。ArrayList来实现对象的聚集关系,如图4-1中OrderList与Order之间的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合以及用来接收集合中每个元素的变量,其语法如下: for(用来接收集合中元素的变量:需要遍历的对象集合),如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口able。Java程序1-1和Java程序1-2分别给出了类OrderList和方法statistic的Java代码。 [Java程序1-1] import .*;

public class OrderList __(1)__ {

private ArrayListorders; public OrderListO {

rs = new ArrayList(Order) 0; }

public void addOrder(Order order) { rs, add (order); }

public IteratoriteratorO {

return __(2)__;

}

public int getNunberOfOrders() { return rs. size(); }

}

[Java程序1-2]

import .*;

public class SalesSystem { private ProductList catalog; private OrderList sales;

private static PrintWriter stdOut = new PrintWriter(,true); public void statistic(){

for(Product product : __(3)__{ int number = 0;

for(Order order : __(4)__ {

for(__(5)__ : order){

if<ls(roduct())) numbe r +=uantity(); } }

tln(ode() + " " + escription() + " "

+ number + " " + number *product.getPrice()); }

}

//其余的方法未列出 }

2、[说明]

传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图 2-1 所示。

图 2-1 传输门响应事件与其状态转换图

下面的[Java 代码 1]与[Java 代码 2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。 [Java 代码 1]

public class Door {

public static final int CLOSED = 1; public static final int OPENING = 2; public static final int OPEN = 3; public static final int CLOSING = 4; public static final int STAYOPEN = 5;

private int state = CLOSED;//定义状态变量,用不同的整数表示不同状态 private void setState(int state){e = state;} //设置传输门当前状态

public void getState(){

// 此处代码省略,本方法输出状态字符串,

// 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED” }

public void click() { //发生 click 事件时进行状态转换 if ( (1) ) setState(OPENING);

else if ( (2) ) setState(CLOSING); else if ( (3) ) setState(STAYOPEN); //发生 timeout 事件时进行状态转换

public void timeout(){ if (state == OPEN) setState(CLOSING); } public void complete(){ //发生 complete 事件时进行状态转换 if (state == OPENING) setState(OPEN);

else if (state == CLOSING) setState(CLOSED); }

public static void main(String [] args){ Door aDoor = new Door(); tate(); k(); tate(); lete(); tate(); k(); tate(); k(); tate(); return; } }

[Java 代码 2]

public class Door {

public final DoorState CLOSED = new DoorClosed(this); public final DoorState OPENING = new DoorOpening(this); public final DoorState OPEN = new DoorOpen(this);

public final DoorState CLOSING = new DoorClosing(this); public final DoorState STAYOPEN = new DoorStayOpen(this); private DoorState state = CLOSED; //设置传输门当前状态

public void setState(DoorState state){ e = state;} public void getState(){ //根据当前状态输出对应的状态字符串 tln(lass()ame()); }

public void click(){ (4) ;} //发生 click 事件时进行状态转换 public void timeout(){ (5) ;}//发生 timeout 事件时进行状态转换 public void complete(){ (6) ;}//发生 complete 事件时进行状态转换 public static void main(String[] args){ Door aDoor = new Door(); tate(); k(); tate(); lete(); tate(); out(); tate(); return; } }