NTT面试题资料
1.JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现
jsp:include page "included.jsp" flush "true"/
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
%@ include file "included.htm" %
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify
Java有那些基本数据类型String是不是基本数据类型他们有何区别。String 不是基本数据类型,是一个对象。基本数据类型不是对象,是一个内存植,如:int,long,short,byte,boolean.char。
4. 写一个方法,实现字符串的反转,如:输入abc,输出cbaStringBuffer ? sb new ? StringBuffer "abcdefg" ; ?
String str sb.reverse .toString ;
5. 编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
“中”.getBytes “GB2312”,”ISO-8859-1” ;
<和exception的区别?
error:表示恢复不是不可能但很困难的情况下的严重错误,比如说内存溢出,不可能指望程序能处理这种错误;
exception:表示一种设计或实现问题。它表示程序运行正常,从来不发生的情况。
7.是否可以继承String类?
不可以。String是final类。
8.给我一个最常见的运行时异常runtime exception
NullPiontException
SQLException
ClassNotFoundException
ArithmeticException
FileNotFoudException
IOException
9. 接口是否可继承接口, 抽象类是否可实现 implements 接口, 抽象类是否可继承具体类
接口可以继承接口。
抽象类可以实现接口。
抽象类可以继承具体类 concrete class 。
10. 构造器是否可被override?
可以,通过子类覆盖。
11.abstract的method方法是否可以同时是static,是否可以同时是
native,是否可以同时是synchronized?
Abstract不可以与static合用
Abstract不可以与native合用
Abstract不可以与synchronized合用
12.Java有没有Goto?
有,但没有用
13. 数组有没有length 这个方法?String有没有length 这个方法?
数组有length这个属性,没有length 方法
String有length 这个方法,没有length属性
14.构造器是否可以被override?
可以,通过子类覆盖
15. String ,Stringbuffer和StringBuilder的区别?ng是字符串常量;它们的值在创建之后不能改变。ngBuffer是线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。ngBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 append 和
equals()方法insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。String a "a";//假设a指向地址0x0001,
a "b";//重新负值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的。
从表面上看String类型的对象改变了值,但事实是他不能改变值,只能改变指向的地址
StringBuffer则不同,直接改变指向的地址中保留的值
还有
StringBuffer s1 new StringBuffer "a" ;
StringBuffer s2 new StringBuffer "a" ;
s1.equals s2 //为什么是false
String s1 new String "a" ;
String s2 new String "a" ;
s1.equals s2 //为什么是true
StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object 类,
而Object类中的equals方法是用来比较地址的,所以等于false.
String类中重新定义了equals这个方法,而且比较的是值,而不是地址。
所以会是
true。final―修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally―再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize―方法名。Java 技术允许使用 finalize 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize 方法以整理系统资源或者执行其他清理工作。finalize 方法是在垃圾收集器删除对象之前对这个对象调用的。forward和redirect的区别Redirect(重定向):这个方式的重定向是通过服务器收到请求后发送一个状态头给客户,客户再请求一次而实现的,因此它的效率可能要低一些,而且上一页面的资料和状态将不会被重定向到新的页面。
Forward(转发):这种重定向其实是服务器控制权的转向,客户端发来的请求将交由新的页面进行处理,而且使用这种重定向,可以将一个页面的资料和状态传到被重定向的页面。而且客户端浏览器的地址栏也不会显示转向后的地址。
重定向的速度比转发要慢,因为浏览器得发出一个新的请求。
18.Servlet和JSP以及applet之间的关系是什么?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论