Java進階面試含架構師 標籤: 架構 2016-11-25 16:04 3090人閱讀 評論(0) 收藏 舉報
目錄(?)[+] JDK1.5新增的功能 ==>>> 字元流和位元組流的區別,使用情境,相關類 ==>>> 安全執行緒的概念,實現安全執行緒的幾種方法 ==>>> 抽象類別和介面的區別,使用情境 ==>>> hash演算法的實現原理,hashcode的實現原理 ==>>> error和exception的區別,RuntimeException和非RuntimeException的區別 ==>>> 繼承與組合的區別,使用情境 ==>>> 使用靜態Factory 方法的好處和壞處 ==>>> 排序演算法,他們是時間複雜度是多少 ==>>> 資料庫設計原則、範式 ==>>> 資料庫常用的編碼方式有哪幾種 如果有10萬條學產生績資訊,怎麼擷取成績最高的那一條資料,怎麼擷取成績第三的那一條資料,列舉你認為效能最好的方式 ==>>> 序列化的作用,應用情境,除了網路傳輸 ==>>> spring的IOC、AOP的使用情境 ==>>> ajax是否能跨域請求,解決的辦法 ==>>> 解析xml的幾種方法,他們的原理 ==>>> 怎麼樣實現高效能的代碼 ==>>> 如果有和其他系統有介面調用,但其他系統還沒開發完成,怎麼進行單元測試 ==>>> 防止重複提交有哪幾種方式 (這個網上很多,可以google下) 怎麼樣運用樣式設計一個DIV浮出層 資料庫連接池的實現原理,請求怎麼樣去擷取串連,,關閉串連時,串連池是銷毀串連還是回收串連 ==>>> tomcat、weblogic、jboss的區別,容器的作用 ==>>> apache是容器麼,它的作用是什麼 ==>>> 內部跳轉和外部跳轉的區別,底層實現原理 ==>>> http和https的區別 ==>>> 宕機的原因有哪幾種,怎麼樣分析宕機的原因,如:資料庫的長串連。。。 ==>>> 在velocity頁面,為什麼不推薦不推薦使用宏定義 ==>>> webx的核心原理,webx架構和velocity的優缺點 ==>>> 頁面上如果有一個screen和兩個control,那麼他們有幾個context ==>>> 一個含有layout、screen和control的頁面,他們的載入順序是什麼,是等所有的載入完一起顯示,還是其他。。。 ==>>> #if($!a==’true’)會出問題麼,為什麼 ==>>> 支付寶怎麼樣保證他的安全,他的調用異常分哪幾種 ==>>> 項目中你覺得做得最好的是什麼 ==>>> 35.java除了8種基本類型外,在虛擬機器裡還有哪一種,有什麼作用? 36.除了使用new關鍵字建立對象意外,試列舉另外三種以上建立執行個體的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class載入方式有什麼區別。 38.列舉三種以上記憶體回收演算法,並比較其優缺點。 39.編寫代碼實現一個線程池 40.描述一下JVM載入class檔案的原理機制? JVM中類的裝在是由ClassLoader和它的子類來實現的,java ClassLoader是一個重要的java運行時組件。它負責在運行時載入和裝入類檔案的類。 41.試舉例說明一個典型的記憶體回收演算法。 42.請用java寫二叉樹演算法,實現添加資料形成二叉樹功能,並以先序的方式列印出來. 43.請寫一個java程式實現線程串連池功能。 44.給定一個C語言函數,要求實現在java類中進行調用。 45.如何獲得數組的長度。 46.存取修飾詞“public/private/protected/預設的修飾符”的使用 47.用關鍵字final修飾一個類或者方法時,有何意義。 48.掌握類和對象的概念,掌握物件導向編程的本質 49.靜態變數和靜態方法的意義,如何引用一個類的靜態變數或者靜態方法。 50.JAVA語言如何進行異常處理,關鍵字:thorws,throw,try,catch,finally 51.Object類(或者其子類)的finalize()方法在什麼情況下被調用。 52.一個“.java”原檔案中是否可以包括多個類(不是內部類)。 53.掌握內部類和介面的概念 54.StringTokenizer類的使用 55.資料結構,如何遍曆List中的元素。 如果要按照索引值儲存或者訪問資料,使用什麼資料結構。 要掌握Collection相關的介面和類的使用 56.使用StringBuffer類與String類進行字串串連時有何區別。 57.調用Thread類的destroy()方法有什麼後果。 58.多線程,用什麼關鍵字修飾同步方法。stop()和suspend()方法為何不推薦使用。 59.使用socket建立用戶端與伺服器的通訊的過程 60.JAVA語言國際化應用,Locale類,Unicode 61.描述反射機制的作用 62.如何讀寫一個檔案。 關於Hashcode方法和equals。
雜湊表這個資料結構想必大多數人都不陌生,而且在很多地方都會利用到hash表來提高尋找效率。在Java的Object類中有一個方法:
| 1 |
public native int hashCode(); |
根據這個方法的聲明可知,該方法返回一個int類型的數值,並且是本地方法,因此在Object類中並沒有給出具體的實現。
為何Object類需要這樣一個方法。它有什麼作用呢。今天我們就來具體探討一下hashCode方法。 一.hashCode方法的作用
對於包含容器類型的程式設計語言來說,基本上都會涉及到hashCode。在Java中也一樣,hashCode方法的主要作用是為了配合基於散列的集合一起正常運行,這樣的散列集合包括HashSet、HashMap以及HashTable。
為什麼這麼說呢。考慮一種情況,當向集合中插入對象時,如何判別在集合中是否已經存在該對象了。(注意:集合中不允許重複的元素存在)
也許大多數人都會想到調用equals方法來逐個進行比較,這個方法確實可行。但是如果集合中已經存在一萬條資料或者更多的資料,如果採用equals方法去逐一比較,效率必然是一個問題。此時hashCode方法的作用就體現出來了,當集合要添加新的對象時,先調用這個對象的hashCode方法,得到對應的hashcode值,實際上在HashMap的具體實現中會用一個table儲存已經存進去的對象的hashcode值,如果table中沒有該hashcode值,它就可以直接存進去,不用再進行任何比較了;如果存在該hashcode值, 就調用它的equals方法與新元素進行比較,相同的話就不存了,不相同就散列其它的地址,所以這裡存在一個衝突解決的問題,這樣一來實際調用equals方法的次數就大大降低了,說通俗一點:Java中的hashCode方法就是根據一定的規則將與對象相關的資訊(比如對象的儲存地址,對象的欄位等)映射成一個數值,這個數值稱作為散列值。下面這段代碼是java.util.HashMap的中put方法的具體實現:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |