面試基礎題目

          1.現(xiàn)在輸入n個數字,以逗號,分開;
          然后可選擇升或者降序排序;
          按提交鍵就在另一頁面顯示
            按什么排序,結果為,  
          提供reset
          答案(1)  public static String[] splitStringByComma(String source){
                     if(source==null||source.trim().equals(""))
                             return null;
                     StringTokenizer commaToker =  new StringTokenizer(source,",");
                     String[] result = new String[commaToker.countTokens()];
                     int i=0;
                     while(commaToker.hasMoreTokens()){
                             result[i] = commaToker.nextToken();
                             i++;
                     }
                     return result;
            }
          循環(huán)遍歷String數組
          Integer.parseInt(String s)變成int類型
          組成int數組
          Arrays.sort(int[] a),
          a數組升序
          降序可以從尾部開始輸出

          2.金額轉換,阿拉伯數字的金額轉換成中國傳統(tǒng)的形式如:
          (¥1011)->(一千零一拾一元整)輸出。
          3、繼承時候類的執(zhí)行順序問題,一般都是選擇題,問你將會打印出什么?
          答:父類:
          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

          4、內部類的實現(xiàn)方式?
          答:示例代碼如下:
          package test;
          public class OuterClass
          {
          ** 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 {
          ** 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. ** class InnerOne{
          double methoda() {return d1;}
          }
          D. static class InnerOne{
          protected double methoda() {return d1;}
          }
          E. abstract class InnerOne{
          public abstract double methoda();
          }
          說明如下:
          一.靜態(tài)內部類可以有靜態(tài)成員,而非靜態(tài)內部類則不能有靜態(tài)成員。 故 A、B 錯
          二.靜態(tài)內部類的非靜態(tài)成員可以訪問外部類的靜態(tài)變量,而不可訪問外部類的非靜態(tài)變量;return d1 出錯。

          故 D 錯
          三.非靜態(tài)內部類的非靜態(tài)成員可以訪問外部類的非靜態(tài)變量。 故 C 正確
          四.答案為C、E


          5、Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務器幾個字符,再寫入本地顯示?
          答:Server端程序:
          package test;
          import java.net.*;
          import java.io.*;
          public class Server
          {
          ** ServerSocket ss;
          ** Socket socket;
          ** BufferedReader in;
          ** 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();
          }
          };
          Client端程序:
          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();
          }
          };
          6、用JAVA實現(xiàn)一種排序,JAVA類實現(xiàn)序列化的方法(二種)?如在COLLECTION框架中,實現(xiàn)比較要實現(xiàn)什么樣的接口?
          答:用插入法進行排序代碼如下
          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類實現(xiàn)序例化的方法是實現(xiàn)java.io.Serializable接口
          Collection框架中實現(xiàn)比較要實現(xiàn)Comparable 接口和 Comparator 接口
          7、編程:編寫一個截取字符串的函數,輸入為一個字符串和字節(jié)數,輸出為按字節(jié)截取的字符串。但是要保證漢字不被截半個,如"我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()/Split
          Byte+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();
          }
          }
          8、JAVA多線程編程。 用JAVA寫一個多線程程序,如寫四個線程,二個加1,二個對一個變量減一,輸出。
          希望大家補上,謝謝
          9、STRING與STRINGBUFFER的區(qū)別。
          答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
          Jsp方面
          1、jsp有哪些內置對象?作用分別是什么?
          答:JSP共有以下9種基本內置組件(可與ASP的6種內部組件相對應):
           request 用戶端請求,此請求會包含來自GET/POST請求的參數
          response 網頁傳回用戶端的回應
          pageContext 網頁的屬性是在這里管理
          session 與請求有關的會話期
          application servlet 正在執(zhí)行的內容
          out 用來傳送回應的輸出
          config servlet的構架部件
          page JSP網頁本身
          exception 針對錯誤網頁,未捕捉的例外
          2、jsp有哪些動作?作用分別是什么?
          答:JSP共有以下6種基本動作
          jsp:include:在頁面被請求的時候引入一個文件。
          jsp:useBean:尋找或者實例化一個JavaBean。
          jsp:setProperty:設置JavaBean的屬性。
          jsp:getProperty:輸出某個JavaBean的屬性。
          jsp:forward:把請求轉到一個新的頁面。
          jsp:plugin:根據瀏覽器類型為Java插件生成OBJECT或EMBED標記
          3、JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
          答:動態(tài)INCLUDE用jsp:include動作實現(xiàn)
          <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數
          靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面
          <%@ include file="included.htm" %>
          4、兩種跳轉方式分別是什么?有什么區(qū)別?
          答:有兩種,分別為:
          <jsp:include page="included.jsp" flush="true">
          <jsp:forward page= "nextpage.jsp"/>
          前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執(zhí)行完后還會回來,相當于函數調用。并且可以帶參數.后者完全轉向新頁面,不會再回來。相當于go to 語句。
          Servlet方面
          1、說一說Servlet的生命周期?
          答:servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet接口的init,service和destroy方法表達。
          2、Servlet版本間(忘了問的是哪兩個版本了)的不同?
          希望大家補上,謝謝
          3、JAVA SERVLET API中forward() 與redirect()的區(qū)別?
          答:前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。
          4、Servlet的基本架構
          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的程序,并實現(xiàn)數據查詢.
          答:程序如下:
          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();
          }
          }
          }
          2、Class.forName的作用?為什么要用?
          答:調用該訪問返回一個以字符串指定類名的類的對象。
          3、Jdo是什么?
          答:JDO是Java對象持久化的新的規(guī)范,為java data object的簡稱,也是一個用于存取某種數據倉庫中的對象的標準化API。JDO提供了透明的對象存儲,因此對開發(fā)人員來說,存儲數據對象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發(fā)人員解脫出來,從而集中時間和精力在業(yè)務邏輯上。另外,JDO很靈活,因為它可以在任何數據底層上運行。JDBC只是面向關系數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,比如關系數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。
          4、在ORACLE大數據量下的分頁解決方法。一般用截取ID方法,還有是三層嵌套方法。
          答:一種分頁方法
          <%
          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<numPages*(currentPage-1))&&rs.next()){i++;}
          %>
          //輸出內容
          //輸出翻頁連接
          合計:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一頁</a><a

          href="List.jsp?page=<%=upPage%>">上一頁</a>
          <%
          for(int j=1;j<=intPageCount;j++){
          if(currentPage!=j){
          %>
          <a href="list.jsp?page=<%=j%>">[<%=j%>]</a>
          <%
          }else{
          out.println(j);
          }
          }
          %>
          <a href="List.jsp?page=<%=nextPage%>">下一頁</a><a href="List.jsp?page=<%=intPageCount%>">最后頁

          </a>
          Xml方面
          1、xml有哪些解析技術?區(qū)別是什么?
          答:有DOM,SAX,STAX等
          DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構占用的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問SAX:不現(xiàn)于DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發(fā)一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
          STAX:Streaming API for XML (StAX)
          2、你在項目中用到了xml技術的哪些方面?如何實現(xiàn)的?
          答:用到了數據存貯,信息配置兩方面。在做數據交換平臺時,將不能數據源的數據組裝成XML文件,然后將XML文件壓縮打包加密后通過網絡傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關信息進行處理。在做軟件配置時,利用XML可以很方便的進行,軟件的各種配置參數都存貯在XML文件中。
          3、用jdom解析xml文件時如何解決中文問題?如何解析?
          答:看如下代碼,用編碼方式加以解決
          package test;
          import java.io.*;
          public class DOMTest
          {
          ** String inFile = "c:people.xml";
          ** 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());
          }
          }
          }
          4、編程用JAVA解析XML的方式.
          答:用SAX方式解析XML,XML文件如下:
          <?xml version="1.0" encoding="gb2312"?>
          <person>
          <name>王小明</name>
          <college>信息學院</college>
          <telephone>6258113</telephone>
          <notes>男,1955年生,博士,95年調入海南大學</notes>
          </person>
          事件回調類SAXHandler.java
          import java.io.*;
          import java.util.Hashtable;
          import org.xml.sax.*;
          public class SAXHandler extends HandlerBase
          {
          ** Hashtable table = new Hashtable();
          ** String currentElement = null;
          ** 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);
          }
          }
          JSP內容顯示源碼,SaxXml.jsp:
          <HTML>
          <HEAD>
          <TITLE>剖析XML文件people.xml</TITLE>
          </HEAD>
          <BODY>
          <%@ page errorPage="ErrPage.jsp"
          c %>
          <%@ 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("<TABLE BORDER=2><CAPTION>教師信息表</CAPTION>");
          out.println("<TR><TD>姓名</TD>" + "<TD>" +
          (String)hashTable.get(new String("name")) + "</TD></TR>");
          out.println("<TR><TD>學院</TD>" + "<TD>" +
          (String)hashTable.get(new String("college"))+"</TD></TR>");
          out.println("<TR><TD>電話</TD>" + "<TD>" +
          (String)hashTable.get(new String("telephone")) + "</TD></TR>");
          out.println("<TR><TD>備注</TD>" + "<TD>" +
          (String)hashTable.get(new String("notes")) + "</TD></TR>");
          out.println("</TABLE>");
          %>
          </BODY>
          </HTML>

          posted on 2011-05-04 22:24 liujg 閱讀(256) 評論(0)  編輯  收藏 所屬分類: Java基礎

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          boddiy

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 醴陵市| 阜康市| 福清市| 汝城县| 石泉县| 浮山县| 车致| 泾川县| 县级市| 宾阳县| 百色市| 浮梁县| 大城县| 阳谷县| 神池县| 南漳县| 精河县| 阿尔山市| 长顺县| 郓城县| 县级市| 治多县| 三都| 同江市| 景洪市| 卢龙县| 龙井市| 灵山县| 邵阳县| 荥经县| 永胜县| 古丈县| 潢川县| 静安区| 交口县| 武胜县| 沙坪坝区| 湘阴县| 锡林浩特市| 安乡县| 平潭县|