歡迎光臨
每天分享高質量文章

Java初中級面試題(3)

點選上方“芋道原始碼”,選擇“置頂公眾號”

技術文章第一時間送達!

原始碼精品專欄

 

介面有什麼用

1、透過介面可以實現不相關類的相同行為,而不需要瞭解物件所對應的類。

2、透過介面可以指明多個類需要實現的方法。

3、透過介面可以瞭解物件的互動介面,而不需瞭解物件所對應的類。

另:Java是單繼承,介面可以使其實現多繼承的功能。

大體回答如上,類似文章請移駕:

深入理解Java的介面和抽象類


說說http,https協議

HTTP:

是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。

HTTPS:

是以安全為標的的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

區別:

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

大體回答如上,類似文章請移駕:

寫給後端程式員的 HTTP 快取原理介紹

說說tcp/ip協議族

TCP/IP協議族是一個四層協議系統,自底而上分別是資料鏈路層、網路層、傳輸層和應用層。每一層完成不同的功能,且透過若干協議來實現,上層協議使用下層協議提供的服務。

1、資料鏈路層負責幀資料的傳遞。

2、網路層責資料怎樣傳遞過去。

3、傳輸層負責傳輸資料的控制(準確性、安全性)

4、應用層負責資料的展示和獲取。

大體回答如上,類似文章請移駕:

TCP/IP基礎知識

tcp五層網路協議

物理層:

為資料端裝置提供傳送資料的通路,資料通路可以是一個物理媒體,也可以是多個物理媒體連線而成。

資料鏈路層:

為網路層提供資料傳送服務。

網路層:

路由選擇和中繼、啟用,終止網路連線、在一條資料鏈路上復用多條網路連線,多採取分時復用技術 、差錯檢測與恢復、排序,流量控制、服務選擇、網路管理 。

傳輸層:

傳輸層是兩臺計算機經過網路進行資料通訊時,第一個端到端的層次,具有緩衝作用。

應用層:

應用層嚮應用程式提供服務

大體回答如上,類似文章請移駕:

網際網路協議入門(一)

網際網路協議入門(二)

TCP與UDP的區別

1、基於連線與無連線

2、TCP要求系統資源較多,UDP較少; 

3、UDP程式結構較簡單 

4、流樣式(TCP)與資料報樣式(UDP); 

5、TCP保證資料正確性,UDP可能丟包 

6、TCP保證資料順序,UDP不保證 

大體回答如上,類似文章請移駕:

網路協議-TCP和UDP最完整的區別介紹


說說tcp三次握手,四次揮手

圖片來源部落格園,地址圖右下角

大體回答如上,類似文章請移駕:

TCP協議三次握手過程分析

cookie和session的區別,分散式環境怎麼儲存使用者狀態

1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE併進行COOKIE欺騙,考慮到安全應當使用session。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能,考慮到減輕伺服器效能方面,應當使用COOKIE。

4、單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie。

分散式環境下的session(舉例兩種):


伺服器session複製

原理:任何一個伺服器上的session發生改變(增刪改),該節點會把這個 session的所有內容序列化,然後廣播給所有其它節點,不管其他伺服器需不需要session,以此來保證Session同步。

優點:可容錯,各個伺服器間session能夠實時響應。

缺點:會對網路負荷造成一定壓力,如果session量大的話可能會造成網路堵塞,拖慢伺服器效能。

session共享機制

使用分散式快取方案比如memcached、redis,但是要求Memcached或Redis必須是叢集。

大體回答如上,類似文章請移駕:

Nginx反向代理,負載均衡,redis session共享,keepalived高可用

GIT和SVN的區別

1、GIT是分散式的,SVN不是。

2、GIT把內容按元資料方式儲存,而SVN是按檔案。

3、GIT分支和SVN的分支不同。

4、GIT沒有一個全域性的版本號,而SVN有。

5、GIT的內容完整性要優於SVN。

(一般問會不會用,知道這些區別貌似也沒卵用)

請寫一段棧上限溢位、堆上限溢位的程式碼

遞迴呼叫可以導致棧上限溢位
不斷建立物件可以導致堆上限溢位

程式碼如下:

public class Test {  
 
   public void testHeap(){  
       for(;;){  
             ArrayList list = new ArrayList (2000);  
         }  
   }  
   int num=1;  
   public void testStack(){  
       num++;  
       this.testStack();  
    }  
     
   public static void main(String[] args){  
       Test  t  = new Test ();  
       t.testHeap();  
       t.testStack();     
   }  
}

大體回答如上,類似文章請移駕:

Java中堆記憶體和棧記憶體詳解

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖