一些JAVA面試題和答案(偶爾更新)

  1. 堆和棧的區別(轉過無數次的文章)
    轉載(http://blog.csdn.net/hairetz/article/details/4141043)
    堆和棧的區別可以用如下的比喻來看出:
    使用棧就象我們去飯館裏喫飯,只管點菜(發出申請)、付錢、和喫(使用),喫飽了就
    走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。
    使用堆就象是自己動手做喜歡喫的菜餚,比較麻煩,但是比較符合自己的口味,而且自由度大。

堆:用來存放由 new 創建的對象和數組,在堆中分配的內存,由 Java 虛擬機的自動垃圾回收器來管理。
棧:在堆中產生了一個數組或者對象之後,還可以在棧中定義一個特殊的變量,讓棧中的這個變量的取值等於數組或對象在堆內存中的首地址,棧中的這個變量就成了數組或對象的引用變量,以後就可以在程序中使用棧中的引用變量來訪問堆中的數組或者對象,引用變量就相當於是爲數組或者對象起的一個名稱。
區別:每一個堆都是獨立的,它都可以有一個多個棧來指示;每一個棧也是獨立的,只可能指向一個堆。
2. JAVA對象的三大特徵:
多態、繼承、封裝
3. http、https、webSocket 協議的理解
(1)http:一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分佈式超媒體信息系統。 HTTP協議的主要特點可概括如下:
1).支持客戶/服務器模式。
2).簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3).靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4).無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
5).無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
(2)https:是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。它是一個URI
scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。
(3)webSocket:WebSocket協議是HTTP協議的升級版。WebSocket只有在建立握手連接的時候借用了HTTP協議的頭,連接成功後的通信部分都是基於TCP的連接。
4. CDN 的理解及優化:
(1)CDN:CDN的全稱是Content Delivery Network,即內容分發網絡。其基本思路是儘可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。
(2)CDN優化:由於CDN是部署在網絡運營商的機房,這些運營商又是終端用戶網絡的提供商,因此用戶請求的第一跳就到達CDN服務器,當CDN服務器中緩存有用戶請求的數據時,就可以從CDN直接返回給客戶端瀏覽器,最短路徑的返回響應,加快用戶的訪問速度,減少數據中心的負載壓力。CDN能夠緩存一般的CSS,js圖片等靜態資源文件,而且這些文件的訪問頻率很高,將其緩存在CDN可以極大的提高網站的訪問速度。

5.常用 hash 算法及優化:
(1)加法Hash; 位運算Hash;乘法Hash;除法Hash; 查表Hash;混合Hash;
(2)優化: 減少碰撞(也就是唯一性):在一個需要進行 hash 運算的容器中,最重要的是避免碰撞。碰撞就是兩個或多個 key
映射到了同一個位置。這也意味着你需要做一些額外工作來檢查某個 key 是否是你需要的那個,因爲現在有多個 key
放到了同一個位置上。在理想情況下,每個位置最多隻能有一個 key。

6.公私鑰加密算法及體系的理解:
(1)公鑰密碼體制分爲三個部分,公鑰、私鑰、加密解密算法,它的加密解密過程如下: 加密:通過加密算法和公鑰對內容(或者說明文)進行加密,得到密文。加密過程需要用到公鑰。 解密:通過解密算法和私鑰對密文進行解密,得到明文。解密過程需要用到解密算法和私鑰。注意,由公鑰加密的內容,只能由私鑰進行解密,也就是說,由公鑰加密的內容,如果不知道私鑰,是無法解密的。 公鑰密碼體制的公鑰和算法都是公開的(這是爲什麼叫公鑰密碼體制的原因),私鑰是保密的。大家都以使用公鑰進行加密,但是隻有私鑰的持有者才能解密。在實際的使用中,有需要的人會生成一對公鑰和私鑰,把公鑰發佈出去給別人使用,自己保留私鑰。
(2)RSA:是一種公鑰密碼體制,現在使用得很廣泛。如果對RSA本身有興趣的,後面看我有沒有時間寫個RSA的具體介紹。 RSA密碼體制是一種公鑰密碼體制,公鑰公開,私鑰保密,它的加密解密算法是公開的。 由公鑰加密的內容可以並且只能由私鑰進行解密,並且由私鑰加密的內容可以並且只能由公鑰進行解密。也就是說,RSA的這一對公鑰、私鑰都可以用來加密和解密,並且一方加密的內容可以由並且只能由對方進行解密。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章