交流经验和面试题目
有一段時間自己練。理直氣壯地去面試,這可以從容應對,但事實并非如此,在做項目的自己。或者是缺乏理論知識。為了理解很多問題都是一知半解。沒有辦法讓人舒適,次面試中一些題目,分享給大家。
同步與異步的差別
同步:發(fā)送一個請求,等待返回,然后再發(fā)送下一個請求
異步:發(fā)送一個請求,不等待返回,隨時能夠再發(fā)送下一個請求
同步能夠避免出現(xiàn)死鎖,讀臟數(shù)據(jù)的發(fā)生。一般共享某一資源的時候用。假設(shè)每一個人都有改動權(quán)限,同一時候改動一個文件,有可能使一個人讀取還有一個人已經(jīng)刪除的內(nèi)容,就會出錯,同步就會按順序來改動。
異步則是能夠提高效率了。如今cpu都是雙核,四核。異步處理的話能夠同一時候做多項工作。當然必須保證是能夠并發(fā)處理的。
這些都是對的。
同步和異步最大的差別就在于。一個須要等待,一個不須要等待。
簡述iso的7層設(shè)計
解析:
在OSI參考模型中。從下至上,每一層完畢不同的、目標明白的功能。
1、物理層(Physical Layer)
物理層規(guī)定了激活、維持、關(guān)閉通信端點之間的機械特性、電氣特性、功能特性以及過程特性。該層為上層協(xié)議提供了一個數(shù)據(jù)傳輸?shù)奈锢砻襟w。
在這一層。數(shù)據(jù)的單位稱為比特(bit)。
屬于物理層定義的典型規(guī)范代表包含:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
2、數(shù)據(jù)鏈路層(Data Link Layer)
數(shù)據(jù)鏈路層在不可靠的物理介質(zhì)上提供可靠的傳輸。
該層的作用包含:物理地址尋址、數(shù)據(jù)的成幀、流量控制、數(shù)據(jù)的檢錯、重發(fā)等。
在這一層,數(shù)據(jù)的單位稱為幀(frame)。
數(shù)據(jù)鏈路層協(xié)議的代表包含:SDLC、HDLC、PPP、STP、幀中繼等。
3、網(wǎng)絡層(Network Layer)
網(wǎng)絡層負責對子網(wǎng)間的數(shù)據(jù)包進行路由選擇。此外,網(wǎng)絡層還能夠?qū)崿F(xiàn)擁塞控制、網(wǎng)際互連等功能。
在這一層,數(shù)據(jù)的單位稱為數(shù)據(jù)包(packet)。
網(wǎng)絡層協(xié)議的代表包含:IP、IPX、RIP、OSPF等。
4、傳輸層(Transport Layer)
傳輸層是第一個端到端。即主機到主機的層次。
傳輸層負責將上層數(shù)據(jù)分段并提供端到端的、可靠的或不可靠的傳輸。此外,傳輸層還要處理端到端的差錯控制和流量控制問題。
在這一層。數(shù)據(jù)的單位稱為數(shù)據(jù)段(segment)。
傳輸層協(xié)議的代表包含:TCP、UDP、SPX等。
5、會話層(Session Layer)
會話層管理主機之間的會話進程。即負責建立、管理、終止進程之間的會話。會話層還利用在數(shù)據(jù)中插入校驗點來實現(xiàn)數(shù)據(jù)的同步。
會話層協(xié)議的代表包含:NetBIOS、ZIP(AppleTalk區(qū)域信息協(xié)議)等。
6、表示層(Presentation Layer)
表示層對上層數(shù)據(jù)或信息進行變換以保證一個主機應用層信息能夠被還有一個主機的應用程序理解。
表示層的數(shù)據(jù)轉(zhuǎn)換包含數(shù)據(jù)的加密、壓縮、格式轉(zhuǎn)換等。
表示層協(xié)議的代表包含:ASCII、ASN.1、JPEG、MPEG等。
7、應用層(Application Layer)
應用層為操作系統(tǒng)或網(wǎng)絡應用程序提供訪問網(wǎng)絡服務的接口。
應用層協(xié)議的代表包含:Telnet、FTP、HTTP、SNMP等。
在OSI參考模型中,當一臺主機須要傳送用戶的數(shù)據(jù)(DATA)時。數(shù)據(jù)首先通過應用層的接口進入應用層。
在應用層,用戶的數(shù)據(jù)被加上應用層的報頭(Application Header。AH),形成應用層協(xié)議數(shù)據(jù)單元(Protocol Data Unit。PDU)。然后被遞交到下一層-表示層。
表示層并不"關(guān)心"上層-應用層的數(shù)據(jù)格式而是把整個應用層遞交的數(shù)據(jù)包看成是一個總體進行封裝。即加上表示層的報頭(Presentation Header,PH)。
然后。遞交到下層-會話層。
相同,會話層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層也都要分別給上層遞交下來的數(shù)據(jù)加上自己的報頭。它們是:會話層報頭(Session Header,SH)、傳輸層報頭(Transport Header。TH)、網(wǎng)絡層報頭(Network Header,NH)和數(shù)據(jù)鏈路層報頭(Data link Header,DH)。當中,數(shù)據(jù)鏈路層還要給網(wǎng)絡層遞交的數(shù)據(jù)加上數(shù)據(jù)鏈路層報尾(Data link Termination,DT)形成終于的一幀數(shù)據(jù)。
當一幀數(shù)據(jù)通過物理層傳送到目標主機的物理層時。該主機的物理層把它遞交到上層-數(shù)據(jù)鏈路層。
數(shù)據(jù)鏈路層負責去掉數(shù)據(jù)幀的幀頭部DH和尾部DT(同一時候還進行數(shù)據(jù)校驗)。
假設(shè)數(shù)據(jù)沒有出錯。則遞交到上層-網(wǎng)絡層。
相同,網(wǎng)絡層、傳輸層、會話層、表示層、應用層也要做類似的工作。終于。原始數(shù)據(jù)被遞交到目標主機的詳細應用程序中。
簡述TCP與UDP的差別???????????????
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 無控制 |
Get與post差別
Form中的get和post方法,在傳輸數(shù)據(jù)過程中分別相應了HTTP協(xié)議中的GET和POST方法。
二者主要差別例如以下:
1、Get是用來從server上獲得數(shù)據(jù),而Post是用來向server上傳遞數(shù)據(jù)。
2、Get將表單中數(shù)據(jù)的依照variable=value的形式,加入到action所指向的URL后面。而且兩者使用“?”連接,而各個變量之間使用“&”連接。Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中。依照變量和值相相應的方式。傳遞到action所指向URL。
3、Get是不安全的,由于在傳輸過程。數(shù)據(jù)被放在請求的URL中,而現(xiàn)在現(xiàn)有的非常多server、代理server或者用戶代理都會將請求URL記錄到日志文件里,然后放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外。用戶也能夠在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會一同顯示在用戶面前。Post的全部操作對用戶來說都是不可見的。
?4、Get傳輸?shù)臄?shù)據(jù)量小,這主要是由于受URL長度限制。而Post能夠傳輸大量的數(shù)據(jù),所以在上傳文件僅僅能使用Post(當然另一個原因,將在后面的提到)。
?5、Get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而Post支持整個ISO10646字符集。
?6、Get是Form的默認方法。
GET 和 POST 的數(shù)據(jù)格式都是一樣的:
GET 支持的最大字節(jié)限制是 2048 Bytes
POST 支持的最大字節(jié)限制是 2GB
Tcp中的三次握手
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務,採用三次握手建立一個連接。
第一次握手:建立連接時,client發(fā)送syn包(syn=j)到server,并進入SYN_SEND狀態(tài),等待server確認;
第二次握手:server收到syn包,必須確認客戶的SYN(ack=j+1)。同一時候自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時server 進入SYN_RECV狀態(tài);
第三次握手:client收到server的SYN+ACK包,向server發(fā)送確認包ACK(ack=k+1)。此包發(fā)送完畢,client和server進入 ESTABLISHED狀態(tài),完畢三次握手。
通過這種三次握手,client與服務端建立起可靠的雙工的連接,開始傳送數(shù)據(jù)。
三次握手的最主要目的是保證連接是雙工的。可靠很多其它的是通過重傳機制來保證的。
同理對于TCP為什么須要進行三次握手我們能夠一樣的理解:
為了保證服務端能收接受到client的信息并能做出正確的應答而進行前兩次(第一次和第二次)握手,為了保證client可以接收到服務端的信息并能做出正確的應答而進行后兩次(第二次和第三次)握手。
Sleep與wait差別
Sleep是thread類的方法。能夠在不論什么地方使用,不會放棄對對象的使用權(quán),在同步塊或同步方法中使用sleep,其它線程將無法訪問,到了指定時間就會自己主動執(zhí)行。
Wait是object類的方法,僅僅能在同步塊中使用,放棄了對象的使用權(quán)。其它線程能夠使用。須要還有一個線程調(diào)用notify進行喚醒。才干轉(zhuǎn)換到執(zhí)行狀態(tài)。
注:一個接口能夠繼承多個接口
List set繼承collection map沒有繼承collection
有興趣的朋友能夠關(guān)注微信:Job_Coder
?
版權(quán)聲明:本文博客原創(chuàng)文章,博客,未經(jīng)同意,不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://www.cnblogs.com/mengfanrong/p/4673119.html
總結(jié)
- 上一篇: Android数据保存之SharedPr
- 下一篇: Java模拟双色球彩票