熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

JAVA程序員面試32問,你能回答多少題?

2022-06-13   來源: JSP教程 

  第一談談final finally finalize的區別
  
  第二Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類是否可以implements(實現)interface(接口)?
  
  第三Static Nested Class 和 Inner Class的不同說得越多越好(面試題有的很籠統)
  
  第四&和&&的區別
  
  第五HashMap和Hashtable的區別
  
  第六Collection 和 Collections的區別
  
  第七什麼時候用assert
  
  第八GC是什麼? 為什麼要有GC?
  
  第九String s = new String(xyz);創建了幾個String Object?
  
  第十Mathround()等於多少? Mathround()等於多少?
  
  第十一short s = ; s = s + ;有什麼錯? short s = ; s += ;有什麼錯?
  
  第十二sleep() 和 wait() 有什麼區別?
  
  第十三Java有沒有goto?
  
  第十四數組有沒有length()這個方法? String有沒有length()這個方法?
  
  第十五Overload和Override的區別Overloaded的方法是否可以改變返回值的類型?
  
  第十六Set裡的元素是不能重復的那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
  
  第十七給我一個你最常見到的runtime exception
  
  第十八error和exception有什麼區別?
  
  第十九List Set Map是否繼承自Collection接口?
  
  第二十abstract class和interface有什麼區別?
  
  第二十一abstract的method是否可同時是static是否可同時是native是否可同時是synchronized?
  
  第二十二接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
  
  第二十三啟動一個線程是用run()還是start()?
  
  第二十四構造器Constructor是否可被override?
  
  第二十五是否可以繼承String類?
  
  第二十六當一個線程進入一個對象的一個synchronized方法後其它線程是否可進入此對象的其它方法?
  
  第二十七try {}裡有一個return語句那麼緊跟在這個try後的finally {}裡的code會不會被執行什麼時候被執行在return前還是後?
  
  第二十八編程題: 用最有效率的方法算出乘以等於幾?
  
  第二十九兩個對象值相同(xequals(y) == true)但卻可有不同的hash code這句話對不對?
  
  第三十當一個對象被當作參數傳遞到一個方法後此方法可改變這個對象的屬性並可返回變化後的結果那麼這裡到底是值傳遞還是引用傳遞?
  
  第三十一swtich是否能作用在byte上是否能作用在long上是否能作用在String上?
  
  第三十二編程題: 寫一個Singleton出來
  
  以下是答案
  
  第一談談final finally finalize的區別
  
  final?修飾符(關鍵字)如果一個類被聲明為final意味著它不能再派生出新的子類不能作為父類被繼承因此一個類不能既被聲明為 abstract的又被聲明為final的將變量或方法聲明為final可以保證它們在使用中不被改變被聲明為final的變量必須在聲明時給定初值而在以後的引用中只能讀取不可修改被聲明為final的方法也同樣只能使用不能重載finally?再異常處理時提供 finally 塊來執行任何清除操作如果拋出一個異常那麼相匹配的 catch 子句就會執行然後控制就會進入 finally 塊(如果有的話)
  
  finalize?方法名Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的它是在 Object 類中定義的因此所有的類都繼承了它子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的
  
  第二Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類是否可以implements(實現)interface(接口)?
  
  匿名的內部類是沒有名字的內部類不能extends(繼承) 其它類但一個內部類可以作為一個接口由另一個內部類實現
  
  第三Static Nested Class 和 Inner Class的不同說得越多越好(面試題有的很籠統)
  
  Nested Class (一般是C++的說法)Inner Class (一般是JAVA的說法)Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上具體可見
  
  注 靜態內部類(Inner Class)意味著創建一個static內部類的對象不需要一個外部類對象不能從一個static內部類的一個對象訪問一個外部類對象
  
  第四&和&&的區別
  
  &是位運算符&&是布爾邏輯運算符
  
  第五HashMap和Hashtable的區別
  
  都屬於Map接口的類實現了將惟一鍵映射到特定的值上
  
  HashMap 類沒有分類或者排序它允許一個 null 鍵和多個 null 值
  
  Hashtable 類似於 HashMap但是不允許 null 鍵和 null 值它也比 HashMap 慢因為它是同步的
  
  第六Collection 和 Collections的區別
  
  Collections是個javautil下的類它包含有各種有關集合操作的靜態方法
  Collection是個javautil下的接口它是各種集合結構的父接口
  
  第七什麼時候用assert
  
  斷言是一個包含布爾表達式的語句在執行這個語句時假定該表達式為 true如果表達式計算為 false那麼系統會報告一個 AssertionError它用於調試目的
  
  assert(a > ); // throws an AssertionError if a <=
  
  斷言可以有兩種形式
  
  assert Expression ;
  assert Expression : Expression ;
  
  Expression 應該總是產生一個布爾值
  Expression 可以是得出一個值的任意表達式這個值用於生成顯示更多調試信息的 String 消息
  斷言在默認情況下是禁用的要在編譯時啟用斷言需要使用 source 標記
  
  javac source Testjava
  
  要在運行時啟用斷言可使用 enableassertions 或者 ea 標記
  要在運行時選擇禁用斷言可使用 da 或者 disableassertions 標記
  要系統類中啟用斷言可使用 esa 或者 dsa 標記還可以在包的基礎上啟用或者禁用斷言
  
  可以在預計正常情況下不會到達的任何位置上放置斷言斷言可以用於驗證傳遞給私有方法的參數不過斷言不應該用於驗證傳遞給公有方法的參數因為不管是否啟用了斷言公有方法都必須檢查其參數不過既可以在公有方法中也可以在非公有方法中利用斷言測試後置條件另外斷言不應該以任何方式改變程序的狀態
  
  
  第八GC是什麼? 為什麼要有GC? (基礎)
  
  GC是垃圾收集器Java 程序員不用擔心內存管理因為垃圾收集器會自動進行管理要請求垃圾收集可以調用下面的方法之一
  
  Systemgc()
  RuntimegetRuntime()gc()
  
  第九String s = new String(xyz);創建了幾個String Object?
  
  兩個對象一個是xyx一個是指向xyx的引用對象s
  
  第十Mathround()等於多少? Mathround()等於多少?
  
  Mathround()返回(long)Mathround()返回(long);
  
  第十一short s = ; s = s + ;有什麼錯? short s = ; s += ;有什麼錯?
  
  short s = ; s = s + ;有錯s是short型s+是int型不能顯式轉化為short型可修改為s =(short)(s + ) short s = ; s += 正確
  
  第十二sleep() 和 wait() 有什麼區別? 搞線程的最愛
  
  sleep()方法是使線程停止一段時間的方法在sleep 時間間隔期滿後線程不一定立即恢復執行這是因為在那個時刻其它線程可能正在運行而且沒有被調度為放棄執行除非(a)醒來的線程具有更高的優先級(b)正在運行的線程因為其它原因而阻塞
  
  wait()是線程交互時如果線程對一個同步對象x 發出一個wait()調用該線程會暫停執行被調對象進入等待狀態直到被喚醒或等待時間到
  
  第十三Java有沒有goto?
  
  Goto?java中的保留字現在沒有在java中使用
  
  第十四數組有沒有length()這個方法? String有沒有length()這個方法?
  
  數組沒有length()這個方法有length的屬性
  String有有length()這個方法
  
  第十五Overload和Override的區別Overloaded的方法是否可以改變返回值的類型?
  
  方法的重寫Overriding和重載Overloading是Java多態性的不同表現重寫Overriding是父類與子類之間多態性的一種表現重載Overloading是一個類中多態性的一種表現如果在子類中定義某方法與其父類有相同的名稱和參數我們說該方法被重寫 (Overriding)子類的對象使用這個方法時將調用子類中的定義對它而言父類中的定義如同被屏蔽如果在一個類中定義了多個同名的方法它們或有不同的參數個數或有不同的參數類型則稱為方法的重載(Overloading)Overloaded的方法是可以改變返回值的類型
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19774.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.