??xml version="1.0" encoding="utf-8" standalone="yes"?>
一些资料徏议,当需要同步时Q用HashtableQ反之用HashMap。但是,因ؓ在需要时QHashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的cȝQ所以有为,在各U情况下QHashMap都优先于Hashtable?br>
关于Properties
有时侯,你可能想用一个hashtable来映key的字W串到value的字W串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字W串PATH被映到value的字W串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表C些的一个简单的ҎQ但Java提供了另外一U方法?br>
Java.util.PropertiescLHashtable的一个子c,设计用于String keys和values。Properties对象的用法同Hashtable的用法相象,但是cd加了两个节省旉的方法,你应该知道?br>
Store()Ҏ把一个Properties对象的内容以一U可ȝ形式保存C个文件中。Load()Ҏ正好相反Q用来读取文Ӟq设定Properties对象来包含keys和values?br>
注意Q因为Properties扩展了HashtableQ你可以用超cȝput()Ҏ来添加不是String对象的keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对象Qstore()失败。作为put()和get()的替代,你应该用setProperty()和getProperty()Q它们用String参数?br>
下面再{一关于两个类的区别,比较单的q一?/p>
static int hash(Object x) { int h = x.hashCode(); h += ~(h << 9); h ^= (h >>> 14); h += (h << 4); h ^= (h >>> 10); return h; } static int indexFor(int h, int length) { return h & (length-1); } 以上只是一些比较突出的区别Q当然他们的实现上还是有很多不同的,比如 HashMap对null的操作?/font> |
当JAVAE序q反了JAVA的语义规则时QJAVA虚拟机就会将发生的错误表CZؓ一个异常。违反语义规则包?U情c一U是JAVAcd内置的语义检查。例如数l下标越?会引发IndexOutOfBoundsException;讉Knull的对象时会引发NullPointerException。另一U情况就是JAVA允许E序员扩展这U语义检查,E序员可以创q异常Qƈ自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子cR?
2. Java的接口和C++的虚cȝ相同和不同处?
׃Java不支持多l承Q而有可能某个cL对象要用分别在几个cL对象里面的方法或属性,现有的单l承机制׃能满求。与l承相比Q接口有更高的灵zL,因ؓ接口中没有Q何实C码。当一个类实现了接口以后,该类要实现接口里面所有的Ҏ和属性,q且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口?
3. 垃圾回收的优点和原理。ƈ考虑2U回收机制?
Java语言中一个显著的特点是引入了垃圑֛收机Ӟ使c++E序员最头疼的内存管理的问题q刃而解Q它使得JavaE序员在~写E序的时候不再需要考虑内存理。由于有个垃圑֛收机ӞJava中的对象不再有“作用域”的概念Q只有对象的引用才有“作用域”。垃圑֛收可以有效的防止内存泄露Q有效的使用可以使用的内存。垃圑֛收器通常是作Z个单独的低别的U程q行Q不可预知的情况下对内存堆中已经M的或者长旉没有使用的对象进行清楚和回收Q程序员不能实时的调用垃圑֛收器Ҏ个对象或所有对象进行垃圑֛收。回收机制有分代复制垃圾回收和标记垃圑֛Ӟ增量垃圾回收?
4. 误Z所知道的线E同步的Ҏ?
wait():使一个线E处于等待状态,q且释放所持有的对象的lock?
sleep():使一个正在运行的U程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常?
notify():唤醒一个处于等待状态的U程Q注意的是在调用此方法的时候,q不能确切的唤醒某一个等待状态的U程Q而是由JVM定唤醒哪个U程Q而且不是按优先?
Allnotity():唤醒所有处入等待状态的U程Q注意ƈ不是l所有唤醒线E一个对象的锁,而是让它们竞争?
5. 误一讲析构函数和虚函数的用法和作用?
6. Error与Exception有什么区别?
Error表示pȝU的错误和程序不必处理的异常Q?
Exception表示需要捕捉或者需要程序进行处理的异常?
7. 在java中一个类被声明ؓfinalcdQ表CZ什么意思?
表示该类不能被承,是顶U类?
8. 描述一下你最常用的编E风根{?
9. heap和stack有什么区别?
栈是一U线形集合,其添加和删除元素的操作应在同一D完成。栈按照后进先出的方式进行处理?
堆是栈的一个组成元?
10. 如果pȝ要用超大整敎ͼ过long长度范围Q,请你设计一个数据结构来存储q种大型数字以及设计一U算法来实现大整数加法q算Q?
public class BigInt()
{
int[] ArrOne = new ArrOne[1000];
String intString="";
public int[] Arr(String s)
{
intString = s;
for(int i=0;i<ArrOne.leght;i++)
{
11. 如果要设计一个图形系l,请你设计基本的图形元?Point,Line,Rectangle,Triangle)的简单实?
12Q谈谈final, finally, finalize的区别?
final?修饰W(关键字)如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓfinalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重载?
finally?再异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃执行Q然后控制就会进?finally 块(如果有的话)?
finalize?Ҏ名。Java 技术允怋?finalize() Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆?finalize() Ҏ以整理系l资源或者执行其他清理工作。finalize() Ҏ是在垃圾攉器删除对象之前对q个对象调用的?
13QAnonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现?
14QStatic Nested Class ?Inner Class的不同,说得多好(面试题有的很W统)?
Nested Class Q一般是C++的说法)QInner Class (一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1
注: 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?
&是位q算W?amp;&是布逻辑q算W?
15QHashMap和Hashtable的区别?
都属于Map接口的类Q实C惟一键映到特定的g?
HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的?
16QCollection ?Collections的区别?
Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?
Collection是个java.util下的接口Q它是各U集合结构的父接口?
17Q什么时候用assert?
断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会报告一?Assertionerror。它用于调试目的Q?
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两UŞ式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布倹{?
Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息?
断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?
javac -source 1.4 Test.java
要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?
要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?
要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?
可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?
18QGC是什? Z么要有GC? (基础)?
GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q?
System.gc()
Runtime.getRuntime().gc()
19QString s = new String("xyz");创徏了几个String Object?
两个对象Q一个是“xyx?一个是指向“xyx”的引用对象s?
20QMath.round(11.5){於多少? Math.round(-11.5){於多少?
Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;
21Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确?
22Qsleep() ?wait() 有什么区? 搞线E的最?
sleep()Ҏ是ɾU程停止一D|间的Ҏ。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)“醒来”的U程h更高的优先 (b)正在q行的线E因为其它原因而阻塞?
wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?
23QJava有没有goto?
Goto?java中的保留字,现在没有在java中用?
24Q数l有没有length()q个Ҏ? String有没有length()q个ҎQ?
数组没有length()q个ҎQ有length的属性?
String有有length()q个Ҏ?
25QOverload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?(Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd?
26QSet里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?
equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?/p>
2 String是最基本的数据类型吗?
3 int ?Integer 有什么区?/p>
4 String 和StringBuffer的区?/p>
5 q行时异怸一般异常有何异同?
异常表示E序q行q程中可能出现的非正常状态,q行时异常表C拟机的通常操作中可能遇到的异常Q是一U常见运行错误。java~译器要求方法必d明抛出可能发生的非运行时异常Q但是ƈ不要求必d明抛出未被捕Lq行时异常?/p>
6 说出一些常用的c,?接口Q请各D5?/p>
7 说出ArrayList,Vector, LinkedList的存储性能和特?br />ArrayList和Vector都是使用数组方式存储数据Q此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素Q但是插入元素要涉及数组元素Ud{内存操作,所以烦引数据快而插入数据慢QVector׃使用了synchronizedҎQ线E安全)Q通常性能上较ArrayList差,而LinkedList使用双向链表实现存储Q按序号索引数据需要进行前向或后向遍历Q但是插入数据时只需要记录本的前后即可,所以插入速度较快?br />8设计4个线E,其中两个U程每次对j增加1Q另外两个线E对j每次减少1。写出程序?br />以下E序使用内部cd现线E,对j增减的时候没有考虑序问题?br />public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec();
for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
}
}
}
9.JSP的内|对象及Ҏ?br />request request表示HttpServletRequest对象。它包含了有x览器h的信息,q且提供了几个用于获取cookie, header, 和session数据的有用的Ҏ?
response response表示HttpServletResponse对象Qƈ提供了几个用于设|送回 览器的响应的方法(如cookies,头信息等Q?
out out 对象是javax.jsp.JspWriter的一个实例,q提供了几个Ҏ使你能用于向览器回送输出结果?
pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各U范围的名字I间、servlet相关的对象的APIQƈ且包装了通用的servlet相关功能的方法?
session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信?
application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信?
config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数?
page page表示从该面产生的一个servlet实例
10.用socket通讯写出客户端和服务器端的通讯Q要求客户发送数据后能够回显相同的数据?br />参见评中socket通讯例子?/p>
11说出Servlet的生命周期,q说出Servlet和CGI的区别?br />Servlet被服务器实例化后Q容器运行其initҎQ请求到达时q行其serviceҎQserviceҎ自动zNq行与请求对应的doXXXҎQdoGetQdoPostQ等Q当服务器决定将实例销毁的时候调用其destroyҎ?br />与cgi的区别在于servlet处于服务器进E中Q它通过多线E方式运行其serviceҎQ一个实例可以服务于多个hQƈ且其实例一般不会销毁,而CGIҎ个请求都产生新的q程Q服务完成后销毁,所以效率上低于servlet?br />12.EJB是基于哪些技术实现的?q说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别?/p>
13QEJB包括QSessionBean,EntityBeanQ说Z们的生命周期Q及如何理事务的?
14Q说出数据连接池的工作机制是什?
15.同步和异步有和异同,在什么情况下分别使用他们QD例说明?/p>
16.应用服务器有那些Q?/p>
17你所知道的集合类都有哪些Q主要方法?
18l你一?驱动E序A,数据源名UCؓB,用户名称为C,密码为D,数据库表为TQ请用JDBC索出表T的所有数据?/p>
19Q说出在JSP面里是怎么分页?
面需要保存以下参敎ͼ
总行敎ͼҎsql语句得到总行?br />每页昄行数Q设定?br />当前|Q请求参?br />面Ҏ当前|和每行数计出当前늬一行行敎ͼ定位l果集到此行Q对l果集取出每|C数的行即可?/p>
数据库方面:
1.存储q程和函数的区别
存储q程是用户定义的一pdsql语句的集合,涉及特定表或其它对象的Q务,用户可以调用存储q程Q而函数通常是数据库已定义的ҎQ它接收参数q返回某U类型的值ƈ且不涉及特定用户表?br />2.事务是什么?
事务是作Z个逻辑单元执行的一pd操作Q一个逻辑工作单元必须有四个属性,UCؓ ACIDQ原子性、一致性、隔L和持久性)属性,只有q样才能成ؓ一个事务:
原子?br />事务必须是原子工作单元;对于其数据修改,要么全都执行Q要么全都不执行?br />一致?br />事务在完成时Q必M所有的数据都保持一致状态。在相关数据库中Q所有规则都必须应用于事务的修改Q以保持所有数据的完整性。事务结束时Q所有的内部数据l构Q如 B 树烦引或双向链表Q都必须是正的?br />隔离?br />由ƈ发事务所作的修改必须与Q何其它ƈ发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一q发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这UCؓ可串行性,因ؓ它能够重新装载v始数据,q且重播一pd事务Q以使数据结束时的状态与原始事务执行的状态相同?br />持久?br />事务完成之后Q它对于pȝ的媄响是怹性的。该修改即出现pȝ故障也将一直保持?/p>3.游标的作用?如何知道游标已经C最后?
游标用于定位l果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否C最后,通常此变量不{于0表示出错或到了最后?br />4.触发器分Z前触发和事后触发Q这两种触发有和区别。语句触发和行U触发有何区别?br />事前触发器运行于触发事g发生之前Q而事后触发器q行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段倹{?br />语句U触发器可以在语句执行前或后执行Q而行U触发在触发器所影响的每一行触发一ơ?img src ="http://www.aygfsteel.com/liaojiyong/aggbug/47768.html" width = "1" height = "1" />
QUESTION NO:2
1. public class Test {
2. static boolean foo(char c) {
3. System.out.print(c);
4. return true;
5. }
6. public static void main( String[] argv ) {
7. int i =0;
8. for ( foo('A'); foo('B')&&(i<2); foo('C')){
9. i++ ;
10. foo('D');
12. }
13. }
14. }
What is the result?
A. ABDCBDCB
B. ABCDABCD
C. Compilation fails.
D. An exception is thrown at runtime.
QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }
QUESTION NO: 4
1. public class Outer{
2. public void someOuterMethod() {
3. // Line 3
4. }
5. public class Inner{}
6. public static void main( String[]argv ) {
7. Outer o = new Outer();
8. // Line 8
9. }
10. }
Which instantiates an instance of Inner?
A. new Inner(); // At line 3
B. new Inner(); // At line 8
C. new o.Inner(); // At line 8
D. new Outer.Inner(); // At line 8//new Outer().new Inner()
QUESTION NO: 5
Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?
A. The encodeURL method of the HttpServletRequest interface.
B. The encodeURL method of the HttpServletResponse interface.
C. The rewriteURL method of the HttpServletRequest interface.
D. The rewriteURL method of the HttpServletResponse interface.
QUESTION NO: 6
Which two are equivalent? (Choose two)
A. <%= YoshiBean.size%>
B. <%= YoshiBean.getSize()%>
C. <%= YoshiBean.getProperty("size")%>
D. <jsp:getProperty id="YoshiBean" param="size"/>
E. <jsp:getProperty name="YoshiBean" param="size"/>
F. <jsp:getProperty id="YoshiBean" property="size"/>
G. <jsp:getProperty name="YoshiBean" property="size"/>
QUESTION NO: 7
Which of the following statements regarding the lifecycle of a session bean are correct?
1. java.lang.IllegalStateException is thrown if SessionContext.getEJBObject() is invoked when a stateful session bean instance is passivated.
2. SessionContext.getRollbackOnly() does not throw an exception when a session bean with bean-managed transaction demarcation is activated.
3. An exception is not thrown when SessionContext.getUserTransaction() is called in the afterBegin method of a bean with container-managed transactions.
4. JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.
5. Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.
W二部分Q概念题
1Q?nbsp; 描述Struts体系l构Q对应各个部分的开发工作主要包括哪些?
2Q?nbsp; XML包括哪些解释技术,区别是什么?
3Q?nbsp; JSP有哪些内|对象和动作Q它们的作用分别是什么?
4、SQL问答?br>SELECT * FROM TABLE
?br>SELECT * FROM TABLE
WHERE NAME LIKE '%%' AND ADDR LIKE '%%'
AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'
OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )
的检索结果ؓ何不同?
5、SQL问答?br>表结构:
1?nbsp; 表名Qg_cardapply
字段(字段?cd/长度)Q?br>g_applyno varchar 8Q?/甌单号Q关键字Q?br>g_applydate bigint 8Q?/甌日期
g_state varchar 2Q?/甌状?br>2?nbsp; 表名Qg_cardapplydetail
字段(字段?cd/长度)Q?br>g_applyno varchar 8Q?/甌单号Q关键字Q?br>g_name varchar 30Q?/甌人姓?br>g_idcard varchar 18Q?/甌n份证?br>g_state varchar 2Q?/甌状?br>其中Q两个表的关联字Dؓ甌单号?br>题目Q?br>1?nbsp; 查询w䆾证号码ؓ440401430103082的申h?br>2?nbsp; 查询同一个n份证L有两条以上记录的w䆾证号码及记录个数
3?nbsp; n份证L?40401430103082的记录在两个表中的申L态均改ؓ07
4?nbsp; 删除g_cardapplydetail表中所有姓李的记录