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

          常用鏈接

          留言簿(2)

          隨筆分類(lèi)

          文章分類(lèi)

          好友

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

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

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

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

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

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

          5、繼承時(shí)候類(lèi)的執(zhí)行順序問(wèn)題,一般都是選擇題,問(wèn)你將會(huì)打印出什么?
          答:父類(lèi):
          package test;
          public class FatherClass
          {
          public FatherClass()
          {
          System.out.println("FatherClass Create");
          }
          }
          子類(lèi):
          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)部類(lè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
          再一個(gè)例題:
          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();
          }
          說(shuō)明如下:
          一.靜態(tài)內(nèi)部類(lèi)可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類(lèi)則不能有靜態(tài)成員。 故 A、B 錯(cuò)
          二.靜態(tài)內(nèi)部類(lèi)的非靜態(tài)成員可以訪問(wèn)外部類(lèi)的靜態(tài)變量,而不可訪問(wèn)外部類(lèi)的非靜態(tài)變量;return d1 出錯(cuò)。

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

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

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

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

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

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

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

          13、Java 的通信編程,編程題(或問(wèn)答),用JAVA SOCKET編程,讀服務(wù)器幾個(gè)字符,再寫(xiě)入本地顯示?
          答: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類(lèi)實(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類(lèi)實(shí)現(xiàn)序例化的方法是實(shí)現(xiàn)java.io.Serializable接口
          Collection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)Comparable 接口和 Comparator 接口

          15、編程:編寫(xiě)一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個(gè)”。
          答:代碼如下:
          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)置對(duì)象?作用分別是什么?
          答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對(duì)應(yīng)):
           request 用戶端請(qǐng)求,此請(qǐng)求會(huì)包含來(lái)自GET/POST請(qǐng)求的參數(shù)
          response 網(wǎng)頁(yè)傳回用戶端的回應(yīng)
          pageContext 網(wǎng)頁(yè)的屬性是在這里管理
          session 與請(qǐng)求有關(guān)的會(huì)話期
          application servlet 正在執(zhí)行的內(nèi)容
          out 用來(lái)傳送回應(yīng)的輸出
          config servlet的構(gòu)架部件
          page JSP網(wǎng)頁(yè)本身
          exception 針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外

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

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

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

          Servlet方面?

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

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

          3、JAVA?SERVLET?API中forward()?與redirect()的區(qū)別??
          答:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(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:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問(wèn)題是由DOM的樹(shù)結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問(wèn)SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開(kāi)頭,文檔結(jié)束,或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過(guò)在其回調(diào)事件中寫(xiě)入處理代碼來(lái)處理XML文件,適合對(duì)XML的順序訪問(wèn)
          STAX:Streaming API for XML (StAX)

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

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

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

          2、UML方面?有哪五種圖視?
          答:標(biāo)準(zhǔn)建模語(yǔ)言UML。用例圖,靜態(tài)圖(包括類(lèi)圖、對(duì)象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(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類(lèi)的解釋。
          答:LINUX實(shí)現(xiàn)的就是基于核心輕量級(jí)進(jìn)程的"一對(duì)一"線程模型,一個(gè)線程實(shí)體對(duì)應(yīng)一個(gè)核心輕量級(jí)進(jìn)程,而線程之間的管理在核外函數(shù)庫(kù)中實(shí)現(xiàn)。
          GDI類(lèi)為圖像設(shè)備編程接口類(lèi)庫(kù)。

          變態(tài)試題集

          1。變態(tài)指數(shù) 4
          int x=4;
          System.out.println("value is " +((x>4)?99.9:9));
          答案 9.0 問(wèn)號(hào)表達(dá)式的后面兩個(gè)條件有要求,因?yàn)榍懊娴氖莊loat,所以后面轉(zhuǎn)為float.
          估計(jì)出題者才通過(guò)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 {}
          答案 編譯不通過(guò),
          不知道出題人的意圖
          3.變態(tài)指數(shù) 6
          String s=new String("abc");
          創(chuàng)建了幾個(gè)String對(duì)象?
          答案 2個(gè)
          這樣的公司最好不要去

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

          5.變態(tài)指數(shù) 8
          ,short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
          答案 1錯(cuò)2對(duì),1因?yàn)橄蛏限D(zhuǎn)型了,最后導(dǎo)致類(lèi)型不匹配錯(cuò)誤 ,
          因?yàn)閟1的+=是一個(gè)操作符,能夠自動(dòng)轉(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;
          }?
          出題人腦子有問(wèn)題,直接(1+100)*50不是最快...其實(shí)類(lèi)似這樣的優(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ī),就答對(duì)了,你最好去微軟,接替安德?tīng)柹?

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乌兰县| 莱西市| 丹寨县| 准格尔旗| 青冈县| 原平市| 商都县| 咸丰县| 来宾市| 昌吉市| 珲春市| 济南市| 唐河县| 那坡县| 旬阳县| 从江县| 仲巴县| 贞丰县| 微山县| 鄂尔多斯市| 通城县| 郁南县| 郓城县| 泗水县| 沙湾县| 鹤山市| 青州市| 宽城| 长沙市| 三河市| 昭平县| 石泉县| 迁安市| 阜南县| 华坪县| 呼伦贝尔市| 河池市| 冷水江市| 通渭县| 深水埗区| 鄂托克旗|