JAVA程序员面试宝典37,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?会执行,在return前执行。38,编程题:用最有效率的方法算出2乘以8等於几?有C背景的程序员特别喜欢问这种问题。2339,两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?不对,有相同的hashcode。40,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。41,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。long,string都不能作用于swtich。4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。答:一种分页方法%inti=1;intnumPages=14;Stringpages=request.getParameter(page);intcurrentPage=1;currentPage=(pages==null)?(1):{Integer.parseInt(pages)}sql=selectcount(*)fromtables;ResultSetrs=DBLink.executeQuery(sql);while(rs.next())i=rs.getInt(1);intintPageCount=1;intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);intnextPage;intupPage;nextPage=currentPage+1;if(nextPage=intPageCount)nextPage=intPageCount;upPage=currentPage-1;if(upPage=1)upPage=1;rs.close();sql=select*fromtables;rs=DBLink.executeQuery(sql);i=0;while((inumPages*(currentPage-1))&&rs.next()){i++;}%//输出内容//输出翻页连接合计:%=currentPage%/%=intPageCount%ahref=List.jsp?page=1第一页/aahref=List.jsp?page=%=upPage%上一页/a%for(intj=1;j=intPageCount;j++){if(currentPage!=j){%ahref=list.jsp?page=%=j%[%=j%]/a%}else{out.println(j);}}%ahref=List.jsp?page=%=nextPage%下一页/aahref=List.jsp?page=%=intPageCount%最后页/a49、列出某文件夹下的所有文件;50、调用系统命令实现删除文件的操作;51、实现从文件中一次读出一个字符的操作;52、列出一些控制流程的方法;54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入END为止,让你写出客户端的程序;55、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package子孙类其他packagepublic√√√√protected√√√friendly√√private√不写时默认为friendly56、ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半就HashMap与HashTable主要从三方面来说。一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value57、char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的58、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify60、float型floatf=3.4是否正确?答:不正确。精度不准确,应该用强制类型转换,如下所示:floatf=(float)3.461、介绍JAVA中的CollectionFrameWork(包括如何写自己的数据结构)?答:CollectionFrameWork如下:Collection├List│├LinkedList│├ArrayList│└Vector│└Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射6、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?如在COLLECTION框架中,实现比较要实现什么样的接口?答:用插入法进行排序代码如下packagetest;importjava.util.*;classInsertSort{ArrayListal;publicInsertSort(intnum,intmod){al=newArrayList(num);Randomrand=newRandom();System.out.println(TheArrayListSortBefore:);for(inti=0;inum;i++){al.add(newInteger(Math.abs(rand.nextInt())%mod+1));System.out.println(al[+i+]=+al.get(i));}}publicvoidSortIt(){IntegertempInt;intMaxSize=1;for(inti=1;ial.size();i++){tempInt=(Integer)al.remove(i);if(tempInt.intValue()=((Integer)al.get(MaxSize-1)).intValue()){al.add(MaxSize,tempInt);MaxSize++;System.out.println(al.toString());}else{for(intj=0;jMaxSize;j++){if(((Integer)al.get(j)).intValue()=tempInt.intValue()){al.add(j,tempInt);MaxSize++;System.out.println(al.toString());break;}}}}System.out.println(TheArrayListSortAfter:);for(inti=0;ial.size();i++){System.out.println(al[+i+]=+al.get(i));}}publicstaticvoidmain(String[]args){InsertSortis=newInsertSort(10,100);is.SortIt();}}JAVA类实现序例化的方法是实现java.io.Serializable接口Collection框架中实现比较要实现Comparable接口和Comparator接口7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。答:代码如下:packagetest;classSplitString{StringSplitStr;intSplitByte;publicSplitString(Stringstr,intbytes){SplitStr=str;SplitByte=bytes;System.out.println(TheStringis:′+SplitStr+′;SplitBytes=+SplitByte);}publicvoidSplitIt(){intloopCount;loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);System.out.println(WillSplitinto+loopCount);for(inti=1;i=loopCount;i++){if(i==loopCount){System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));}else{System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));}}}publicstaticvoidmain(String[]args){SplitStringss=newSplitString(test中dd文dsaf中男大3443n中国43中国人0ewldfls=103,4);ss.SplitIt();}}3、JAVASERVLETAPI中forward()与redirect()的区别?答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。4、Servlet的基本架构publicclassServletNameextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.答:程序如下:packagehello.ant;