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