隨筆 - 6  文章 - 0  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          好友

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          很快就畢業(yè)了,之前去過面試兩家公司都考到一些java,linux,SQL,智力等的題目,今天想做個總結(jié)把網(wǎng)上找到的面試題目整合一下,方便偶以后面試所用,也當(dāng)復(fù)習(xí)一下基礎(chǔ)。
          java基礎(chǔ)題:

          1、作用域public,private,protected,以及不寫時的區(qū)別
          答:區(qū)別如下:
          作用域 當(dāng)前類 同一package 子孫類 其他package
          public √ √ √ √
          protected √ √ √ ×
          friendly √ √ × ×
          private √ × × ×
          不寫時默認(rèn)為friendly

          2、ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
          答:就ArrayList與Vector主要從二方面來說.
          一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
          二.數(shù)據(jù)增長:當(dāng)需要增長時,Vector默認(rèn)增長為原來一培,而ArrayList卻是原來的一半
          就HashMap與HashTable主要從三方面來說。
          一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個實(shí)現(xiàn)
          二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
          三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

          3、char型變量中能不能存貯一個中文漢字?為什么?
          答:是能夠定義成為一個中文的,因?yàn)閖ava中以unicode編碼,一個char占16個字節(jié),所以放一個中文是沒問題的

          4、多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
          答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口
          同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify

          5、繼承時候類的執(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();
          }
          }
          輸出結(jié)果:
          C:\>java test.ChildClass
          FatherClass Create
          FatherClass Create
          ChildClass Create

          6、內(nèi)部類的實(shí)現(xiàn)方式?
          答:示例代碼如下:
          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();
          }
          }
          輸出結(jié)果:
          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();
          }
          說明如下:
          一.靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員。 故 A、B 錯
          二.靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的靜態(tài)變量,而不可訪問外部類的非靜態(tài)變量;return d1 出錯。

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

          7、垃圾回收機(jī)制,如何優(yōu)化程序?
          希望大家補(bǔ)上,謝謝

          8、float型float f=3.4是否正確?
          答:不正確。精度不準(zhǔn)確,應(yīng)該用強(qiáng)制類型轉(zhuǎn)換,如下所示:float f=(float)3.4

          9、介紹JAVA中的Collection FrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?
          答:Collection FrameWork如下:
          Collection
          ├List
          │├LinkedList
          │├ArrayList
          │└Vector
          │ └Stack
          └Set
          Map
          ├Hashtable
          ├HashMap
          └WeakHashMap
          Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)
          Map提供key到value的映射

          10、Java中異常處理機(jī)制,事件機(jī)制?

          11、JAVA中的多形與繼承?
          希望大家補(bǔ)上,謝謝

          12、抽象類與接口?
          答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實(shí)現(xiàn),而接口則完全是一個標(biāo)識(同時有多重繼承的功能)。

          13、Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務(wù)器幾個字符,再寫入本地顯示
          答: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();
          }
          };
          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();
          }
          };

          14、用JAVA實(shí)現(xiàn)一種排序,JAVA類實(shí)現(xiàn)序列化的方法(二種)? 如在COLLECTION框架中,實(shí)現(xiàn)比較要實(shí)現(xiàn)什么樣的接口?
          答:用插入法進(jì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類實(shí)現(xiàn)序例化的方法是實(shí)現(xiàn)java.io.Serializable接口
          Collection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)Comparable 接口和 Comparator 接口

          15、編程:編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我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)));

          Jsp方面

          1、jsp有哪些內(nèi)置對象?作用分別是什么?
          答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對應(yīng)):
           request 用戶端請求,此請求會包含來自GET/POST請求的參數(shù)
          response 網(wǎng)頁傳回用戶端的回應(yīng)
          pageContext 網(wǎng)頁的屬性是在這里管理
          session 與請求有關(guān)的會話期
          application servlet 正在執(zhí)行的內(nèi)容
          out 用來傳送回應(yīng)的輸出
          config servlet的構(gòu)架部件
          page JSP網(wǎng)頁本身
          exception 針對錯誤網(wǎng)頁,未捕捉的例外

          2、jsp有哪些動作?作用分別是什么?
          答:JSP共有以下6種基本動作
          jsp:include:在頁面被請求的時候引入一個文件。
          jsp:useBean:尋找或者實(shí)例化一個JavaBean
          jsp:setProperty:設(shè)置JavaBean的屬性。
          jsp:getProperty:輸出某個JavaBean的屬性。
          jsp:forward:把請求轉(zhuǎn)到一個新的頁面。
          jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記

          3、JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
          答:動態(tài)INCLUDE用jsp:include動作實(shí)現(xiàn)
          <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)
          靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面
          <%@ include file="included.htm" %>

          4、兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?
          答:有兩種,分別為:
          <jsp:include page="included.jsp" flush="true">
          <jsp:forward page= "nextpage.jsp"/>
          前者頁面不會轉(zhuǎn)向include所指的頁面,只是顯示該頁的結(jié)果,主頁面還是原來的頁面。執(zhí)行完后還會回來,相當(dāng)于函數(shù)調(diào)用。并且可以帶參數(shù).后者完全轉(zhuǎn)向新頁面,不會再回來。相當(dāng)于go to 語句。

          Servlet方面?

          1、說一說Servlet的生命周期??
          答:servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請求以及服務(wù)結(jié)束。這個生存期由javax.servlet.Servlet接口的init,service和destroy方法表達(dá)。?

          2、Servlet版本間(忘了問的是哪兩個版本了)的不同??
          希望大家補(bǔ)上,謝謝?

          3、JAVA?SERVLET?API中forward()?與redirect()的區(qū)別??
          答:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務(wù)器上的資源,則必須使用sendRedirect()方法。?

          4、Servlet的基本架構(gòu)?
          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?{?
          }?
          }?

          Xml方面

          1、xml有哪些解析技術(shù)?區(qū)別是什么?
          答:有DOM,SAX,STAX等
          DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個文檔裝入內(nèi)存,適合對XML的隨機(jī)訪問SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時,它會觸發(fā)一個事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
          STAX:Streaming API for XML (StAX)

          2、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
          答:用到了數(shù)據(jù)存貯,信息配置兩方面。在做數(shù)據(jù)交換平臺時,將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時,利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存貯在XML文件中。

          設(shè)計(jì)模式方面

          1、開發(fā)中都用到了那些設(shè)計(jì)模式?用在什么場合?
          答:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。主要用到了MVC的設(shè)計(jì)模式。用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用。簡單工廠模式等。

          2、UML方面?有哪五種圖視?
          答:標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(shí)現(xiàn)圖,

          JavaScript方面

          1、如何校驗(yàn)數(shù)字型?
          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);
          }

          LINUX方面

          1、LINUX下線程,GDI類的解釋。
          答:LINUX實(shí)現(xiàn)的就是基于核心輕量級進(jìn)程的"一對一"線程模型,一個線程實(shí)體對應(yīng)一個核心輕量級進(jìn)程,而線程之間的管理在核外函數(shù)庫中實(shí)現(xiàn)。
          GDI類為圖像設(shè)備編程接口類庫。

          變態(tài)試題集

          1。變態(tài)指數(shù) 4
          int x=4;
          System.out.println("value is " +((x>4)?99.9:9));
          答案 9.0 問號表達(dá)式的后面兩個條件有要求,因?yàn)榍懊娴氖莊loat,所以后面轉(zhuǎn)為float.
          估計(jì)出題者才通過SCJP的考試。
          2.變態(tài)指數(shù) 5
          public class Test {

          public static void main(String[] args) {
          int x = 4;
          java.util.Date date = (x > 4) ? new A() : new B();
          }
          }

          class A extends java.util.Date {}
          class B extends java.util.Date {}
          答案 編譯不通過,
          不知道出題人的意圖
          3.變態(tài)指數(shù) 6
          String s=new String("abc");
          創(chuàng)建了幾個String對象?
          答案 2個
          這樣的公司最好不要去

          4.變態(tài)指數(shù) 7
          const是不是java的關(guān)鍵字?
          答案 const是java的關(guān)鍵字,但是java沒有實(shí)現(xiàn)它
          一般人絕對用不到它

          5.變態(tài)指數(shù) 8
          ,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
          答案 1錯2對,1因?yàn)橄蛏限D(zhuǎn)型了,最后導(dǎo)致類型不匹配錯誤 ,
          因?yàn)閟1的+=是一個操作符,能夠自動轉(zhuǎn)型,
          short s1 = 1;
          s1 = s1+1;這句話在c++里面可以的
          不知道出題人的意圖
          6.變態(tài)指數(shù) 9
          上海貝爾的面試題:你認(rèn)為效率最高的方法,實(shí)現(xiàn)從1加到100.
          答案 1-100的累加相當(dāng)于加50次101,這樣循環(huán)次數(shù)從100次降為50次:
          int sun = 0
          for(int i = 1,j = 100 ; i <= 50 ; i++,j--){
          ??? sun = sun + i + j;
          }?
          出題人腦子有問題,直接(1+100)*50不是最快...其實(shí)類似這樣的優(yōu)化應(yīng)該不是程序員考慮的范疇吧
          7.變態(tài)指數(shù) 10
          ?System.out.println(5.0942*1000);
          ???? System.out.println(5.0943*1000);
          ? System.out.println(5.0944*1000);的結(jié)果
          答案 :5094.2 5094.299999999999 5094.400000000001
          原理和浮點(diǎn)數(shù)的計(jì)算機(jī)表示方式有關(guān) ,你不用上機(jī),就答對了,你最好去微軟,接替安德爾森.

          posted on 2006-03-02 13:56 badboy 閱讀(284) 評論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 康马县| 黄龙县| 东乡县| 佛冈县| 同德县| 七台河市| 凤翔县| 华安县| 巫溪县| 库伦旗| 凌海市| 绥滨县| 五大连池市| 呈贡县| 苗栗县| 礼泉县| 梓潼县| 淅川县| 永春县| 余江县| 永济市| 平昌县| 即墨市| 新河县| 饶平县| 香河县| 雷山县| 定南县| 宁河县| 宝丰县| 蒙自县| 法库县| 丹巴县| 巴林右旗| 施甸县| 金塔县| 清水河县| 天全县| 旬邑县| 荃湾区| 特克斯县|