java面试2

JAVA
38.   jsp内置对象  
1).HttpServletRequest类的Request对象
2).HttpServletResponse类的Respone对象
3).JspWriter类的out对象
4).HttpSession类的session对象
5).ServletContex类的application对象
6).PageContext类的PageContext对象
7).ServletConfig类的Config对象
8)Object类的Page(相当于this)对象
9)Exception
39.   Servlet中的主要方法有哪些?各有什么作用?
init方法初始化Servlet
service方法是Servlet中的业务方法,根据请求方式调用不同的doXXX(doGet方法或doPost方法等)响应请求
destroy方法释放Servlet资源
40.   接口Interface有什么作用?使用接口主要有什么好处?
1) .接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现;
2).利用接口可达到实现多继承的目的;
3).可以在不暴露对象的类的前提下,暴露对象的编程接口.
41.   static和final修饰类,修饰方法和修饰属性时表示什么?
static可以修饰类,方法,属性,分别表示静态类,静态方法,静态属性
final修饰类表示类是最终类,不可再被继承
final修饰方法表示方法不可被子类重写(override)
final修饰属性表示属性是常量
42.   自定义标签有什么作用?
方便JSP页面代码的维护,代码重用
43.   数据库连接对象使用以后在何处释放?
try{}catch(){}finally{} 在finally{}中释放数据库连接对象
44.   异常对象如何分级捕获?
最底层的异常对象(子类异常)放在最前面,越高层的异常对象(父类异常)越放在后面

45.   重载(overload)和重写(override)是什么?
重载(overload)为类似功能的方法提供了统一的名称,但是根据参数列型态的不同,而自动呼叫对应的方法
重写(override)是子类继承父类的方法,但是在子类中有不同的方法实现
46.   工作中使用过哪些设计模式?请举2至3个例子并说明使用场景.
工厂模式,单态模式,Facade模式等等
47.   什么时候释放connection
应该在finally{}语句块里释放connection;
finally{
if (conn != null)
conn.close();
}
48.   异常处理,如何处理多个异常?
异常处理的语句是try{}catch(){}finally{}
当有多个catch()语句,来处理多个异常的话,强调(如果一个异常是另个异常的子类的话,在并行处理的时候子类的异常不会抓到);
49.   可以在try语句模块里释放connection吗?可以.
50.   jsp标签的作用和好处
答:主要用来显示结果数据,用来沟通表示层和业务逻辑层,把页面美工工作和程序编写分开。
51.   statement对象有多少种,以及作用和用法
答:三种,分别为statement,PreparedStatement,CallableStatement
作用是:建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句.
1).PreparedStatement对象有可能比 Statement 对象的效率更高,因为它已被预编译过并存放在那以供将来使用。
2).由方法 prepareCall 所创建。CallableStatement 对象用于执行 SQL
储存程序 ─ 一组可通过名称来调用(就象函数的调用那样)的SQL 语句。CallableStatement 对象PreparedStatement 中继承了用于处理 IN 参数的方法,而且还增加了用于处理 OUT 参数和INOUT 参数的方法。
特别强调:如果数据库支持已存储过程,则可从 JDBC 中调用它们,CallableStatement可调用存储过程语法为:
{call procedure_name[(?, ?, . . .)]}
52.   Final,finalizer,finally区别和各自的用法
final—修饰符
如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
finally—程序控制字
在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。例如下面语句
Try{
语句1
}
catch(){
语句2
}
finally{
语句3
}
语句3始终都会执行
finalize—方法名
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
53.   equals,toString,hasCode三个方法
Equals:比较的两个对象不愿是同一对象,你就应该实现equals方法,让对象用你认为相等的条件来进行比较.
toString: 返回代表该对象的一个字串。一般的,toString方法返回该对象‘文字描述’的字串。返回的结果(即字串)应该是简明且易读的信息。建议所有继承类覆盖该方法
hasCode:(杂凑码)会根据对象型别、个数及内容等计算出所对应的内存识别值,相同对象与内容会计算出相同的hasCode。
54.   什么时候会使用hasCode
hascode是用hashTable的时候为了检索才用的
55.   Hashtable和hashmap的区别  
共同点:都属于Map接口的类,实现了将惟一键映射到特定的值上。
区别:(1)HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
(2)Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。因为它是同步的它比HashMap 慢。线程安全性比较好
56.   问:举例介绍java中有哪些集合?
答:主要有LinkedList,ArrayList,Vector等
下面是详细
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
57.   ArrayList,Vector,LinkedList的区别
答:      
(1) ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。
(2) Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差
(3) LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
58.   说说抽象类和接口的区别。
(1)抽象类可以提供某些方法的实现。如果向抽象类中加入一个新的具体的方法,那么所有的子类一下子就得到了这个方法。接口做不到这一点!(这也许是抽象类的唯一优点)。
(2)因java的单根结构限制,子类只能实现一个抽象类类型,而接口类型则无此限制。这使抽象类作为类型定义工具的效能落后于接口。接口是定义混合类型(实现多重继承)的理想工具。
(3)从代码重构的角度上讲,将一个具体类从构成一个接口类型实现起来更容易。
接口可以实现接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。
59.   Severlet的认识,有那些方法
    Severlet的生命周期:
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
       主要方法:
       public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()
60.   如何做一个队列?
队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。
    Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector可以快速实现JAVA的队列类。
方法说明
enq(x) 向队列插入一个值为x的元素;
deq() 从队列删除一个元素;
front() 从队列中读一个元素,但队列保持不变;
empty() 判断队列是否为空,空则返回真;
clear() 清空队列;
search(x) 查找距队首最近的元素的位置,若不存在,返回-1
其他
61.   条件覆盖、分支覆盖等属于哪种测试
62.   对CMM五个级别的解释。
(1)初始级。软件过程的特点是杂乱无章,有时甚至混乱,几乎没有明确定义的步骤,成功完全依赖个人努力和英雄式核心人物,管理是反应式(消防式)。
(2)可重复级。建立了基本的项目管理过程来跟踪成本、进度和功能特性,制定了必要的过程纪律,能重复早先类似应用项目取得成功。
(3)确定级。管理和工程的软件过程已文件化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来发展和维护软件。
(4)管理级。制定了软件过程和产品质量详细的度量标准。软件过程和产品的质量都被开发组织的成员所理解和控制。
(5)优化级。加强了定量分析,通过来自过程质量反馈和来自新观念、新科技的反馈使过程能不断持续地改进。
跳跃无限
易慰怀
Jdbc 与 odbc的区别
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章