Linux面试相关
1.TCP/IP 建立連接的過程?(3-way shake)
? ? Client與server建立TCP連接時:首先Client向server發SYN(請求),然后server回復(應答請求),最后Client回復,這樣TCP就建立一次連接(三次握手)的過程就建立了
2.使用udp和tcp進程網絡傳輸,為什么tcp能保證包是發送順序,而 udp無法保證?
? ?
? ? 1.主機每次發送數據時,TCP就給每個數據包分配一個序列號并且在一個特定的時間內等待接收主機對分配的這個序列號進行確認,如果發送主機在一個特定時間內沒有收到接收主機的確認,則發送主機會重傳此數據包。接收主機利用序列號對接收的數據進行確認,以便檢測對方發送的數據是否有丟失或者亂序等,接收主機一旦收到已經順序化的數據,它就將這些數據按正確的順序重組成數據流并傳遞到高層進行處理。2.UDP不提供可靠的數據傳輸!一個端口發往同一個目的端口的幾個數據包的順序可能會出現混亂
3.Linux?epoll的LT(level triggered)與ET(edge-triggered)工作方式的區別?
? ?? ? LT:水平觸發,效率會低于ET觸發,尤其在大并發,大流量的情況下。但是LT對代碼編寫要求比較低,不容易出現問題。LT模式服務編寫上的表現是:只要有數據沒有被獲取,內核就不斷通知你,因此不用擔心事件丟失的情況。
ET:邊緣觸發,效率非常高,在并發,大流量的情況下,會比LT少很多epoll的系統調用,因此效率高。但是對編程要求高,需要細致的處理每個請求,否則容易發生丟失事件的情況。
從本質上講:與LT相比,ET模型是通過減少系統調用來達到提高并行效率的。
4.網絡編程中設計并發服務器,使用多進程與多線程 ,請問有什么區別?
? ? 兩者都可以提高程序的并發度,提高程序運行效率和響應時間。線程和進程在使用上各有優缺點:線程執行開銷小,但不利于資源管理和保護;而進程正相反。同時,線程適合于在SMP機器上運行,而進程則可以跨機器遷移
5.請列舉進程間通迅都有哪些方式?并說明工作方式,優缺點等。
? ??? ? 常見三種方式:管道,消息緩沖,共享內存
1.無名管道簡單方便。但局限于單向通信的工作方式。并且只能在創建它的進程及其子孫進程之間實現管道的共享;有名管道雖然可以提供給任意關系的進程使用。但是由于其長期存在于系統之中,使用不當容易出錯。
2.消息緩沖,使用方便,但是信息的復制需要額外消耗CPU的時間。不適宜于信息量大或操作頻繁的場合。
3.共享內存,針對消息緩沖的缺點改而利用內存緩沖區直接交換信息,無須復制,快捷、信息量大是其優點但是不方便網絡通信
6.?C++中指針和引用有什么區別
? ??? ? 1.引用訪問一個變量是直接訪問,而指針是間接訪問。
2.引用是一個變量的別名,本身不單獨分配自己的內存空間,而指針有自己的內存空間。
3.引用在開始的時候就綁定到了一個內存空間(開始必須賦初值),所以他只能是這個內存空間的名字,而不能改成其他的,當然可以改變這個內存空間的值。
總結
- 上一篇: Hbase Solr 二级索引,更新数据
- 下一篇: 初窥Linux 之 我最常用的20条命令