網(wǎng)絡相關
1.描述一下網(wǎng)絡的三次握手四次揮手,為什么要這樣做?
-
三次握手:
1、客戶端調(diào)用
connect()發(fā)起請求,請求報文SYN = 1,seq = x發(fā)送給服務器, 客戶端此時為SYN_SENT狀態(tài),等待服務器確認;2、服務器收到
SYN = 1,知道客戶端要請求連接,ack = x + 1,ACK = 1,SYN = 1,seq = y發(fā)送給客戶端,服務器是SYN_RCVD狀態(tài);3、客戶端收到
ack = x + 1,然后把ack = y + 1,ACK = 1,發(fā)送給服務器, 最后服務器確認ack = y+ 1,然后建立成功,兩方進入ESTABLISH狀態(tài).

-
四次揮手:
1、客戶端發(fā)送一個結束
FIN = 1, 用來主動關閉和服務器的數(shù)據(jù)傳輸,停止發(fā)送數(shù)據(jù),報文首部:FIN = 1,seq = u,隨后客戶端進入終止等待狀態(tài)1,FIN_WAIT_1;2、服務端收到這個
FIN,發(fā)出確認報文ACK = 1,確認收到的序號是收到的序號+1,即ack = u + 1,且?guī)献约旱男蛄刑?seq = v,和SYN一樣,一個FIN將占用一個序號;如果服務器要發(fā)送數(shù)據(jù),客戶端依然要接收,該狀態(tài)會維持一段時間,服務端會進入關閉等待狀態(tài),CLOSE_WAIT,客戶端收到服務器的確認請求后,進入終止等待2狀態(tài)FIN_WAIT_2,等待服務器發(fā)送鏈接釋放報文,3、服務器向客戶端發(fā)送鏈接釋放報文,
FIN = 1,ack = u + 1,此時服務端還處于半關閉狀態(tài),服務器可能還會發(fā)送一些數(shù)據(jù),此時序列號為seq = w,如此,服務器進入最后確認狀態(tài),LAST_ACK,等待客戶端的確認.4.客戶端收到服務器的鏈接釋放報文后,回發(fā)確認,
ACK = 1,ack = w + 1,序列號是seq = u +1,此時客戶端進入時間等待狀態(tài)TIME_WAIT,此時TCP連接還沒有釋放,必須經(jīng)過最長報文段壽命的時間后,才進入CLOSED狀態(tài),MSL:最長報文段壽命,一般為2分鐘,TCP連接釋放時,主動方必須經(jīng)過2MSL后才進入CLOSED狀態(tài),因此主動方關閉比較晚.

2.網(wǎng)絡的OSI七層模型,并對應說說除了物理層外的各層功能,并說說各層中有什么協(xié)議? 還有 TCP/IP四層模型, 各層的協(xié)議?
OSI七層模型:
應用層運行訪問OSI環(huán)境的手段,傳輸單位為APDU,主要包括的協(xié)議為FTP、HTTP、DNS、SMTP表示層對數(shù)據(jù)進行翻譯、加密和壓縮、傳輸單位為PPDU, 主要包括的協(xié)議為JPEG、ASII會話層建立、管理和終止會話,傳輸單位為SPDU,主要包括的協(xié)議為RPC、NFS傳輸層提供端到端的可靠報文傳遞和錯誤恢復,傳輸單位為報文,主要包括的協(xié)議為TCP、UDP網(wǎng)絡層負責將數(shù)據(jù)包從源到宿的傳遞和網(wǎng)際互聯(lián),傳輸單位是包,主要協(xié)議是IP、ARP、ICMP數(shù)據(jù)鏈路層將比特組裝成幀和點到點的傳遞,傳輸單位是幀,主要協(xié)議是MAC、LAN、PPP-
物理層通過媒介傳輸比特,單位是bit,主要協(xié)議是IEEE802.3、CLOCK、RJ45TCP/IP四層模型:應用層是用來給用戶提供服務的,包含了各種應用服務協(xié)議:FTP,HTTP和DNS;封裝成http數(shù)據(jù);傳輸層是用來提供兩臺計算機之間的數(shù)據(jù)傳輸;包含TCP和UDP;給http數(shù)據(jù)打上tcp的首部;網(wǎng)絡層是用來處理網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包;與對方計算機之間進行多臺計算機或網(wǎng)絡設備進行傳輸時,網(wǎng)絡層就是在眾多的選項中選擇一條傳輸路線.再打上一層IP首部,數(shù)據(jù)鏈路層用來處理連接網(wǎng)絡的硬件部分,如光纖、網(wǎng)卡、驅(qū)動、操作系統(tǒng),再打上以太網(wǎng)首部
3.
HTTPS和HTTP之間的區(qū)別,為什么要使用HTTPS,HTTPS的實現(xiàn)原理(這三個是層層遞進的問的,所以不要只知道HTTPS比較安全,使用了什么什么非對稱加密和對稱加密算法...最好是整個流程都去了解一下,如何獲取公鑰,數(shù)字證書有什么用,雖然工作中不是很重要,但是面試大家都是背八股文長大的,那不是更得知道的多才能顯得你與眾不同嗎)區(qū)別:
底層:
HTTP底層是通過建立socket通道實現(xiàn)數(shù)據(jù)傳輸?shù)?是基于TCP的安全可靠的協(xié)議;HTTPS是在HTTP的基礎上加上安全套接字層SSL協(xié)議,構建的可進行加密傳輸、身份認證的協(xié)議;數(shù)據(jù)傳輸:
HTTP是以明文發(fā)送內(nèi)容,不適合傳輸敏感信息;HTTPS是依靠證書驗證服務器的身份,實現(xiàn)通信加密;連接方式: 兩者使用完全不同的鏈接方式,
HTTP端口是80;HTTPS端口使用443.響應速度:
HTTP要比HTTPS響應速度快,首先都要先經(jīng)過TCP三次握手,CS之間交換三個包,而HTTPS還要加上SSL握手需要的九個包,一共是12個包.
HTTPS實現(xiàn)原理:客戶端發(fā)出請求
HTTPS與服務端建立SSL鏈接,然后服務端返回一個公鑰證書,客戶端產(chǎn)生一個隨機對稱密鑰;
使用公鑰加密對稱密鑰;
發(fā)送加密后的對稱密鑰,服務器給個回應;
使用對稱密鑰進行加密通信.
4.
ARP協(xié)議如何工作(這個也比較簡單,但是后面會擴展問一些TCP,UDP的問題),會問某些場景是否使用TCP或者UDP,后面還轉(zhuǎn)進了http1.0和1.1的長連接,感覺這個也是一個考點,記得不是很深刻了5.進程和線程的區(qū)別,為什么要有線程,線程擁有什么獨立的資源, 多線程如何安全的訪問進程中的資源,講一下各種鎖(這個也是八股文,操作系統(tǒng)必問,懂得都懂)
進程就是系統(tǒng)中正在運行的一個應用程序,可以理解為一個app;
線程是程序執(zhí)行的最小單元,是進城中的一個實體,進程就是一系列的線程執(zhí)行單元組成的
一個進程中可以有多個線程,但至少得有一個線程
多核CPU中,多個線程一起執(zhí)行可以提高程序的執(zhí)行效率
自旋鎖:
互斥鎖:
6.操作系統(tǒng)中的虛擬內(nèi)存是什么,講一講
頁面置換算法,是否有了解過三級緩存機制(也是遞進的問的!三級緩存機制是APP開發(fā)常用的也會考查)7.最后有一道算法題,leetcode 59,螺旋矩陣
定義上下左右四個邊界
內(nèi)縮遍歷
8.IP地址和MAC地址的區(qū)別?
MAC地址是物理層和數(shù)據(jù)鏈路層使用的地址,用來定義網(wǎng)絡設備的位置,IP地址是網(wǎng)絡層和以上各層使用的地址;IP地址是放在IP數(shù)據(jù)報的首部,而MAC地址是放在MAC幀的首部.
9.請介紹一個操作系統(tǒng)中的中斷
中斷是指CPU對系統(tǒng)發(fā)生的某個事件做出的一種反應,CPU
暫停正在執(zhí)行的程序,保存現(xiàn)場后自動去執(zhí)行相應的處理程序,處理完該事件后再返回中斷處,繼續(xù)執(zhí)行原來的程序.中斷一般分為三類:一種是由CPU外部引起的,如I/O中斷,時鐘中斷,一種是來自CPU內(nèi)部事件或程序執(zhí)行中引起的中斷,例如(程序非法操作,地址越界,浮點溢出), 最后一種是在程序中使用了系統(tǒng)調(diào)用引起的.
中斷處理一般分為中斷響應和中斷處理兩個步驟,中斷響應由硬件實施,中斷處理主要由軟件實施.