posts - 12,  comments - 2,  trackbacks - 0
          1.簡述面向對象的概念,繼承、封裝、和多態.如果有四個

          2.簡述MVC 模式及對其的理解.

          3. 接口可否繼承接口?抽象類是否可實現(implements)接口?抽象類是否可繼承實體類(concrete class)?
              接口可以繼承接口。
              抽象類可以實現(implements)接口.
              抽象類可以繼承具體類(concrete class),但前提是實體必須有明確的構造函數.

          4.Java 有沒有goto?
             goto 是 java 的保留字,但是沒有使用.

          5.數組有沒有length()這個方法?String 有沒有length()這個方法?
              數組有length屬性,沒有length()方法。
              String 有length()方法,沒有length屬性.

          6.Overload 和Override 的區別. Overloaded的方法是否可以改變返回值的類型?
              方法的重寫override和重載overload 是java 多態性的不同表現。
              Override:覆蓋,是父類與子類之間多態性的一種表現,如果子類中定義的某方法與父類有相同的名稱和參數,我們說該方法被重寫
             (overriding).子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。
              Overload:重載,方法的重載,是一個類中的多態性的一種表現.在一個類中定義了多個同名的方法,它們有不同的參數個數或有不同
              參數類型,則車位方法的重載(overloading)
               overloaded方法可以改變返回值的類型

          7. ArrayList 、LinkedList和Vector 的區別, HashMap和Hashtable 的區別?
               ArrayList和Vector都是使用數組方式存儲數據,它們都允許直接按序號索引元素,但是插入數據要涉及數組元素移動等內存操作.所以讀取數據快而插入數據慢.
              一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList 是線程不安全的,不是同步的。
              二.數據增長:當需要增長時,Vector默認增長位原來的一倍,而ArrayList卻是原來的一半。
              LinkedList 使用雙向鏈表實現存儲,按序號索引數據需要進行前向后后向遍歷,但是插入數據的時只需要記錄本項的前后項即可,
          所有插入速度較快.

              都屬于Map接口的類,實現了將唯一鍵映射到特定的值上.
               1.歷史原因:HashMap是基于陳舊的Dictionary類,HashMap是Java 1.2引進的Map接口的一個實現。
               2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程不安全的,不是同步的。
               3.只有HashMap 可以讓你將空值作為一個表的條目的key或是value,它允許一個null鍵和多個null值,HashMap 類沒有分類或者是排序..
                  Hashtable 類類似于HashMap,但是不允許null鍵和null值。
               4.HashMap把Hashtable的contains方法去掉了,改成containvalue和containKey,因為contains方法讓人引起誤解.

          8.構造器Constructor是否可以被override?
          構造器constructor不能被繼承,因此不能重寫overriding,但可以被重載overloading

          9.是否可以繼承String類
          String類是final 類故不可以繼承

          10.當一個線程進入一個對象的一個synchronized方法后,其它線程可否進入此對象的其它方法?
          不能,一個對象的一個synchronized 方法只能有一個線程訪問。而其它的用戶必須等待,知道該用戶完成操作。

          11.try{} 里有一個return語句,那么緊跟在這個try后的finally{}里的code 會不會被執行,什么時候被執行,在return前還是后面
           會執行,在return前執行。

          12.最有效的方法算出2乘以8等于幾?
             2<<3
           根據二進制算,第一位00010向左移3位正好是10000,對應二進制是16.這里的3是指移的位數.

          13.有兩個對象值相同(x.equals(y)==true),但卻可有不同的hash code,這句話對不對?
               不對,有相同的hash code.因為hashcode用的是同一個類的方法,同時其每一個屬性值是相等的.

          14.當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里是值傳遞
          還是引用傳遞?
             是值傳遞,Java編程語言只由值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對
          該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不是改變的.

          15.swtich 是否能作用在byte上,是否能作用在long上,是否能作用在String上?
              switch(exp) exp 是一個整數表達式。因此傳遞給switch和case語句的參數應該是int,short ,char或者是byte
              不可以是其它類型,因此long,string都不能作用于swtich.

          16.Collection和Collections的區別
          Collections是java.util下的類,針對集合類的一個幫助類,它提供一些列的靜態方法實現對各種集合的搜索、排序、線程安全化等操作。
          Collection是java.util下的接口,它是各種集合結構的父接口。List 和Set 都是繼承Collection 接口

          17.Java 有那些基本數據類型,String是不是基本數據類型,他們有和區別。
          String不是基本數據類型,它是一個對象。基本數據類型不是對象,是一個內存值,其類型是int, long,byte,short,boolean,char

          18.abstract 的method 是否可同時是static,是否可同時是native,是否可同時是synchronized?
               不可以將abstract與static,native,synchronized任何其中之一合用

          19.abstract class和interface 有什么區別
              abstract class 即可以有實現方法,也可以有方法的聲明。(虛虛實實)
              類只可以繼承一個,不可以繼承多個。
              interface 只提供方法的聲明,并且所有方法都是抽象的。
              接口中的所有方法都是抽象的,沒有一個有程序體。接口值可以定義static final成員變量。

          20.給我一個你最常見到的runtime exception
               1.空指針異常 NullPointException。
               2.數組越界異常 
               3.IOException
                4.FileNotFoundException
                5.ClassNotFoundException

          21.error和exception有什么區別?
                error表示恢復不是不可能但很困難的情況下的一種嚴重的問題。比如說內存溢出。不可能指望程序能處理這樣的情況
                exception:表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

          22.String 是最基本的數據類型嗎?
             不是,String是一個對象。

          23.char型變量不能定義為一個中文?為什么?
              可以,因為有16位,正好一個中文漢字

          24.繼承時候類執行的順序
              先是父類,后是子類

          25.&和&&的區別
               &和&&都可以作為邏輯運算“與”使用,但是&&是“短路與”,運算時先判斷符號前面表達式的值,如果能夠確定整個表達式
          的值,則不進行符號后面的表達式的運算。
          另外,&也可作為位運算符使用

          26.String s=new String("xyz"),創建了幾個String Object?
            兩個對象,一個是"xyx" ,一個是指向"xyx"的對象引用

          27.Math.round(11.5)等于多少,Math.round(-11.5)等于多少?
          Math.round(11.5)==12
          Math.round(-11.5)==-11


          28.sleep()和wait()有什么區別?搞線程的最愛.
          sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執行。這是因為在那個時刻
          ,其它線程可能正在運行而且沒有被調度為放棄執行。
          除非1.“醒來”的線程具有更高的優先級
                  2.正在運行的線程因為其他原因而阻塞。
          wait()是線程交互時,如果線程對一個同步對象x發初一個wait()調用,該線程會暫停執行,被調用的對象進入等待狀態,
          直到被喚醒或等待時間到


          29.啟動一個線程是用run()還是start()?
               啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM 調度并執行.
          著并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程.

          30.Set 里的元素是不能重復的,那么用什么方法來區分重復與否呢?是用==還是equals()?它們有何區別?
             set 里的元素是不能重復的,那么用iterator()方法來區分重復與否。

          31.多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?
               多線程有兩種實現方法,分別是繼承Thread類與實現Runnable 接口;
               使用Runnable接口的實現類來提供線程體,這是創建線程的基本方式。
               使用直接繼承Thread類,重寫其中的run()方法并以之作為線程體的方式創建線程.
                兩種方式創建線程的區別:
                1.使用Runnable 接口創建線程時可以將CPU,代碼和數據分開,形成清晰的模型。線程體run()方法所在的類還可以從其它
                 類繼承一些有用的屬性或者方法,并有利于保持程序的風格的一致性。
                 2.使用直接繼承thread類創建的線程時,Thread子類無法再從其他類繼承,但是這種情況編寫簡單,run()方法的當前對象
                 就是線程對象,可直接操縱。

               同步的實現方法有兩種分別是syschronized,wait與notify.

          32.String 與StringBuffer 的區別
               String 的長度是不可變的,StringBuffer 的長度是可變的。

          33.Jsp中的動態include 和靜態的include 的區別。
               動態的include用jsp:include動作實現。
               <jsp:include page ="included.jsp" flush="true" />它總是會檢查所含的文件中的變化,適合用于包含動態的頁面,并且可以帶參數。
              
               靜態的include 用include喂馬實現,不會檢查所含文件的變化,適用于靜態頁面
                <%@ include file="included.html" %>

          34.Servlet API中的forward()與redirect()的區別
             前者

          35.通過UML畫出你所熟悉的設計模式。

          36.開發中都用到了那些設計模式?用在什么場合?
           主要用到了MVC 設計的模式.用來開發JSP/Servlet 或者是J2EE的相關應用
            簡單工廠設計模式
            單例模式
            裝飾模式IO
            門面模式


          37.jsp 的頁面跳轉
             jsp的頁面實現跳轉主要有jsp:forward和sendRedirect 兩種方法
            jsp:forward:在本容器內跳轉。跳轉后,地址欄地址不變。效率高,跳轉后立即結束本頁的內容。
             sendRedirect: 在容器之間跳轉,跳轉后地址欄的地址為跳轉后的地址,效率較低。

          38.關鍵字throw和throws的區別?
          可以利用throw關鍵字自己拋出異常
          Throws一般在定義函數的時候使用,表明函數被調用的時候要拋出異常

          39.名詞解釋:EJB JNDI RMI 
          EJB (Enterprise Java Bean ,企業級的JavaBean) J2EE體系中核心的技術是EJB,提供了一個框架來開發分布式商務邏輯,顯著地
          簡化了具有可伸縮性和高度復雜的企業級應用的開發。

          JNDI (Java Naming and Directory Interface,java命名和目錄接口) JNDI用于名字和目錄服務,提供了一致的接口來存取和操作企業級的資源
          ,如DNS(Domain Name Service)和本地文件系統。

          RMI(Remote Method Invocation ,遠程方法調用)RMI是在遠程的對象上調用的一些方法,使用了連續的方式在客戶端和服務器端傳遞數據,
          RMI 是EJB技術基礎。

          40.Swing中組件布局有哪幾種方式? 
           常用的布局管理器有下面幾種方式
           FlowLayout ,GridLayout,BorderLayout,CardLayout,GridBagLayout 

          41. 多線程有那些狀態?

          42.簡述Java語言的核心機制
          Java 語言包括三種核心機制:Java虛擬機、垃圾收集機制和代碼安全檢測.
          1.Java 虛擬機(Java Virtual Machine ,JVM) 
          在一臺計算機上由軟件或硬件模擬的計算機. Java虛擬機讀取并處理經過編譯過的平臺無關的字節碼class文件.
          2.垃圾收集機制(Garbage collection)
          在C/C++等語言中,有程序員負責回收無用內存。Java 語言解除了程序員回收無用的內存空間的責任。它提供一種系統級線程跟蹤
          存儲空間的分配情況。并在JVM空閑時,檢查并釋放那些可被釋放的存儲器空間。垃圾收集在Java程序運行過程中自動進行,程序員
          無法精確控制和干預.
          3.代碼安全性檢測(Code Security)
          Java執行代碼的時候,有JVM對運行的代碼進行安全性檢測,當進行一些非法操作的時候,比如修改一些系統的設置的時候,
          JVM會發出警告.

          43.設計模式:對抽象工廠模式的理解.

          44.對O/R MAPPING的理解.

          45.對Ajax 的理解及應用.

          46.運用JavaScript ,寫一個類,類名:student ,他的屬性:name ,age,tall,他的方法:getname,getAge,getTall 要突出Javascript 的oop思想.

          47.寫一個XML 文件
          格式如下:
          <student>
          <name>11</name>
          <age>33</age>
          </studnet>
          使用Java 語言,遍歷所有節點,然后在頁面上輸出。

          48.如何獲得客戶端的IP地址?
          利用request 對象可以獲得客戶提交的信息,比如:jsp文件目錄,客戶端的地址,以及服務器的端口等。
           <BR>獲取客戶的Ip地址
          <% String ip=request.getRemoteAddr();
          out.println(ip);%>

          49.構造函數有什么作用?簡述重載構造函數的好處。
          構造函數也叫構造方法,是java類中的一種特俗的方法,其功能是創建其所屬類型的一個新的對象。
          聲明構造方法的語法規則如下:
          <modifiers> <class_name> ([argu_list]){
          [<statements>]
          }
          構造方法的特點是:沒有返回值類型,方法名必須取和所屬類相同的名字。
          在定義Java類的時候,可以定義一個或者是多個構造方法,通常在構造方法中進行一些初始化工作。

          50.application 對象有什么特點?和sesion 對象有什么聯系和區別?
          站點所有的用戶公用一個application對象,當站點服務器開啟的時候,applicaiton就被創建,直到網站關閉
          可以使用Session對象儲存用戶登陸網站時候的信息。當用戶在頁面之間跳轉時,儲存在Session對象中的變量
          不會被清除。
          聯系是:數據都存儲在服務器端,而且都可以保留一段時間。
          區別是:每個用戶有一個session,但是application是共有的

          51.簡述Servlet 的生命周期?
           Servlet運行機制和Applet類似,Servlet是在服務器端運行的,但是Applet是在客戶端運行的。Servlet是 javax.servlet包中的
          HttpServlet類的子類,由服務器完成該子類的創建和初始化。
          Servlet的生命周期主要有3個過程組成。
          1.init(),服務器初始化Servlet
          2.service()方法:初始化完畢,Servlet對象調用該方法響應客戶的請求。
          3.destroy()方法:調用該方法消滅Servlet對象。
          其中,init()方法只在Servlet第一次被請求加載的時候被調用一次,當有客戶再請求Servlet服務時,Web服務器將啟動一個新的線程,
          在該線程中,調用Service方法相應客戶的請求。

          52.




           





                
             
              

          答題時間20分鐘
          1.
          System.out.println(1+’\002’)會打印出多少? _________
          System.out.println(1+2+”3”)會打印出多少? _________

          2. 請簡單補充完下面jdbc讀取數據的實現
          String SQL = “SELECT id , title, description FROM t_blog WHERE id = ?”;
          long id;
          String title;
          String description;
          Connection conn = null;//假設用ConnectionManager.getConnection();可以獲得連接對象
          PrepareStatement pstmt = null;




          如果description字段在數據庫中是text類型,而且存儲的文字比較多(20K左右),這時候該如何優化讀取,讓系統支撐更大的并發?


          3. 有一篇文章的URL為 view.jsp?id=100 ,每分鐘訪問量可能上千次,在記錄和顯示它的查看次數時,你覺得如何做性能比較好?


          4. 寫出你最常見到的一些運行時異常(runtime exception),再簡述一下你是如何避免java 中空指針異常的

          5. 你用lucene做過全文檢索嗎? 簡單描述一下你的經驗。

          6. 簡述一下你對GC的理解,以及如何避免內存泄露。

          7. 要求最后打印出的全部是數字,下面的程序滿足要求嗎?還可以再優化嗎?請簡單描述。
          String strA = “1:2:3:4:5:6:7:8:9:10:”;
          String arrA[] = strA.split(“:”);
          for(int i=0;i<arrA.length;i++)
          {
          System.out.println(arrA[i]);
          }


          8. 簡述一下javascript/dhtml/css/ajax在你以前項目中的應用程度;熟悉跨瀏覽器兼容javascript/css嗎? 有興趣對它們進行深入研究嗎?


          9. 你最熟悉Web開發過程中的哪部分?
          posted on 2008-05-09 16:37 doodoosun 閱讀(1065) 評論(0)  編輯  收藏 所屬分類: Java 面試題

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


          網站導航:
           

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

          常用鏈接

          留言簿(1)

          隨筆分類(6)

          隨筆檔案(11)

          文章分類(30)

          文章檔案(34)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 随州市| 镇沅| 特克斯县| 怀柔区| 博罗县| 独山县| 印江| 屏边| 武定县| 同德县| 沾化县| 五大连池市| 于都县| 外汇| 新余市| 银川市| 虞城县| 康乐县| 南安市| 乌审旗| 江西省| 前郭尔| 定兴县| 龙岩市| 雷山县| 绵竹市| 沿河| 东城区| 肇州县| 鄂托克旗| 韶山市| 利川市| 蒙阴县| 枞阳县| 张家口市| 承德市| 桂东县| 新建县| 伊宁市| 新津县| 长汀县|