Java基础方面:
1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 2、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 3、char型变量中能不能存贮一个中文汉字?为什么? 答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占2个字节,所以放一个中文是没问题的 4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 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.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 InterClass { 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 再一个例题: 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() {return 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 错 三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确 四.答案为C、E 7、垃圾回收机制,如何优化程序? 希望大家补上,谢谢 8、float型float f=3.4是否正确? 答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 答:Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map提供key到value的映射 10、Java中异常处理机制,事件机制? 11、JAVA中的多形与继承? 希望大家补上,谢谢 12、抽象类与接口? 答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。 13、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 答:Server端程序:package test;import java.net.*;import java.io.*;public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() { try { ss = new 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())); 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 Server(); }};
package test;import java.io.*;import java.net.*;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!"); System.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.readLine()); out.close(); in.close(); socket.close(); } catch (IOException e) { out.println("Wrong"); } } public static void main(String[] args) { new Client(); }};
package test;import java.util.*;class InsertSort { ArrayList al; public 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 < num; i++) { al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); System.out.println("al[" + i + "]=" + al.get(i)); } } public void SortIt() { Integer tempInt; int MaxSize = 1; for (int i = 1; i < al.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 (int j = 0; j < MaxSize; j++) { if (((Integer) al.get(j)).intValue() >= tempInt.intValue()) { al.add(j, tempInt); MaxSize++; System.out.println(al.toString()); break; } } } } System.out.println("The ArrayList Sort After:"); for (int i = 0; i < al.size(); i++) { System.out.println("al[" + i + "]=" + al.get(i)); } } public static void main(String[] args) { InsertSort is = new InsertSort(10, 100); is.SortIt(); }}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口 15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 答:代码如下:package test;class SplitString { String SplitStr; int SplitByte; public SplitString(String str, int bytes) { SplitStr = str; SplitByte = bytes; System.out.println("The String is:′" + SplitStr + "′;SplitBytes=" + SplitByte); } public void SplitIt() { int loopCount; loopCount = (SplitStr.length() % SplitByte == 0) ? (SplitStr.length() / SplitByte) : (SplitStr.length() / SplitByte + 1); System.out.println("Will Split into " + loopCount); for (int i = 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))); } } } public static void main(String[] args) { SplitString ss = new SplitString( "test中dd文dsaf中男大3443n中国43中国人0ewldfls=103", 4); ss.SplitIt(); }}
public class ServletName extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse 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: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 (Exception 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(); } return 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.getString("name")); } } catch (Exception e) { e.printStackTrace(); } }}
<%int i=1;int numPages=14;String pages = request.getParameter("page") ;int currentPage = 1;currentPage=(pages==null)?(1):{Integer.parseInt(pages)}sql = "select count(*) from tables";ResultSet rs = DBLink.executeQuery(sql) ;while(rs.next()) i = rs.getInt(1) ;int intPageCount=1;intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);int nextPage ;int upPage;nextPage = currentPage+1;if (nextPage>=intPageCount) nextPage=intPageCount;upPage = currentPage-1;if (upPage<=1) upPage=1;rs.close();sql="select * from tables";rs=DBLink.executeQuery(sql);i=0;while((i
//输出内容 //输出翻页连接 合计:
<%=currentPage%>/<%=intPageCount%>第一页<%=upPage%>">上一页<%for(int j=1;j<=intPageCount;j++){if(currentPage!=j){%> [<%=j%>]<%}else{out.println(j);}}%> 下一页 最后页
Xml方面 1、xml有哪些解析技术?区别是什么? 答:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX:Streaming API for XML (StAX) 2、你在项目中用到了xml技术的哪些方面?如何实现的? 答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。 3、用jdom解析xml文件时如何解决中文问题?如何解析? 答:看如下代码,用编码方式加以解决
package test;import java.io.*;public class DOMTest { private String 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.newDocument(); 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 transformer = 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), new javax.xml.transform.stream.StreamResult(outFile)); } catch (Exception e) { System.out.println(e.getMessage()); } }}
王小明 信息学院 6258113 男,1955年生,博士,95年调入海南大学
事件回调类SAXHandler.java
import java.io.*;import java.util.Hashtable;import org.xml.sax.*;public class 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, AttributeList 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); }}
剖析XML文件people.xml <%@ page errorPage="ErrPage.jsp"contentType="text/html;charset=GB2312" %><%@ page import="java.io.*" %><%@ page import="java.util.Hashtable" %><%@ page import="org.w3c.dom.*" %><%@ page import="org.xml.sax.*" %><%@ page import="javax.xml.parsers.SAXParserFactory" %><%@ page import="javax.xml.parsers.SAXParser" %><%@ page import="SAXHandler" %><%File file = new File("c:\\people.xml");FileReader reader = new FileReader(file);Parser parser;SAXParserFactory spf = SAXParserFactory.newInstance();SAXParser sp = spf.newSAXParser();SAXHandler handler = new SAXHandler();sp.parse(new InputSource(reader), handler);Hashtable hashTable = handler.getTable();out.println("
姓名 | " + "" +(String)hashTable.get(new String("name")) + " |
学院 | " + "" +(String)hashTable.get(new String("college"))+" |
电话 | " + "" +(String)hashTable.get(new String("telephone")) + " |
备注 | " + "" +(String)hashTable.get(new String("notes")) + " |
EJB方面 1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的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 java.rmi.RemoteException;import jaax.ejb.CreateException;import javax.ejb.EJBHome;public interface AddHome extends EJBHome{//some method declare}
package Beans;import java.rmi.RemoteException;import javax.ejb.SessionBean;import javx.ejb.SessionContext;public class AddBean Implements SessionBean{//some method declare}
J2EE,MVC方面 1、MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 2、应用服务器与WEB SERVER的区别? 希望大家补上,谢谢 3、J2EE是什么? 答:J2ee是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 答:Web Service描述语言WSDL SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 5、BS与CS的联系与区别。 希望大家补上,谢谢 6、STRUTS的应用(如STRUTS架构) 答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 设计模式方面 1、开发中都用到了那些设计模式?用在什么场合? 答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 2、UML方面 答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图, JavaScript方面 1、如何校验数字型?
var re=/^\d{1,8}$|\.\d{1,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);}