編程之道

          無論是批評的,贊揚的,指著的都請EMAIL給我,你的建議將是我前進的動力! 聯系我

          某一家公司的測試題

          我做了差不多3個小時,簡直整人啊。不過還好這些題目我以前在網上都見過,有些沒作出來的我也補上答案了。由于面試通過了,極度興奮ING。

          問題1、面向對象的特征有哪些方面?
           封裝,多態,繼承

          問題2、String是最基本的數據類型嗎?
          不是。

          問題3、int 和 Integer 有什么區別?
          int是數據類型,存的是數值。
          Integer是對象,通過一個引用只想這個對象。

          問題4、運行時異常與一般異常有何異同?
           異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

          問題5、說出Servlet的生命周期,并說出Servlet和CGI的區別。
           Servlet被服務器實例化后,容器運行其init方法,請求到達時運行其service方法,當服務器決定將實例銷毀的時候調用其destroy方法。
          CGI: 每個請求都產生新的進程,服務完成后就銷毀,所以效率上低于servlet。

          問題6、說出ArrayList,Vector, LinkedList的存儲性能和特性。
           ArrayList其實就是用數組來實現的,所以在查詢數據方面速度快。
           Vector在功能上和ArrayList幾乎一樣,不過Vector類內的成員都是同步的,如果不考慮線程安全的話,還是使用ArrayList。因為同步在運行時要消耗掉大量的內存。
           LinkedList是由鏈表來實現的,所以在添加刪除等操作方面速度快,同時也能有效的利用內存空間。

          問題7、sleep() 和 wait() 有什么區別?
           Sleep()是讓該線程睡眠一段時間,將控制權給別的線程。等時間到了就自動恢復。
           Wait()方法需要通過notify()方法調用,線程才能進入運行狀態。

          問題8、Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
           方法的重寫和重載是Java多態性的不同表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫。子類的對象使用這個方法時,將調用子類中的定義。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載。
          Overload的方法是可以改變返回值的類型。

          問題9、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。
           同步是當多個線程都要使用一個資源的時候就要使用。例如:有個公共廁所每次只能進一個,如果N個人同時有需要的話,就需要同步,讓一個人進去,等里面人出來后其他人才能進。

          問題10、說出數據連接池的工作機制是什么?
           服務器啟動后創建指定數量的連接。當客戶端訪問時,服務器分配一個空閑的連接。
          如果先前分配連接用完,就新建一定數量的連接。

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

          問題12、Java中的異常處理機制的簡單原理和應用。
           當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。也可以自己定義異常處理方式。

          問題13、垃圾回收的優點和原理。并考慮2種回收機制。
           優點就是程序員不需要考慮對內存的釋放。

          問題14、請說出你所知道的線程同步的方法。
           Wait(),sleep(), notify()

          問題15、多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?
           多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
          同步的實現方面有兩種,分別是synchronized,wait與notify

          問題16、servlet的生命周期
          Servlet被服務器實例化后,容器運行其init方法,請求到達時運行其service方法,當服務器決定將實例銷毀的時候調用其destroy方法。

          問題17、J2EE是技術還是平臺還是框架?
           我覺得都是。
           J2EE是SUN公司提出的一個基于多層應用的,分布式開發的,以組件形式(具有框架)形成的一個標準平臺。

          問題18、我們在web應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?
           String str=”abcd”;
           String tempStr  =  new  String(str.getBytes("ISO-8859-1"),  "GBK");

          問題19、XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?
           1.XML文檔定義有2種形式,DTD和Schema,區別是schema本身是XML,能被解析器解析。
           2.解析XML文檔有SAX和DOM,還有一些不過都是SAX和DOM基礎上發展的。

          問題20、bean 實例的生命周期
           對于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,在create之后實例并不從內存清除,而是采用緩沖池調度機制不斷重用實例,而對于存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態并限制內存中實例數量。

          問題21、如何啟動時不需輸入用戶名與密碼?
           沒看明白什么意思.什么啟動啊?

          問題22、排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。
           排序的方法有:直接插入排序、希爾排序,冒泡排序、快速排序,直接選擇排序、堆排序,歸并排序,箱排序、基數排序等。

          問題23、java中會存在內存泄漏嗎,請簡單描述。
           內存泄漏應該是程序設計的問題,與語言無關把。
          問題24、java中實現多態的機制是什么?
           重寫和重載。

          問題25、應用服務器與WEB SERVER的區別?
           從功能上來講:應用服務器是處理業務邏輯的;而web服務器則主要是處理表示層的。

          問題26、BS與CS的聯系與區別。
            B/S:由服務器承擔大部分工作,瀏覽器只負責少量的前端處理(比方說用JS驗證控件)。
            C/S:服務器客戶端共同分擔處理。

          問題27、WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。
          Web ServiceWeb Service是基于網絡的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,這些規范使得Web Service能與其他兼容的組件進行互操作。
          JAXP(Java API for XML Parsing) 定義了在Java中使用DOM, SAX, XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當你需要改變具體的實現時候也不需要修改代碼。
          JAXM(Java API for XML Messaging) 是為SOAP通信提供訪問方法和傳輸機制的API。
          WSDL是一種 XML 格式,用于將網絡服務描述為一組端點,這些端點對包含面向文檔信息或面向過程信息的消息進行操作。這種格式首先對操作和消息進行抽象描述,然后將其綁定到具體的網絡協議和消息格式上以定義端點。相關的具體端點即組合成為抽象端點(服務)。
          SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協議。
          UDDI 的目的是為電子商務建立標準;UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現標準規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標準。

           
          二、JAVA代碼查錯

          問題1、
          abstract class Name {
          private String name;
          public abstract boolean isStupidName(String name) {}
          }
          這有何錯誤?
          錯。abstract 方法必須以分號結尾。

          問題2、
          public class Something {
                  void doSomething () {
                         private String s = "";
                         int l = s.length();
               }
          }
          有錯嗎?
          錯。局部變量前面不是有訪問限制符。

          問題3、
          abstract class Something {
             private abstract String doSomething ();
          }
          這好像沒什么錯吧?
          錯。抽象方法的本意就是必須子類繼承,你加個private肯定錯了。

          問題4、
          public class Something {
             public int addOne(final int x) {
                 return ++x;
             }
          }
          這個比較明顯。
          錯。Final訪問符一出,變量就不能被修改了。

          問題5、
          public class Something {
             public static void main(String[] args) {
                 Other o = new Other();
                 new Something().addOne(o);
             }
             public void addOne(final Other o) {
                 o.i++;
             }
          }
          class Other {
             public int i;
          }
          是關于final的問題,這有錯嗎?
          對的。變得是成員變量,但是對象的引用沒有變。

          問題6、
          class Something {
              int i;
              public void doSomething() {
                  System.out.println("i = " + i);
              }
          }
          有什么錯呢? 看不出來啊。
          對的。默認值=0。

          問題7、
          class Something {
              final int i;
              public void doSomething() {
                  System.out.println("i = " + i);
              }
          }
          和上面一題只有一個地方不同,就是多了一個final。這難道就錯了嗎?
          對的。和上題一樣。

          問題8、
          public class Something {
               public static void main(String[] args) {
                  Something s = new Something();
                  System.out.println("s.doSomething() returns " + doSomething());
              }
              public String doSomething() {
                  return "Do something ...";
              }
          }
           看上去很完美。
          錯。方法不是靜態的,所以一定要object.method();

          問題9、
          此處,Something類的文件名叫OtherThing.java
          class Something {
          private static void main(String[] something_to_do) {       
                  System.out.println("Do something ...");
              }
          }
           這個好像很明顯。
          錯。類名的名字必須和文件名相同。

          問題10、
          interface  A{
             int x = 0;
          }
          class B{
             int x =1;
          }
          class C extends B implements A {
             public void pX(){
          System.out.println(x);
             }
             public static void main(String[] args) {
                new C().pX();
             }
          }
          錯誤。必須要明確X的來源。

          問題11、
          interface Playable {
          void play();
          }
          interface Bounceable {
              void play();
          }
          interface Rollable extends Playable, Bounceable {
              Ball ball = new Ball("PingPang");
          }
          class Ball implements Rollable {
              private String name;
              public String getName() {
                  return name;
              }
              public Ball(String name) {
                  this.name = name;       
              }
             public void play() {
                  ball = new Ball("Football");
                  System.out.println(ball.getName());
              }
          }
          這個錯誤不容易發現。
          錯誤。接口內能實例話對象?

          posted on 2005-09-07 11:44 瘋流成性 閱讀(1143) 評論(1)  編輯  收藏 所屬分類: 程序人生

          評論

          # re: 某一家公司的測試題 2007-12-17 14:43 Franlk

          class Something {
          final int i;
          public void doSomething() {
          System.out.println("i = " + i);
          }
          }


          應該不對吧,final修飾的值要求有值,它應該沒有default value。所以應該賦值才對。  回復  更多評論   

          主站蜘蛛池模板: 伊春市| 邹城市| 白银市| 赤壁市| 青川县| 灵璧县| 会东县| 宁武县| 枝江市| 尚义县| 黑山县| 濮阳县| 阿坝县| 平山县| 万全县| 渑池县| 河池市| 五河县| 建平县| 贡山| 万全县| 三穗县| 文昌市| 抚松县| 高碑店市| 伊通| 炉霍县| 闻喜县| 县级市| 东乌珠穆沁旗| 资兴市| 沙河市| 桂阳县| 吉木萨尔县| 剑阁县| 呼图壁县| 景德镇市| 宜宾县| 渭源县| 克东县| 井研县|