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

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

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

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

          5.數(shù)組有沒有l(wèi)ength()這個方法?String 有沒有l(wèi)ength()這個方法?
              數(shù)組有l(wèi)ength屬性,沒有l(wèi)ength()方法。
              String 有l(wèi)ength()方法,沒有l(wèi)ength屬性.

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

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

              都屬于Map接口的類,實現(xiàn)了將唯一鍵映射到特定的值上.
               1.歷史原因:HashMap是基于陳舊的Dictionary類,HashMap是Java 1.2引進的Map接口的一個實現(xiàn)。
               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 會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后面
           會執(zhí)行,在return前執(zhí)行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          26.String s=new String("xyz"),創(chuàng)建了幾個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()有什么區(qū)別?搞線程的最愛.
          sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執(zhí)行。這是因為在那個時刻
          ,其它線程可能正在運行而且沒有被調度為放棄執(zhí)行。
          除非1.“醒來”的線程具有更高的優(yōu)先級
                  2.正在運行的線程因為其他原因而阻塞。
          wait()是線程交互時,如果線程對一個同步對象x發(fā)初一個wait()調用,該線程會暫停執(zhí)行,被調用的對象進入等待狀態(tài),
          直到被喚醒或等待時間到


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

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

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

               同步的實現(xiàn)方法有兩種分別是syschronized,wait與notify.

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

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

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

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

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


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

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

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

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

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

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

          41. 多線程有那些狀態(tài)?

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

          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 語言,遍歷所有節(jié)點,然后在頁面上輸出。

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

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

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

          51.簡述Servlet 的生命周期?
           Servlet運行機制和Applet類似,Servlet是在服務器端運行的,但是Applet是在客戶端運行的。Servlet是 javax.servlet包中的
          HttpServlet類的子類,由服務器完成該子類的創(chuàng)建和初始化。
          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讀取數(shù)據(jù)的實現(xiàn)
          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字段在數(shù)據(jù)庫中是text類型,而且存儲的文字比較多(20K左右),這時候該如何優(yōu)化讀取,讓系統(tǒng)支撐更大的并發(fā)?


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


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

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

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

          7. 要求最后打印出的全部是數(shù)字,下面的程序滿足要求嗎?還可以再優(yōu)化嗎?請簡單描述。
          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開發(fā)過程中的哪部分?
          posted on 2008-05-09 16:37 doodoosun 閱讀(1065) 評論(0)  編輯  收藏 所屬分類: Java 面試題

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


          網站導航:
           

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

          常用鏈接

          留言簿(1)

          隨筆分類(6)

          隨筆檔案(11)

          文章分類(30)

          文章檔案(34)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 疏勒县| 鹿邑县| 保德县| 深水埗区| 平江县| 碌曲县| 策勒县| 达尔| 阿坝县| 北碚区| 邓州市| 阿鲁科尔沁旗| 大姚县| 安丘市| 昌江| 鹤峰县| 河间市| 竹山县| 中宁县| 上杭县| 平武县| 津南区| 封开县| 永平县| 阿瓦提县| 长海县| 萍乡市| 新蔡县| 长葛市| 屏山县| 什邡市| 南溪县| 信宜市| 青神县| 东阿县| 阳谷县| 安新县| 美姑县| 建湖县| 顺义区| 将乐县|