標籤:連接埠 http服務 集中 無法 發送 and 含義 對象 二叉樹的深度
1、談談堆和棧的區別?
棧(Stack)由編譯器分配釋放,存放函數的參數值、局部變數值等,操作方式同資料結構中的棧(先進後出)。
堆(Heap)一般由程式員分配,若程式員不釋放,程式結束後由os回收,它和資料結構中的堆是兩回事,分配方式確和鏈表類似。
資料結構中的堆採用的是數組對象而不是鏈表,可視為完全二叉樹,特點是父結點大於(或小於)兩個子結點的值(稱為大頂堆或小頂堆)。
滿二叉樹:除最後一層無任何子結點外,每一層的所有結點都有兩個子結點,簡言之就是二叉樹的每一層都滿了;
性質:<1> 深度h(所有結點中最深的結點所在的層數[根節點是第一層])= 最大層數K
<2> 葉子結點數(第K的的結點數)為2h(k)-1
<3> 總結點數是 2k-1,且總結點數一定是奇數
完全二叉樹:若二叉樹的深度為h,出第h層外,其他【1-(h-1)】層的結點數都達到了最大數,且第h層所有結點都連續集中在左邊。
結點的度:該結點所含的子樹的個數。
二叉樹的度:二叉樹中所含子樹最多的那個結點。
2、談談兩台機器間最多能建立多少個持久連結及原因?
一個特定的串連我們會用同一個連接埠號碼來標識,所以最大串連數不會超過機器能指定的連接埠數目。
持久串連,指不必為每個request object(例如很小的gif廣告映像)的傳送建立一個新的TCP(socket)串連,減少TCP建立時間和相應的系統損耗。
在使用持久串連之前,HTTP規定擷取每個URL資源都需要使用單獨的一個TCP串連,這增加了HTTP服務端的負載,造成互連網擁塞。
使用持續串連的優點:
<1>減少TCP串連數量;
<2>在一個串連上實現了HTTP請求和應答的流水,即允許用戶端發送多個請求,而不用在接收到前一個請求的應答後才發送下一條請求,極大減少時間消耗;
<3>後續請求延遲減少,無需在TCP握手是耗時,可以更加流暢的實現HTTP協議,由於持續串連的存在,報告錯誤後無需關閉串連,因此用戶端可使用最新的協議特性發出請求,如果接收到表示錯誤的應答,則換用更舊的語義。
3、談談對 http、https、webSocket 協議的理解?
http:超文字傳輸通訊協定 (HTTP),是網路上使用最廣泛的一種網路通訊協定,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文本到本地瀏覽器的傳送協議。所有WWW檔案都必須遵守這個標準,這個協議設計的最初目的是為了提供一種發布和接收HTML頁面的方法。
優點:<1>簡單快捷:用戶端向伺服器傳送資料只需要傳送要求方法和路徑,常見的要求方法有Post、Get。每一種方法規定了伺服器和客戶聯絡的類型不同。由於協議簡單,使伺服器程式規模較小,通訊快。
<2>靈活:HTTP協議允許傳輸任意的類型的資料對象。正在傳輸的類型由Content-Type加以標記。
<3>無串連:不需連線的含義是限制每次串連只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即中斷連線。採用這種方式可以節省傳輸時間。
<4>無狀態:HTTP協議是無狀態協議。無狀態是指協議對於交易處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次串連傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
<5>支援B/S及C/S模式。
缺點:<1>通訊使用明文(不加密),可能被竊聽。
<2>不驗證通訊方的身份,有可能遭遇偽裝。
<3>無法驗證報文的完整度,有可能被篡改。
HTTPS:以安全為目標的HTTP通道,簡言之就是HTTP安全版。它解決了HTTP易竊聽、易偽裝、易篡改的確定。公式表達:HTTPS = HTTP + 加密 + 認證 + 完整性保護。
WEBSOCKET協議:是HTML5提出的一個協議規範,約定了一種通訊的規範,通過握手機制,用戶端和伺服器之間建立一個類似TCP的串連,方便C-S之間的通訊。在這之前Web互動一般是基於HTTP協議的短串連或長串連。WEBSOCKET協議本質上是一個基於TCP的協議,是先通過HTTP/HTTPS協議發起一條特殊的http請求進行握手後建立一個用於交換資料的TCP串連,此後服務端與用戶端通過此TCP串連進行即時通訊。
Android 面試(一)