java程序员面试宝典2.docx
- 文档编号:3902922
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:21
- 大小:39.32KB
java程序员面试宝典2.docx
《java程序员面试宝典2.docx》由会员分享,可在线阅读,更多相关《java程序员面试宝典2.docx(21页珍藏版)》请在冰豆网上搜索。
java程序员面试宝典2
JAVA程序员面试宝典
37,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
38,编程题:
用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2<<3
39,两个对象值相同(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((i
<%=currentPage%>/<%=intPageCount%> page=1">第一页 page=<%=upPage%>">上一页<%for(intj=1;j<=intPageCount;j++){if(currentPage! =j){ %> page=<%=j%>">[<%=j%>]<%}else{out.println(j);}}%> page=<%=nextPage%>">下一页 page=<%=intPageCount%>">最后页 49、列出某文件夹下的所有文件; 50、调用系统命令实现删除文件的操作; 51、实现从文件中一次读出一个字符的操作; 52、列出一些控制流程的方法; 54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客户端的程序; 55、作用域public,private,protected,以及不写时的区别答: 区别如下: 作用域当前类同一package子孙类其他packagepublic√√√√protected√√√ friendly√√ private√ 不写时默认为friendly 56、ArrayList和Vector的区别,HashMap和Hashtable的区别 答: 就ArrayList与Vector主要从二方面来说.一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长: 当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因: Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性: Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值: 只有HashMap可以让你将空值作为一个表的条目的key或value 57、char型变量中能不能存贮一个中文汉字? 为什么? 答: 是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 58、多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 答: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify 60、float型floatf=3.4是否正确? 答: 不正确。 精度不准确,应该用强制类型转换,如下所示: floatf=(float)3.4 61、介绍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;i System.out.println("al["+i+"]="+al.get(i));}}publicvoidSortIt(){IntegertempInt;intMaxSize=1;for(inti=1;i ");for(inti=0;i {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;importjava.sql.*;publicclassjdbc{StringdbUrl="jdbc: oracle: thin: @127.0.0.1: 1521: orcl";StringtheUser="admin";StringthePw="manager";Connectionc=null;Statementconn;ResultSetrs=null;publicjdbc(){try{Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();c=DriverManager.getConnection(dbUrl,theUser,thePw);conn=c.createStatement();}catch(Exceptione){e.printStackTrace();}}publicbooleanexecuteUpdate(Stringsql){try{conn.executeUpdate(sql);returntrue;}catch(SQLExceptione){e.printStackTrace();returnfalse;}}publicResultSetexecuteQuery(Stringsql){rs=null;try{rs=conn.executeQuery(sql);}catch(SQLExceptione){e.printStackTrace();}returnrs;} publicvoidclose(){try{conn.close();c.close();}catch(Exceptione){e.printStackTrace();}} publicstaticvoidmain(String[]args){ResultSetrs;jdbcconn=newjdbc();rs=conn.executeQuery("select*fromtest");try{while(rs.next()){System.out.println(rs.getString("id"));System.out.println(rs.getString("name"));}}catch(Exceptione){e.printStackTrace();}}} 2、Class.forName的作用? 为什么要用? 答: 调用该访问返回一个以字符串指定类名的类的对象。 2、你在项目中用到了xml技术的哪些方面? 如何实现的? 答: 用到了数据存贮,信息配置两方面。 在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。 在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。 3、用jdom解析xml文件时如何解决中文问题? 如何解析? 答: 看如下代码,用编码方式加以解决 packagetest;importjava.io.*;publicclassDOMTest{privateStringinFile="c: \people.xml"; privateStringoutFile="c: \people.xml";publicstaticvoidmain(Stringargs[]){newDOMTest();}publicDOMTest(){try{javax.xml.parsers.DocumentBuilderbuilder= javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); org.w3c.dom.Documentdoc=builder.newDocument();org.w3c.dom.Elementroot=doc.createElement("老师"); org.w3c.dom.Elementwang=doc.createElement("王");org.w3c.dom.Elementliu=doc.createElement("刘"); wang.appendChild(doc.createTextNode("我是王老师"));root.appendChild(wang);doc.appendChild(root); javax.xml.transform.Transformertransformer= javax.xml.transform.TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,"gb2312"); transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT,"yes"); transformer.transform(newjavax.xml.transform.dom.DOMSource(doc), newjavax.xml.transform.stream.StreamResult(outFile));}catch(Exceptione){System.out.println(e.getMessage());}}} 4、编程用JAVA解析XML的方式.答: 用SAX方式解析XML,XML文件如下: xmlversion="1.0"encoding="gb2312"? > privateHashtabletable=newHashtable();privateStringcurrentElement=null;privateStringcurrentValue=null;publicvoidsetTable(Hashtabletable){this.table=table;}publicHashtablegetTable(){returntable;} publicvoidstartElement(Stringtag,AttributeListattrs)throwsSAXException{currentElement=tag;} publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{currentValue=newString(ch,start,length);}publicvoidendElement(Stringname)throwsSAXException{if(currentElement.equals(name))table.put(currentElement,currentValue);}} JSP内容显示源码,SaxXml.jsp: <%@pageerrorPage="ErrPage.jsp"contentType="text/html;charset=GB2312"%><%@pageimport="java.io.*"%> <%@pageimport="java.util.Hashtable"%><%@pageimport="org.w3c.dom.*"%><%@pageimport="org.xml.sax.*"%> <%@pageimport="javax.xml.parsers.SAXParserFactory"%><%@pageimport="javax.xml.parsers.SAXParser"%><%@pageimport="SAXHandler"%><%Filefile=newFile("c: \people.xml");FileReaderreader=newFileReader(file); Parserparser;SAXParserFactoryspf=SAXParserFactory.newInstance();SAXParsersp=spf.newSAXParser(); SAXHandlerhandler=newSAXHandler();sp.parse(newInputSource(reader),handler);HashtablehashTable=handler.getTable();out.println(" ");out.println("姓名 "+""+(String)hashTable.get(newString("name"))+" "学院 "+""+(String)hashTable.get(newString("college"))+"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序员 面试 宝典
![提示](https://static.bdocx.com/images/bang_tan.gif)