Java面试问题 面向对象的特点jsp内置对象HashMap检索内部对象的机制java解析xml文件的方法说出user级别线程和daemon线程的区别ArrayList与vector的区别运行时异常和一般异常的异同点说说hibernate多对多如学生很班级的映射查询出学生成绩大于80分的姓名问了好多Velocity的东西如如何循环输出后台的数据Velocity中如何比较两个值的大小 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.对象唯一性,分类性,继承性。多态性(多形性) 2.JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet正在执行的内容 out 用来传送回应的输出 config servlet的构架部件 page JSP网页本身 exception 针对错误网页,未捕捉的例外 3,ArrayList和Vector的区别 推荐Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即 Collection的元素 (Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提 供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的 Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与 传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。 如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的 方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下: Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 } 由Collection接口派生的两个接口是List和Set。 List接口 List是有序的Collection,这类似于Java的数组。 和下面要提到的Set不同,List允许有相同的元素 。 除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,允许添加 ,删除,设定元素,还能向前或向后遍历。 实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。 LinkedList类 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get, remove,insert方法 在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列 (deque)。 注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解 决方法是在创建List时构造一个同步的List: List list = Collections.synchronizedList(new LinkedList(...)); ArrayList类 ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size, isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间 。其他的方法运行时间为线性。 每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不 断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用 ensureCapacity方法来增加ArrayList的容量以提高插入效率。 和LinkedList一样,ArrayList也是非同步的(unsynchronized)。 Vector类 Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和 ArrayList创 建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个 线程改变了 Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常 Stack 类 Stack继承自Vector,实现一个后进先出的堆栈。 就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 如果涉及到堆栈,队列等操作,应该考虑用Vector,对于需要快速插入,删除元素,应该使用LinkedList ,如果需要快速随机访问元素,应该使用ArrayList 4.select name from biao where sroce>80 面向对象的特点 封装、继承、多态。jsp内置对象 1.request对象 2.response对象 3.session对象 4.out对象 5.page对象 6.application对象 7.exception对象 8.pageContext对象 9.config对象 HashMap检索内部对象的机制java解析xml文件的方法 DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations)说出user级别线程和daemon线程的区别 Java有两种Thread:“守护线程Daemon”与“用户线程User”。我们之前看到的例子都是用户,守护线程是一种“在后台提供通用性支持”的线程,它并不属于程序本体。从字面上我们很容易将守护线程理解成是由虚拟机(virtual machine)在内部创建的,而用户线程则是自己所创建的。事实并不是这样,任何线程都可以是“守护线程Daemon”或“用户线程User”。他们在几乎每个方面都是相同的,唯一的区别是判断虚拟机何时离开:用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。 ArrayList与vector的区别 Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。2Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。运行时异常和一般异常的异同点Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。 Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception:表示可恢复的例外,这是可捕捉到的。Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。 出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常,或者是通过对异常的处理显式的控制程序退出。异常处理的目标之一就是为了把程序从异常中恢复出来。说说hibernate多对多如学生很班级的映射 班级与学生的关系就是典型的一对多的关系。在实际编写程序时,一对多关系有两种实现方式:单向关联和双向关联。单向的一对多关系只需要在一方进行映射配置,而双向的一对多需要在关联的双方进行映射配置。查询出学生成绩大于80分的姓名问了好多Velocity的东西如如何循环输出后台的数据Velocity中如何比较两个值的大小 Velocity的数字是作为Integer来比较的――其他类型的对象将使得条件为false,但是与java不同它使用"=="来比较两个值,而且velocity要求等号两边的值类型相同。关系、逻辑运算符Velocity中使用等号操作符判断两个变量的关系。例如:#set ( $foo = "deoxyribonucleic acid" )#set ( $bar = "ribonucleic acid" ) 1. 封装、继承、多态2. request,response,out,pageContext,session,application,config,page3. 不是太明白,HashMap把它的元素存储在哈希表中,通过key来寻找吧4. dom,sax,jdom,dom4j...5. 任何线程都可以是“守护线程Daemon”或“用户线程User”。他们在几乎每个方面都是相同的,唯一的区别是判断虚拟机何时离开。用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。6. 运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。7. 学生和班级是多对多?这不大符合情理,不过就照你说的来吧。学生和班级之间是多对多的关联关系,这两张表之间最好不要直接关联,应该设置一张关联表来表达学生表与班级表之间的关联, 这样在Hibernate中,设置的时候,学生实体与关联对象之间关联(多对一),班级也与关联对象关联(多对一),这样设计就比较清楚了。 8. 不知道你表是什么结构,假设姓名与成绩都在一个表里 select name from table where grade > 809,10 没用过Velocity 其实面试分面试哪类人了:新毕业的大学生,肯定是要考些java基础的的东西;几年开发经验的,再考些这东西也不太符合实际,但,往往几年开发经验的以上问题,70%不清楚了已经,,呵呵 为什么这个地方会出现java.lang.NullPointerException异常 关于文件上传状态的存储问题 求救!!静态页面生成以后,包含其它页面的路径问题!!! 求一句 简单的HQL ,关于in 如何获得所提供的日期的前一天 请问:BBS中的消息功能是怎么实现的? 找人开发一个软件 Struts2动态树链接问题 java读取word文档问题(在线等) 高分问:“怎样用JBUILDER来调试jsp程序?”小妹这厢有礼了!望各大哥大姐们鼎力相助,感激不尽!!!! 网站地址问题www.xxxx.com jsp中el表达式问题
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外 3,ArrayList和Vector的区别
推荐Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即 Collection的元素
(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提
供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的
Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与
传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的
方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
List接口
List是有序的Collection,这类似于Java的数组。 和下面要提到的Set不同,List允许有相同的元素
。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,允许添加
,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get, remove,insert方法
在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列
(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解
决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,
isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间
。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不
断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用
ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和 ArrayList创
建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个
线程改变了 Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出
ConcurrentModificationException,因此必须捕获该异常
Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。
就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
如果涉及到堆栈,队列等操作,应该考虑用Vector,对于需要快速插入,删除元素,应该使用LinkedList
,如果需要快速随机访问元素,应该使用ArrayList 4.select name from biao where sroce>80
jsp内置对象 1.request对象 2.response对象 3.session对象 4.out对象 5.page对象 6.application对象 7.exception对象 8.pageContext对象 9.config对象 HashMap检索内部对象的机制
java解析xml文件的方法 DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations)
说出user级别线程和daemon线程的区别 Java有两种Thread:“守护线程Daemon”与“用户线程User”。
我们之前看到的例子都是用户,守护线程是一种“在后台提供通用性支持”的线程,它并不属于程序本体。
从字面上我们很容易将守护线程理解成是由虚拟机(virtual machine)在内部创建的,而用户线程则是自己所创建的。事实并不是这样,任何线程都可以是“守护线程Daemon”或“用户线程User”。他们在几乎每个方面都是相同的,唯一的区别是判断虚拟机何时离开:
用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。
守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
ArrayList与vector的区别 Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。2Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。
运行时异常和一般异常的异同点
Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。 Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception:表示可恢复的例外,这是可捕捉到的。Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。 出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常,或者是通过对异常的处理显式的控制程序退出。异常处理的目标之一就是为了把程序从异常中恢复出来。
说说hibernate多对多如学生很班级的映射 班级与学生的关系就是典型的一对多的关系。在实际编写程序时,一对多关系有两种实现方式:单向关联和双向关联。单向的一对多关系只需要在一方进行映射配置,而双向的一对多需要在关联的双方进行映射配置。
查询出学生成绩大于80分的姓名
问了好多Velocity的东西如如何循环输出后台的数据
Velocity中如何比较两个值的大小 Velocity的数字是作为Integer来比较的――其他类型的对象将使得条件为false,但是与java不同它使用"=="来比较两个值,而且velocity要求等号两边的值类型相同。
关系、逻辑运算符
Velocity中使用等号操作符判断两个变量的关系。例如:
#set ( $foo = "deoxyribonucleic acid" )
#set ( $bar = "ribonucleic acid" )
2. request,response,out,pageContext,session,application,config,page
3. 不是太明白,HashMap把它的元素存储在哈希表中,通过key来寻找吧
4. dom,sax,jdom,dom4j...
5. 任何线程都可以是“守护线程Daemon”或“用户线程User”。他们在几乎每个方面都是相同的,唯一的区别是判断虚拟机何时离开。用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
6. 运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
7. 学生和班级是多对多?这不大符合情理,不过就照你说的来吧。学生和班级之间是多对多的关联关系,这两张表之间最好不要直接关联,应该设置一张关联表来表达学生表与班级表之间的关联, 这样在Hibernate中,设置的时候,学生实体与关联对象之间关联(多对一),班级也与关联对象关联(多对一),这样设计就比较清楚了。
8. 不知道你表是什么结构,假设姓名与成绩都在一个表里
select name from table where grade > 80
9,10 没用过Velocity