文档库 最新最全的文档下载
当前位置:文档库 › JavaWeb面试题

JavaWeb面试题

JavaWeb面试题
JavaWeb面试题

JavaWeb面试题

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

·每当产生异常之后,如果没有程序进行相应的处理,则程序将出现中断的现象,此时实际上一旦产生一个异常之后,JVM会抛出一个异常的实例化对象,如果此时使用了try语句进行捕获的话,则可以进行异常处理,如果没有的话,则交给JVM进行处理,当try语句捕获到了异常之后,会与catch中的异常类型进行匹配,如果匹成功,则使用此catch语句进行处理。

·应用:简单的引用,就是在所有有throws 关键字的地方加入try…..catch

·如果按照一个标准作法的话,try、catch、finally、throw、throws关键字应该一起使用。

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

·将无用的对象空间进行释放,两种回收:自动回收;手工调用System.gc()方法,实际上调用System.gc()就相当于调用Runtime.getRuntime().gc()方法。

3、Error于Exception有什么区别?

·Error表示由JVM进行处理的,是JVM出错。

·Exception是可以由程序进行处理的,使用try…catch进行处理。

4、谈谈final,finally,finalize的区别。

·final:是定义常量、方法、类的,声明的方法不能被覆写、声明的类不能被继承。

·finally:是异常的统一出口。

·finalize:是垃圾回收前的收尾工作,是Object类中定义的

5、Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

·允许继承或实现,因为匿名内部类就是在抽象类和接口的基础之上发展起来的。

6、Static Nested Class 和Inner Class的不同。

·使用static声明的内部类就是外部类,可以通过外部类、内部类直接访问。

·普通的内部类是不能够直接被外部所访问的,需要通过外部类实例再找到内部类实例。

7、HashMap和Hashtable的区别。

·HashMap

|-JDK1.2之后推出,是新的类

|-采用异步处理方式,性能比较高,但是属于非线程安全

|-允许设置null

·Hashtable

|-JDK1.0时推出,是旧的类

|-采用同步处理方式,性能较低,但是属于线程安全

|-不允许设置null,否则将出现NullPoinerException

8、什么时候用assert?

·JDK1.4之后增加的新的关键字—assert,表示断言,既程序执行到某个地方之后肯定是预计好的

·一般开发中很少使用assert

·要想使用断言,则必须使用-ea参数

9、GC是什么?为什么要有GC?

·GC:垃圾收集

·使用GC可以对垃圾空间的释放操作

10、String = new String(“xyz”);创建了几个String Object?

·产生了两个实例化对象,一个是匿名对象“xyz”,另外一个是通过关键字new实例化的。

11、sleep()和wait()有什么区别?(都表示线程休眠的,sleep()会自动唤醒,而wait()需要手工调用natify ()或者natifyAll()方法)

·sleep()是Thread类中定义的方法,表示线程的休眠,会自动唤醒

·wait()是Object中定义的方法,需要手工调用natify()或notifyAll()方法

12、Java中有没有goto?

·goto属于保留的关键字,java中存在goto,只是无法使用。

13、数组有没有length()这个方法?String有没有length()这个方法?

·数组中存在length这一属性,String中存在length()方法。

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

·重载:Overload

|-在一个类定义的若干方法

|-所有的方法名称相同,但是参数的类型或个数不同

·覆写Override

|-在继承的关系中

|-子类定义了与父类同名的方法,参数类型或个数最好完全一样,注意访问权限不能更加严格·重载的时候不是依靠返回值类型区分的,而是靠参数

15、Set里的元素是不能重复的,那么用什么方法来区分重写与否呢?是用= =还是equals()?它们有何区别呢?

·依靠hashCode()和equals()两个方法完成,= =属于地址值比较,而equals()属于内容比较。使用的是equals()方法。

16、列举出一些最常见的runtime exception。

NumberFormatException、ArrayOutIndexOfBoundException、NullPointerException、ClassCastException

17、abstract class (由抽象方法、变量、常量、全局常量、构造方法和普通方法组成。使用static声明)和interface(全部由抽象方法和全局常量组成,使用interface声明)有什么区别?

·抽象类

|-由抽象方法和常量、变量、全局变量、构造方法、普通方法组成

|-使用abstract声明

|-子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类中的全部抽象方法

|-存在单继承局限,一个子类只能继承一个抽象类

|-抽象类可以实现若干接口

·接口

|-全部由抽象方法和全局常量组成

|-使用interface声明

|-子类通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类中的全部抽象方法。

|-不存在单继承局限,一个子类可以同时实现多个接口

|-接口不能继承一个抽象类,但是允许继承多个接口

18、启动一个线程是用run()和start()?

·使用start()方法,因为要通知JVM进行CPU资源的分类。

19、try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,声明时候被执行,在return前还是后?

·会执行,在return之前执行,只要是finally{}的代码永远会被执行。

20、编程题:写出一个Singleton出来。

·核心就是构造方法私有化

在Java中有Runtime类、Class类都属于单例设计

21、编一段代码,显示在控制台输入一组数字后,排序后在控制台输出。

·假设数字中间使用“”进行分隔,既然要排序,则可以使用集合保存,使用TreeSet保存

以上的操作中,因为所有的数据都已经假设是正确的数字,但是实际中有可能是字符串。

·第一种方法:允许有字符串,但是将所有的字符串忽略。

·第二中方法:不允许有字符串,如果出现了字符串,则程序不再向下继续执行。

为程序改善功能

方法一:

方法二(时间复杂度较高):

22、列出某文件下的所有文件。

23、char类型变量中能不能存储一个中文汉字?为什么?

·可以存放,因为使用的是Unicode编码

24、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

·两种实现方法,继承Thread类,实现Runnable接口

|-Thread类是Runnable接口的子类

|-使用Runnable接口可以实现资源共享的目的

|-所有的线程操作都必须通过Thread类的start()方法启动

·两种实现同步的方法:

|-同步代码块:Synchronize(this){}

|-同步方法

25、float型float f = 3.4是否正确?

·不正确,因为默认情况下3.4是double类型的数据

26、String与StringBuffer的区别?

·String不可修改,StringBuffer允许修改

27、ClassForName的作用?为什么要用?

·ClassForName属于向容器之中加载驱动程序

28、int和Integer有什么区别?

·int是基本数据类型,Integer是包装类

·在JDK1.5之后,可以实现自动装箱及拆箱的操作

29、用最有效的方法算出2乘以8等于几?

·就是使用移位操作:2<<3

30、说出类集框架的完整结构。

·类集框架最大的接口:Collection、Map、Iterator

·Collection:存放单值

|-List:允许有重复内容

|-ArrayList:异步处理,新的操作类,非线程安全

|-Vector:同步处理,旧的操作类,线程安全,支持Enumeration输出|-Set:不允许有重复内容,靠hashCode()和equals()进行重复的验证(无序的) |-HashSet:无序存放

|-TreeSet:有序存放,按Comparable排序

·Map:存放一对值

|-HashMap:新的类,异步处理,非线程安全,允许有null

|-Hashtable:旧的类,同步处理,线程安全,不允许有null

|-Properties:属性操作类

|-TreeMap:有序排列,按key排序,根据Comparable指定排序规则·Iterator:

|-迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准·Enumeration:旧的输出操作

31、是否可以继承String类?

·不允许,因为使用了final声明

32.用IO流把一个文件复制到另一个文件的代码实现

33、设计模式共23种(上网查)

34、建表语句:

CREATE TABLE 表名(字段1,字段2,字段3…….);

35、数据库的优化:

尽量少使用select*,在where条件语句加索引,海量数据加存储过程,在多表查询中我们就需要考虑使用视图。

1、在实际开发中我们几乎不用select *去查询

2、在where字段加索引

3、在多表查询中我们就创建一些视图、

4、如果数据量很大的话我们会考虑使用存储过程

36、索引:while条件出现的字段时就用索引,为什么使用?(加速查询)

37、数据库连接池的工作机制?

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

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

39、MVC(由业务层、视图层、控制器、在我们实际开发中还用到数据层,优点是分层明确,便于后期维护,缺点对于我们程序员来说,文件过多,不便于管理)

答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。实际开发还有数据层

在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型

在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。MVC的优缺点?

优点:分层明确,便于后期维护缺点:文件过多,不便于管理(对于程序员来说)

40、jsp中的两种跳转方式分别是?有什么区别?

在JSP中,跳转页面有两种方式:

1.forward跳转:

2.response跳转:response.sendRedirect("跳转页面地址");

两种跳转的区别如下:

1.forward跳转:a.服务器端跳转,地址栏不改变;b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源);c.request设置的属性在跳转后的页面仍可以使用;d.使用

传递参数。

2.response跳转:a.客户端跳转,地址栏改变;b.所有代码执行完毕后跳转;c.跳转后的页面不能使用上一个页面的request属性;d.使用地址重写传递参数(response.sendRedirect("URL?参数名=参数值"))。

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

动态INCLUDE用jsp:include动作实现它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

42、E L(Expression Language)表达式目的:

为了使JSP写起来更加简单。

43、MCV在项目中的使用

Mvc是分层架构的管理模式

44、常用的容器:list、Set、map

45、在开发中写sql语句时是如何防止sql的注入?

用拼sql的方法、用问号占位符的方式来防止sql语句的注入

46、在做单例模式时是如何防止线程资源共享?

在该方法上用synchronization去避免线程资源共享。用sleep()和wait()方法线程休眠一段时间。

47、在项目开发时cookie是怎么应用的,但那些地方能用?

在项目中一般是不使用的,在淘宝之类的网站看用到。

48、C\S和B\S 的区别?

B\S没有C\S安全、C\S是服务器与服务器交互、B\S则需要下载客户端

49、Oracle数据库是如何写日志的?(触发器( before、after、))。

50、如果是海量数据的话,我们就需要用到Oracle的存储过程(上网查)

51,、jsp的九种内置对象

Pagecontext、page、request、response、application、session、out、exception、config

52.java中多态的体现

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

53、oracle有几种触发器?(上网查)

Before、After、insead of

54、xml的解析方式

?DOM:DOM 是以层次结构组织的节点或信息片断的集合。

?SAX:不需要将数据存储在内存中。

?Dom4J

?JDom

DOM,DOM4J,SAX,SA TX

1),这几种解析方式的区别?(上网查)

55、为什么要在oracle使用序列?(上网查)

56、数组和集合的区别?(数组是定长的,而集合不是定长的)

1、数组是有序的且类型统一的一组值的集合。

2、数组的声明,在声明的时候一定要给出数组的长度

3、数组不属于基本数据类型,它也是一个引用类型。

57、JXL和POI的区别?

对于写入图片,POI没有JXL方便,比较麻烦,而JXL对公式支持不是很好,如果在做与财务有关系的系统的话,建议使用POI.

58、使用存储过程的优缺点:(上网查)

优点:

执行速度快

确保数据库的安全。

提高了系统性能。

自动完成需要预先执行的任务。

缺点:如果要更改范围大到需要输入的

59、Oracle同义词与序列基本使用。

同义词:同义词是一个对象的替代名称

作用:利用同义词可以很方便地操纵不同用户模式下的对象。

序列作用:独立的事务,按一定的增量自动增加或减少,一组整型值。

60、是否会在linux按照jdk和数据库?

不会,因为我们在做项目是用的都是xp的,项目多事由我们公司的专署人员去部署的。

61、项目描述

我们做的这个项目是给**公司用的。这个项目是给这个公司的员工对**公司的(模块)常用资料、系统管理、员工管理、财务管理、报表与统计、库房管理、生产采购平台、业务平、审核管理、基础资料进行操作。

62、3-5年的职业规划?

63、servlet的生命周期?

加载、初始化、执行、摧毁。

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

65、多态的体现?(上网查)

66、什么事事务?(上网查)

事务:Transaction 是访问并可能跟新数据库中的各种数据项的一个程序执行单元。在关系数据库中一个事务可以是一条sql语句或者是一组sql语句或者整个程序。事务是恢复或者并发控制的基本单位。

例如:“大家在同一条船上,要么一起活,要么一起over”;

事务应该具有四个属性:原子性、一致性、隔离性、持续性、

原子性:一个事务是一个不可分割的工作单位,事务中包括的诸多操作,要么都做要么都不做。

一致性:数据库从一个一致性状态转变到另一个一致性状态

隔离性:一个事务不能被其他事务干扰。

持久性:一个事务一旦提交,对数据库中的数据的改变就应该是永久性的。不论接下来的其他操作或者故障都不会对其产生影响。

问题:为什么要用到事务?

例子:去银行取钱,当我将取款单填好以后,钱已经给了职员,此时突发状况,这个时候如果职员没有将数据录入数据库(commit),那么此时钱还是可以退换给我的。也就是说将事务的处理返回(rollback)到了原始状态。

67、Ibatis(是可以调用存储过程的)的优缺点?

优点:相对jdbc来说,减少了61%代码量,简单,容易上手。在做表复杂的时候可以自己写sql语句,比较灵活。

缺点:还得自己写sql语句。

68、svn和cvs的区别?

Svn是外网

Cvs局域网

69、Ibatis里面的动态sql语句?

在做动态查询的时候,根据传入的where条件的不同、选择应用相应的sql语句。

70、Oracle中的组函数以及转换函数?

tochar todate tonunber

71、Oracle中的视图是做什么用的?

在多张表使用视图。方便查询。

72、Oracle数据库优化?(上网查)

索引、

73、Jquery中的选择器?

Id 、class 、标签选择器

74、Ibatis是如何读取动态SQL语句?(上网查)

在做动态查询的时候,根据传入的条件的不同、选择应用相应的sql语句。

75、oracle中定时器是如何用的?(上网查)

76、什么是Junit?

是我们在测试的时候,由程序员做的单元测试

77、struts2的工作流程?

当我们启动Tomcat服务器时,就已加载了struts2,(在jsp)点击登录后进入的是struts.xml然后根据action的名字(即name)class路径进入类当中以此进入方法中(login.java)然后从(login.java)中从return字符串又返回到struts.xml中,根据的值跳转到指定的jsp页面中读出来给客户看

当我们启动tomcat服务器时,就已经加载struts2)

78、单例模式与工厂模式的优缺点?(上网查)

单例模式优点:

在单例模式中,客户调用类的实例时,只能调用一个公共的接口,这就为整个开发团队的提供

了一个共享的概念.

缺点:

实现单例模式的类在实例化后,不能被别的类继承.

在分布式系统中,当系统中的单例类被复制运行在多个虚拟机下时,在每一个虚拟机下后会

创建一个实例对象,此时如果想知道具体哪个虚拟机下运行着哪个单例对象是很困难的,而

且单例类很难实现序列化.

单例模式的优点:在单例模式中,客户调用类的实例时,只能调用一个公共的接口,这就为整个开发

团队的提供了一个共享的概念.

缺点:

工厂模式优点:实现一个新的功能。只需要写一个接口就可以。

缺点:系统开销比较大

79、数组和集合各有什么特点?

数组是定长的,而集合不是定长的

80、数据库连接池的优缺点?

优点:可以说数据库连接池的工作原理来解释

缺点:不好对单元测试,用数据库连接池侯不能够用main方法进行测试

81、存储过程的的优点?

优点:一次编译就保存在oracle数据库缓存中,执行速度。安全较高。可以把update、insert、delete封装到一个存储过程中去运行

缺点:对于后期的维护比较麻烦,移植性差。

82、oracle有哪些约束?

主键、外键

83、什么是cookie?在哪些系统中用到?(上网查)

84、struts2拦截器的特点?(上网查)

面的编程、可插拔

85、struts2的核心?

Webwork拦截器(切面的编程、可插拔)

写日志用拦截器、权限控制、

86.用手写一个简单的触发器、jdbc、建表、文件的复制、冒泡、单例模式?(重点)(动手写)

87、struts1与struts2的区别?

Struts2比struts1好用。

struts1是单例模式,线程安全、依赖传统的servlet,不支持单元测试

struts2是多例模式,线程不安全、不依赖传统的servlet,有拦截器,支持单元测试

88、struts1的优缺点?(上网查)

?优点:是开源软件。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。

页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

89、报表在项目中是怎么使用?

采用的是JFreeChart技术做出来的图形报表。根据查询出来的数据以图形的形式显示给客户看。90、如何对几百万条的数据量项目进行设计?(上网查)

91、struts2的优缺点?(代码量少,线程安全,有拦截器,但每次请求都要实例化一个对象,所以容易产生类爆炸,配置jar包繁琐)

优点:代码量少,线程安全、有拦截器。

缺点:每次请求都要实例化一个对象,所以容易引起类爆炸,配置jar包繁琐

92、ajax怎么实现异步刷新的?

93、数据库的三范式?

94、ibatis和hibernate的区别?

1、hibernate是全封装,ibatis是半封装

2、ibatis还可以灵活写sql语句,而hibernate不能灵活写sql语句

95、不使用hibernate的项目?

银行、金融、表复杂关系的

96.hibernate中的两种缓存的区别?(session和SessionFactory)

Session:是由sessionFactory创建的、缓存的

sessionFactory:

Hibernate提供了两级缓存,第一级是Session的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法比卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。

第二级缓存是一个可插拔的的缓存插件,它是由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此第二级缓存是进程范围或者集群范围的缓存。这个缓存中存放的对象的松散数据。第二级对象有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。缓存适配器用于把具体的缓存实现软件与Hibernate集成。第二级缓存是可选的,可以在每个类或每个集合的粒度上配置第二级缓存。

97、hibernate的主键生成策略?(identity、native、increment、sequence、uuid(128位加密字符串))

―native‖表示由Hibernate自动根据Dialect选择采用identity、increment、sequence等作为主键生成方式,也可以考虑采用uuid由Hibernate根据128位UUID算法(128- bit UUID algorithm)生成16进位制数值,并编码为32位长度的字符串

98、Hibernate中get()与load()方法的区别

1、在查询数据库没有数据时候,get会返回null,而load会抛出异常

2、load先去缓存中查询,如果没有,再到数据库中查询。而get直接到数据库中进行查询

hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

99、hibernate的特点:

1、Hibernate会自动生成sql语句,代码量少,但是在查询的时候比较耗内存,在处理多表时候比较复杂,配置文件繁琐、不便于后期的维护,对查询海量数据的时候,不建议用Hibernate。

100、Hibernate和jdbc的优缺点?

hibernate优点:由于hibernate有缓存、查询速度快

缺点:对大数据量的时候容易产生数据溢出

Jdbc 缺点:太多的sql语句需要去声明,代码太多太繁琐

优点:简单易学

101、什么是hibernate缓存?为什么要清除缓存?

------

1、Hibernate每次查询出来的数据都会放到内存中、时间长了,会造成数据溢出。

102、Hibernate的事务?(在多张表中使用)

本身没有事务、把传统Jdbc的事务进行封装管理、在增删改时用事务、查询时不需要用事务

103、hibernate中的查询?

Load、get、query(不能添加。需要序列)、criteria

104、清除缓存的三种方法?

session.evict(emp);//清除缓存

//session.clear();//清除缓存

session.close();//清除缓存

(构造器)初始化类的

105、hibernate的生命周期?

没有save()之前是Transient(暂时)、Persistent(持久)、Detached(分离)

106、hibernate中的容器?

Set、List。Map、Bag

107、hibernate的优化?

1.使用双向一对多关联,不使用单向一对多

2.灵活使用单向一对多关联

3.不用一对一,用多对一取代

4.配置对象缓存,不使用集合缓存

5.一对多集合使用Bag,多对多集合使用Set

6. 继承类使用显式多态

7. 表字段要少,表关联不要怕多,有二级缓存撑腰

108、hibernate中的注解?

Jdk1.5之后才支持注解 hibernate3.0后推出的

109、单个使用,自带的mvc、持久层配置都很繁琐

110、spring、hibernate整合

1、添加hibernate支持

2、添加spring支持

111、spring的核心AOP和IOC?

IOC依赖注入,IOC注入方式:通过set把类注入,也可以通过构造方法进行注入

AOP是面向切面编程

112 、spring中bean与bean间是如何注入的(管理)?

通过ref去注入(管理)

113、spring中的事务?

编程式事务,配置式事务

Java Web面试题讲解

1、JSP和Servlet在面试中出现的题目

2、MVC设计模式

1、JSP有哪些内置对象?作用分别是什么?

a)一共有九个内置对象

pageContext javax.servlet.jsp.PageContext

request javax.servlet.http.HttpServletRequest

response javax.servlet.http.HttpServletResponse

session javax.servlet.http.HttpSession

application javax.servlet.Servlet Context-->可用

this.getServletContext()替代

config javax.servlet.ServletConfig

exception https://www.wendangku.net/doc/7f10137263.html,ng.Throwable

page https://www.wendangku.net/doc/7f10137263.html,ng.Object

out javax.servlet.jsp.JspWriter

b)作用:

1、pageContext 表示页容器-->EL、标签、上传

2、request 服务器端取得客户端的信息:头信息、Cookie、请求参数、MVC设计

模式

3、response 服务器端回应给客户端信息:Cookie、重定向

4、session 表示每一个用户,用于登录验证上

5、application 表示整个服务器,getRealPath()

6、config 去的初始化参数,初始化参数在web.xml中配置

7、exception 表示的是错误页的处理操作

8、page 如同this一样,表示整个JSP页面

9、out 输出,但是尽量使用表达式输出

2、JSP有哪些动作?作用分别是什么?

所谓的动作—>指标签指令:

·:包含

·:跳转

·:使用JavaBean

·:设置属性,通过反射调用方法

·:取得属性

·插入Applet程序的代码

3、JSP中动态include与静态include的区别?

·动态include:,如果包含的是动态页,则先编译之后再进行处理

·静态include:<%@include%>,直接将内容先包含后处理

4、两种跳转方式?区别?

·服务器跳转:,跳转之后地址栏不改变,可以传递request属性实际上是对RequestDispathcer接口的封装。

·客户端跳转:response.sendRedirect(),跳转之后地址栏改变

5、请总结一下WEB开发中的绘画跟踪实现

1、session,也是最常用的一种

2、Cookie

3、地址重写

4、隐藏域

6、在Web开发中需要处理HTML标记是,应做什么样的处理,要筛选哪些字符(<、>、&、‖、’)。

因为以上的标记都属于HTML范畴的内容,所以必须进行转义操作:<、>、"、&apos、&;

7、说明JSP中errorPage的作用,应用范围。

表示错误页的操作,在一般的站点中,只要一个程序出现了错误,就是产生了一场,则可以统一跳转到一个页面上进行显示,那么这种操作就属于错误页的处理,但是简单的错误页基本上都是在JSP的开发中使用的。

要想进行错误页的设置,需要满足以下两个条件:

1、在错误能够处理的页上的page指令中,增加:isErrorPage=”ture”,表示可以处理错误。

2、在每一个页面制定errorPage,进行isErrorPage为true的页面。

如果现在希望配置一种全局的错误处理的话,则可以在web.xml中进行配置。

一旦出现错误之后,会自动跳转到指定的页面中,但是这种跳转,永远是属于服务器端跳转。

8、写一段JDBC连接Oracle的程序,并实现数据查询。

a)步骤:

·定义一系列的全局常量:驱动路径、连接地址、用户名、密码

·加载驱动程序

·连接数据库

·操作数据库:更新或查询

·关闭数据库

c)代码:

9、简述在JSP中是如何实现分页操作的。

a)首先分页有两种:

·真分页:性能较高,是基于数据库的操作,只是从数据库中提取出部分的数据进行显示,所以性能高,但是可移植性低。

·假分页:性能较低,是将全部的结果查询出来,之后依靠算法分页,只是显示部分数据,因为使用的是通用的语法,所以可移植性高。

b)分页实现原理:

·定义一系列的变量:currentPage、lineSize、并通过查询求出allRecorders和计算求出pageSize;

|-pageSize = (allRecorders + lineSize - 1)/lineSize

·之后数据库查询语句中根据lineSize和currentPage进行数据的查询;

|-Oracle中使用rownum、Mysql中使用limit()

·之后通过表单不断地修改currentPage、lineSize就可以实现分页显示。

10、介绍在JSP中如何使用JavaBeans

JavaBeans的格式要求:必须有包、public class 声明、属性封装、无参构造、setter、getter

import语句导入或者通过

11、Servlet的生命周期?

·加载

·初始化,正常一次:对应init()方法,有两个init()其中一个是有ServletConfig对象,此方法存在则无参不调用,正常情况下在第一次使用Servlet的时候才进行初始化操作,当然,也可以通过配置在容器启动的时候自动进行初始化

·服务,服务多次:所有的服务都有services()方法分配,主要有doGet()和doPost(),分别处理get和post请求

·销毁,正常一次:调用destroy()方法,如果一个Servlet长时间不适用,也会自动销毁,而当再次使用的时候就必须重新进行初始化操作。

·卸载

12、Servlet中forward()与redirect()的区别?

forward()方法是RequestDispatcher接口定义的,而redirect()是response定义的,一个是服务器端跳转,另外一个是客户端跳转。

13、MVC的各个部分都有哪些技术来实现?如何实现?

·MVC:Model、View、Controller

|-Model:JavaBean:业务处理,数据处理

|-View:显示的JSP,最好不存在任何的Scriptlet,可以使用标签消除

|-Controller:控制,接受View传递的内容和调用JavaBean,并根据javaBean的处理结果进行跳转。

·实现原理:所有的JSP将内容提交给Servlet,Servlet接受这些内容并调用相应的JavaBean进行业务及数据的处理,一般JavaBean有专人负责开发,玩车鞥业务的操作流程,儿Servlet调用的只是借口,并根据这些接口的操作结果将内容交给JSP进行显示,但是在现实的时候尽可能少出现Scriptlet代码。14、简述国际化程序的实现思路。

·Local、属性文件、ResourceBundle

·国际化程序的实现,是根据本机的操作系统的语言类型,选择不同的属性文件,所有程序的基本代码一样,但是文字显示不一样,所以将内容作为属性文件出现之后,可以只显示属性文件中的文字。

15、描述JSP和Servlet的区别、共同点、各自应用的范围?

·先有的Servlet再有的JSP,Servlet是在Java中嵌入HTML代码,而JSP是在HTML中嵌入Java 代码。

·共同点:JSP可以完成的功能,Servlet都可以完成,但是对于过滤器、监听器只能有Servlet完成。

·应用范围:JSP用于显示,Servlet用于控制。

16、简述web.xml的作用

属于部署描述符,在整个Java中只要是容器都会存在部署描述符,在部署描述符可以控制整个Web 中的各个组件的运行状态,也可以配置整个容器的状态:

凡是自动生成的代码,都需要重点注意:

ORACLE 面试问题-技术篇

1. 解释冷备份和热备份的不同点以及各自的优点

解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

解答:重建控制文件,用带backup control file 子句的recover 命令恢复

数据库。

3. 如何转换init.ora到spfile?

解答:使用create spfile from pfile 命令

4. 解释data block , extent 和segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象

拥有的所有extents被称为该对象的segment.

5. 给出两个检查表结构的方法

解答:1。DESCRIBE命令

2.DBMS_METADATA.GET_DDL 包

6. 怎样查看数据库引擎的报错

解答:alert log.

7. 比较truncate和delete 命令

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

8. 使用索引的理由

解答:快速访问表中的data block

9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的信息

10. FACT Table上需要建立何种索引?

解答:位图索引(bitmap index)

11. 给出两种相关约束?

解答:主键和外键

12. 如何在不影响子表的前提下,重建一个母表

解答:子表的外键强制实效,重建母表,激活外键

13. 解释归档和非归档模式之间的不同和它们各自的优缺点

解答:归档模式是指你可以备份所有的数据库transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高

14. 如何建立一个备份控制文件?

解答:Alter database backup control file to trace.

15. 给出数据库正常启动所经历的几种状态?

解答:STARTUP NOMOUNT –数据库实例启动

STARTUP MOUNT - 数据库装载

STARTUP OPEN –数据库打开

16. 哪个column可以用来区别V$视图和GV$视图?

解答:INST_ID 指明集群环境中具体的某个instance 。

17. 如何生成explain plan?

解答:

运行utlxplan.sql. 建立plan 表

针对特定SQL语句,使用explain plan set statement_id = 'tst1' into plan_table

运行utlxplp.sql 或utlxpls.sql察看explain plan

18. 如何增加buffer cache的命中率?

解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询v$db_cache_advice . 如果有必要更改,可以使用alter system set db_cache_size 命令

19. ORA-01555的应对方法?

解答:具体的出错信息是snapshot too old within rollback seg , 通常可以通过

增大rollback seg来解决问题。当然也需要察看一下具体造成错误的SQL文本

20. 解释$ORACLE_HOME和$ORACLE_BASE的区别?

解答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品

的目录。

21. 如何判断数据库的时区?

解答:SELECT DBTIMEZONE FROM DUAL;

22. 解释GLOBAL_NAMES设为TRUE的用途

解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,

在建立数据库链接时就必须用相同的名字连结远程数据库

23。如何加密PL/SQL程序?

解答:WRAP

24. 解释FUNCTION,PROCEDURE和PACKAGE区别

解答:function 和procedure是PL/SQL代码的集合,通常为了完成

一个任务。procedure 不需要返回任何值而function将返回一个值

在另一方面,Package是为了完成一个商业功能的一组function和proceudre

的集合

25. 解释TABLE Function的用途

解答:TABLE Function是通过PL/SQL逻辑返回一组纪录,用于

普通的表/视图。他们也用于pipeline和ETL过程。

26. 举出3种可以收集three advisory statistics

解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics

27. Audit trace 存放在哪个oracle目录结构中?

解答:unix $ORACLE_HOME/rdbms/audit

Windows the event viewer

28. 解释materialized views的作用

解答:Materialized views 用于减少那些汇总,集合和分组的

信息的集合数量。它们通常适合于数据仓库和DSS系统。

29. 当用户进程出错,哪个后台进程负责清理它

解答:PMON

30. 哪个后台进程刷新materialized views?

解答:The Job Queue Processes.

31. 如何判断哪个session正在连结以及它们等待的资源?

解答:V$SESSION / V$SESSION_WAIT

32. 描述什么是redo logs

解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。

可以用来修复数据库.

33. 如何进行强制LOG SWITCH?

解答:ALTER SYSTEM SWITCH LOGFILE;

34. 举出两个判断DDL改动的方法?

解答:你可以使用Logminer 或Streams

35. Coalescing做了什么?

解答:Coalescing针对于字典管理的tablespace进行碎片整理,将

临近的小extents合并成单个的大extent.

36. TEMPORARY tablespace和PERMANENT tablespace 的区别是?

解答:A temporary tablespace 用于临时对象例如排序结构而permanent tablespaces

用来存储那些'真实'的对象(例如表,回滚段等)

37. 创建数据库时自动建立的tablespace名称?

解答:SYSTEM tablespace.

38. 创建用户时,需要赋予新用户什么权限才能使它联上数据库。

解答:CONNECT

39. 如何在tablespace里增加数据文件?

解答:ALTER TABLESPACE ADD DA TAFILE SIZE 40. 如何变动数据文件的大小?

解答:ALTER DA TABASE DATAFILE RESIZE ;

41. 哪个VIEW用来检查数据文件的大小?

解答:DBA_DATA_FILES

42. 哪个VIEW用来判断tablespace的剩余空间

解答:DBA_FREE_SPACE

43. 如何判断谁往表里增加了一条纪录?

解答:auditing

44. 如何重构索引?

解答:ALTER INDEX REBUILD;

45. 解释什么是Partitioning(分区)以及它的优点。

解答:Partition将大表和索引分割成更小,易于管理的分区。

46. 你刚刚编译了一个PL/SQL Package但是有错误报道,如何显示出错信息?

解答:SHOW ERRORS

47. 如何搜集表的各种状态数据?

解答:ANAL YZE

The ANAL YZE command.

48. 如何启动SESSION级别的TRACE

java高级工程师_面试题和答案

一:选择题 1. 关于以下程序代码的说明正确的是( D ) 1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. System.out.println(“x=”+x); 12. } 13. } A、 5行不能通过编译,因为引用了私有静态变量 B、 10行不能通过编译,因为x是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 2. 下列关于for循环和while循环的说法中哪个是正确的?( B ) A.while循环能实现的操作,for循环也都能实现 B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果C.两种循环任何时候都可替换 D.两种循环结构中都必须有循环体,循环体不能为空 3. 以下选项中循环结构合法的是( C ) A、while (int i<7) { i++; System.out.println(“i is “+i); } B、 int j=3; while(j) { System.out.println(“ j is “+j); } C、int j=0; for(int k=0; j + k !=10; j++,k++) { System.out.println(“ j is “+ j + “k is”+ k); } D、 int j=0; do{ System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 4. 给出下面代码段, 哪行将引起一个编译时错误?( D )

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软件中年级工程师笔试题复杂逻辑

J2E E部分 1、运算符优先级问题,下面代码的结果是多少?(笔试) package test; public class Test { public static void main(String[] args) { int k = 0; int ret = ++k + k++ + ++k + k; // ret的值为多少 } } 2、运算符问题,下面代码分别输出什么?(笔试) package test; public class Test { public static void main(String[] args) { int i1 = 10, i2 = 10; } } 3、下面代码的结果是什么?还是抛出异常?(笔试) package test; public class Test { public void myMethod(String str) { } public void myMethod(Object obj) { } public static void main(String[] args) { Test t = new Test(); t.myMethod(null); } } 4、假设今天是9月8日,下面代码输出什么?(笔试) package test; public class Test { public static void main(String[] args) { Date date = new Date(); } } 5、下面代码的输出结果是什么? package test; public class Test {

public static void main(String[] args) { double val = 11.5; } } 6、下面代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { Base b = new Test(); b.method(); Test t = new Test(); t.method(); } @Override public void method() { } } class Base { public void method() throws InterruptedException { } } 7、以下代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { new Test().method(); } public void method() { } } class Base { } 8、true or false? package test; public class Test { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); } } 9、输出的结果是什么?

常见的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 1、BS与CS的联系与区别。 回答:C/S 是Client/Server 的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、 Sybase、Informix 或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,客户机上只要安装 一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQL Server 等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端 实现。浏览器通过web Server 同数据库进行数据交互。 C/S 与B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适 应范围, 一般只要有****作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通 过B/S 发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S 有更高的要求B/S 结构的程序架构 是发展的趋势, 从MS 的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的 JavaBean 构件技术等,使B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石 头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实 现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应该都是相同的系统

Java工程师面试题(含答案)

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗 基本数据类型包括byte、int、char、long、float、double、boolean和short。 类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和Integer 有什么区别 Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int 提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求

JAVA程序员笔试面试题汇总及答案

1. 【基础题】请描述访问控制符的各自作用域与区别 答: √√√ √√√ √√ √ 一、名词解释 二、问答题 1. 【中等题】请说出ArrayList与Vector的区别 答: 主要从二方面来说、 同步性:Vector就是线程安全的,也就就是说就是同步的,而ArrayList就是线程序不安全的,不就是同步的 二、数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却就是原来的一半 2. 【中等题】请说出HashMap与Hashtable的区别 答:HashMap与HashT able主要从三方面来说。 一、历史原因:Hashtable就是基于陈旧的Dictionary类的,HashMap就是Java 1、2引进的Map接口的一个实现 二、同步性:Hashtable就是线程安全的,也就就是说就是同步的,而HashMap就是线程序不安全的,不就是同步的 三、值:只有HashMap可以让您将空值作为一个表的条目的key或value 3. 【基础题】Collection 与Collections的区别 答: Collections就是个java、util下的类,它包含有各种有关集合操作的静态方法。

Collection就是个java、util下的接口,它就是各种集合结构的父接口

第十八章输入输出 笔试题 一、填空题 1. 【基础题】File对象的isFile()方法作用就是判断就是否就是文 件,getAbsolutePath() 方法作用就是获取文件或目录的绝对路径。 2. 【基础题】BufferedReader与BufferedWriter以字符流的方式读写文本文件,且效率更高。 3. 【基础题】与以字节流的方式读写文本文件。 二、选择题 1. 【基础题】下列哪个类就是实体类(BC ) A. InputStream B. PrintStream C. Socket D. Reader E. DataInput 2. 【提高题】请选择下列程序的运行结果(A) public class TestIOapp{ public static void main(String [] args) throws IOException{ StringReader stingin = new StringReader("test"); LineNumberReader in = new LineNumberReader(stingin); PrintWriter out = new PrintWriter(System、out); out、println(in、readLine()); out、flush(); } } A. test B. test:1 C. 1:test D. 1 test 3. 【提高题】请选择下列程序的运行结果( B )

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.怎么确保一个集合不能被修改?

15个Java多线程面试题及答案

15个Java多线程面试题及答案 1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。 2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? lock接口在多线程和并发编程中最大的优势是它们为读和写分别提 供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。芯学苑老师强烈建议在你在面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。 3)在java中wait和sleep方法的不同?

通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。 4)用Java实现阻塞队列。 这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。 5)用Java写代码来解决生产者——消费者问题。 与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。 6)用Java编程一个会导致死锁的程序,你将怎么解决?

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任何痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关 键字以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面方法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.wendangku.net/doc/7f10137263.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A.1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } }

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

职业技能题库&在线云笔试平台https://www.wendangku.net/doc/7f10137263.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.wendangku.net/doc/7f10137263.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.wendangku.net/doc/7f10137263.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.wendangku.net/doc/7f10137263.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.wendangku.net/doc/7f10137263.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面试测试题并赋予答案

在main(String[] args)方法内是否可以调用一个非静态方法? 1.不能 同一个文件里是否可以有两个public类? 2.不能 方法名是否可以与构造器的名字相同? 3.可以。 public class Test { public Test(String iceboy) { System.out.println(iceboy); } public void Test(String iceboy) { System.out.println(iceboy); } public static void main(String[] args) { Test a = new Test("abc");//输出“abc” a.Test("iceboy");//输出“iceboy” } } 4.初始化了一个没有run()方法的线程类,是否会出错? 4.不会。 第一种方法:直接继承Thread类。 public class Test { public static void main(String[] args) { ThreadClass t = new ThreadClass(); t.start(); System.out.println("end");//输出“end” } } class ThreadClass extends Thread //Thread类已经实现了空的run()方法。 { } 第二种方法:实现Runnable接口 public class Test { public static void main(String[] args)

{ ThreadClass t = new ThreadClass(); Thread thread = new Thread(t); thread.start(); System.out.println("end"); } } class ThreadClass implements Runnable { public void run() //必须有此方法否则编译报错。它是Runnable接口中的抽象方法。 { System.out.println("Threads"); } } 局部内部类是否可以访问非final变量? 不能访问局部的非final修饰的变量,可以访问局部的使用了final修饰的变量,可以访问成员变量(全局的)。 class Out { private String name = "https://www.wendangku.net/doc/7f10137263.html,"; void print() { final String work = "out.local.work";//若不是final的则不能被Animal 使用. int age=10; class Animal //定义一个局部内部类.只能在print()方法中使用. //局部类中不能使用外部的非final的局部变量.全局的可以. { public void eat() { System.out.println(work);/ /ok //age=20;//error not final,编译时就会出错 System.out.println(name);/ /ok. } } Animal local = new Animal(); local.eat(); }

Java高级工程师笔试试卷.doc

一、选择题(共25题,每题3分,满分75分) 1)使用面向对象思想进行设计的基本步骤不包括()。 A.发现类 B.发现对象 C.发现类的属性 D.发现类的方法 2)在UML屮,类图是一个包含3个部分的矩形,各部分A容不包括()。 A.类名 B.属性 C.方法 D.类和类之间的关系 3)下面关于Java接口的说法错误的是()。 A.—个Java接口是一些方法特征的集合,但没有方法的实现 B.Java接n中定义的方法在不同的地方被实现,可以具有完全不同的行为 C.Java接口屮可以声明私有成员 D.Java接口不能被实例化 4)在Java接口中定义常量,下面语法错误的是()。 A.static int MALE = 1; B.final int MALE = 1; C.int MALE = 1; D.private int MALE = 1; 5)在Java接口中,下列选项中属于有效的方法声明是()。 A.public void aMethod();

B.void aMethod(); C.void aMethod(){} D.private void aMethod(); 6)给定如下Java程序代码,在横线处加入()语句,可以使这段代码编译通过。 interface Parent{ public int count (int i); } public class Test implements Parent { public int count (int i) { return i % 9; } public static void main(String[] args){ int i = p.count(20); } } 7)以下选项屮关于Oracle屮数裾库的说法错误的是()。 A.数据库在逻辑上表现为数据文件、日志文件和控制文件等 B.必须首先创建数据库,然后才能使川Oracle C.可在安装Oracle软件吋同吋创建数据库,也可以在安装后再单独创建数据库 D.每个启动的数据库都对应一个数据库实例,然后由这个实例来访问和控制数据库 8)在Oracle中,使用数据库表student存放学生信息,其中birthday字段存放学生生日,查询该表中1980年9月15 口及以后的学生信息,以下SQL语句正确的是()。 A.SELECT * FROM student WHERE birthday>=,1980-09-15,; B.SELECT * FROM student WHERE birthday〉=.15-9 月-19801; C.SELECT * FROM student WHERE TO_DATE(birthday;YYYY-MM-DD')>=,2009-10-1 *; D. SELECT * FROM student WHERE birthday>=TO_CHAR(' 1980-09-15';YYYY- MM-DD'); 9)一个Oracle数椐库表包含性别字段,在该字段上建立()最合适。

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.wendangku.net/doc/7f10137263.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高级工程师笔试题(技术部分)

Java 软件高级工程师笔试题 【智力部分】(30分) 1.烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分) 2.4,4,10,10,加减乘除,怎么出24点?(5分) 3.如果你有无穷多的水,一个容积为3L的和5L的提桶,你如何准确称出4L的水?(5分) 4.一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天 睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(5分) 5.有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个 小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分) 【专业部分】(70分) 6.简述一下面向对象的特征,并举例说明你对面向对象的理解?(5分) 7.ArrayList和HsahSet的区别,HashMap和Hashtable的区别?(5分) 8.线程同步的关键字是什么?sleep() 和wait() 有什么区别?怎么唤醒wait()停止的线程?(5分)

9.列举你在项目中常用的设计模式(伪代码或类图),并说明每种设计模式的具体应用场景。(5分) 10.Spring中事务管理支持哪几种方式以及每种方式的具体使用方法。(5分) 11.Hibernate的缓存等级及其特点(5分) 12.至少写出一种11位手机号码的正则表达式。(5分) 13.用简短的代码实现字符串“s tr in g”到“s tr in g”转换。即将多个空格转换为一个空格(5 分) 14.使用Socket编写一个程序,客户端向服务器端发送请求(发送字符串即可),服务端接收后发送反馈信息.(10 分)

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);

相关文档
相关文档 最新文档