1、有感:应聘 Java 笔试时可能出现问题及其答案 huij Java 基础方面: 5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类: package test; public class FatherClass public FatherClass() System.out.println(“FatherClass Create“); 子类: package test; import test.FatherClass; public class ChildClass extends FatherClass public ChildClass() System.out
2、.println(“ChildClass Create“); public static void main(String args) FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); 输出结果: C:java test.ChildClass FatherClass Create FatherClass Create ChildClass Create 6、内部类的实现方式? 答:示例代码如下: package test; public class OuterClass private class Int
3、erClass public InterClass() System.out.println(“InterClass Create“); public OuterClass() InterClass ic = new InterClass(); System.out.println(“OuterClass Create“); public static void main(String args) OuterClass oc = new OuterClass(); 输出结果: C:java test/OuterClass InterClass Create OuterClass Create
4、再一个例题: public class OuterClass private double d1 = 1.0; /insert code here You need to insert an inner class declaration at line 3. Which two inner class declarations are valid?(Choose two.) A. class InnerOne public static double methoda() return d1; B. public class InnerOne static double methoda() r
5、eturn d1; C. private class InnerOne double methoda() return d1; D. static class InnerOne protected double methoda() return d1; E. abstract class InnerOne public abstract double methoda(); 说明如下: 一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错 二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。 故 D 错 三.非静态
6、内部类的非静态成员可以访问外部类的非静态变量。故 C 正确 四.答案为 C、E 13、Java 的通信编程,编程题(或问答) ,用 JAVA SOCKET 编程,读服务器几个字符,再写入本地显示? 答:Server 端程序: package test; import .*; import java.io.*; public class Server private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() try ss=n
7、ew ServerSocket(10000); while(true) socket = ss.accept(); String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = “:“+socket.getLocalPort(); System.out.println(“A client come in!IP:“+RemoteIP+RemotePort); in = new BufferedReader(new InputStreamReader(socket.getInputStream();
8、String line = in.readLine(); System.out.println(“Cleint send is :“ + line); out = new PrintWriter(socket.getOutputStream(),true); out.println(“Your Message Received!“); out.close(); in.close(); socket.close(); catch (IOException e) out.println(“wrong“); public static void main(String args) new Serve
9、r(); ; Client 端程序: package test; import java.io.*; import .*; public class Client Socket socket; BufferedReader in; PrintWriter out; public Client() try System.out.println(“Try to Connect to 127.0.0.1:10000“); socket = new Socket(“127.0.0.1“,10000); System.out.println(“The Server Connected!“); Syste
10、m.out.println(“Please enter some Character:“); BufferedReader line = new BufferedReader(new InputStreamReader(System.in); out = new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine(); in = new BufferedReader(new InputStreamReader(socket.getInputStream(); System.out.println(in.re
11、adLine(); out.close(); in.close(); socket.close(); catch(IOException e) out.println(“Wrong“); public static void main(String args) new Client(); ; 14、用 JAVA 实现一种排序,JAVA 类实现序列化的方法(二种)? 如在 COLLECTION 框架中,实现比较要实现什么样的接口? 答:用插入法进行排序代码如下 package test; import java.util.*; class InsertSort ArrayList al; pub
12、lic InsertSort(int num,int mod) al = new ArrayList(num); Random rand = new Random(); System.out.println(“The ArrayList Sort Before:“); for (int i=0;i=(Integer)al.get(MaxSize-1).intValue() al.add(MaxSize,tempInt); MaxSize+; System.out.println(al.toString(); else for (int j=0;j=tempInt.intValue() al.a
13、dd(j,tempInt); MaxSize+; System.out.println(al.toString(); break; System.out.println(“The ArrayList Sort After:“); for(int i=0;i它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 4、两种跳转方式分别是什么?有什么区别? 答:有两种,分别为: 前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于
14、函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。 Servlet 方面 1、说一说 Servlet 的生命周期? 答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。 2、Servlet 版本间(忘了问的是哪两个版本了 )的不同? 希望大家补上,谢谢 3、JAVA SERVLET API 中 forward() 与 redirect()的区别? 答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显
15、示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。 4、Servlet 的基本架构 public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse
16、 response) throws ServletException, IOException public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException Jdbc、Jdo 方面 1、可能会让你写一段 Jdbc 连 Oracle 的程序,并实现数据查询. 答:程序如下: package hello.ant; import java.sql.*; public class jdbc String dbUrl=“jdbc:oracle
17、:thin:127.0.0.1:1521:orcl“; String theUser=“admin“; String thePw=“manager“; Connection c=null; Statement conn; ResultSet rs=null; public jdbc() try Class.forName(“oracle.jdbc.driver.OracleDriver“).newInstance(); c = DriverManager.getConnection(dbUrl,theUser,thePw); conn=c.createStatement(); catch(Ex
18、ception e) e.printStackTrace(); public boolean executeUpdate(String sql) try conn.executeUpdate(sql); return true; catch (SQLException e) e.printStackTrace(); return false; public ResultSet executeQuery(String sql) rs=null; try rs=conn.executeQuery(sql); catch (SQLException e) e.printStackTrace(); r
19、eturn rs; public void close() try conn.close(); c.close(); catch (Exception e) e.printStackTrace(); public static void main(String args) ResultSet rs; jdbc conn = new jdbc(); rs=conn.executeQuery(“select * from test“); try while (rs.next() System.out.println(rs.getString(“id“); System.out.println(rs
20、.getString(“name“); catch(Exception e) e.printStackTrace(); 2、Class.forName 的作用?为什么要用? 答:调用该访问返回一个以字符串指定类名的类的对象。 3、Jdo 是什么? 答:JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一个用于存取某种数据仓库中的对象的标准化API。 JDO 提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如 JDBC API 的使用) 。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使开发人员解脱出来,从而集中时间
21、和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何数据底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML 以及对象数据库(ODBMS)等等,使得应用可移植性更强。 4、在 ORACLE 大数据量下的分页解决方法。一般用截取 ID方法,还有是三层嵌套方法。 答:一种分页方法 =intPageCount) nextPage=intPageCount; upPage = currentPage-1; if (upPage /输出内容 /输出翻页连接 合计:/第一页“上一页 “ “下一页“最后页 Xml 方面 1、x
22、ml 有哪些解析技术?区别是什么? 答:有 DOM,SAX,STAX 等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM 的树结构所造成的,这种结构占用的内存较多,而且DOM 必须在解析文件之前把整个文档装入内存,适合对 XML的随机访问 SAX:不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问 STAX:Streaming API for XML (StAX)
23、2、你在项目中用到了 xml 技术的哪些方面?如何实现的? 答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成 XML 文件,然后将 XML 文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同 XML 文件中还原相关信息进行处理。在做软件配置时,利用 XML 可以很方便的进行,软件的各种配置参数都存贮在XML 文件中。 3、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? 答:看如下代码,用编码方式加以解决 package test; import java.io.*; public class DOMTest private Strin
24、g inFile = “c:people.xml“; private String outFile = “c:people.xml“; public static void main(String args) new DOMTest(); public DOMTest() try javax.xml.parsers.DocumentBuilder builder = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); org.w3c.dom.Document doc = builder.new
25、Document(); org.w3c.dom.Element root = doc.createElement(“老师“); org.w3c.dom.Element wang = doc.createElement(“王“); org.w3c.dom.Element liu = doc.createElement(“刘“); wang.appendChild(doc.createTextNode(“我是王老师“); root.appendChild(wang); doc.appendChild(root); javax.xml.transform.Transformer transforme
26、r = javax.xml.transform.TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, “gb2312“); transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, “yes“); transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
27、new javax.xml.transform.stream.StreamResult(outFile); catch (Exception e) System.out.println (e.getMessage(); 4、编程用 JAVA 解析 XML 的方式. 答:用 SAX 方式解析 XML,XML 文件如下: 王小明 信息学院 6258113 男 ,1955 年生,博士,95 年调入海南大学 事件回调类 SAXHandler.java import java.io.*; import java.util.Hashtable; import org.xml.sax.*; public c
28、lass SAXHandler extends HandlerBase private Hashtable table = new Hashtable(); private String currentElement = null; private String currentValue = null; public void setTable(Hashtable table) this.table = table; public Hashtable getTable() return table; public void startElement(String tag, AttributeL
29、ist attrs) throws SAXException currentElement = tag; public void characters(char ch, int start, int length) throws SAXException currentValue = new String(ch, start, length); public void endElement(String name) throws SAXException if (currentElement.equals(name) table.put(currentElement, currentValue
30、); JSP 内容显示源码,SaxXml.jsp: 剖析 XML 文件 people.xml 教师信息表“); out.println(“姓名“ + “ + (String)hashTable.get(new String(“name“) + “); out.println(“学院“ + “ + (String)hashTable.get(new String(“college“)+“); out.println(“电话“ + “ + (String)hashTable.get(new String(“telephone“) + “); out.println(“备注“ + “ + (Stri
31、ng)hashTable.get(new String(“notes“) + “); out.println(“); % EJB 方面 3、EJB 的基本架构 答:一个 EJB 包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject /some method declare Home Interface 接口的代码 package Beans; import j
32、ava.rmi.RemoteException; import jaax.ejb.CreateException; import javax.ejb.EJBHome; public interface AddHome extends EJBHome /some method declare EJB 类的代码 package Beans; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javx.ejb.SessionContext; public class AddBean Implements SessionBean /some method declare JavaScript 方面 1、如何校验数字型? var re=/d1,8$|.d1,2$/; var str=document.form1.all(i).value; var r=str.match(re); if (r=null) sign=-4; break; else document.form1.all(i).value=parseFloat(str);