計算機網路方面
1、體系結構以及各層協議
《a》OSI分層(七層):物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層
《b》TCP/IP分層(四層):網路介面層,網際層,傳輸層,應用層
《c》五層協議:物理層,資料鏈路層,網路層,運輸層,應用層
《d》每一層的協議如下:
物理層:IEEE802.3協議
資料鏈路層:HDLC(高階資料鏈路控制),VLAN(虛擬區域網),MAC(實體地址)
網路層:IP,ICMP(因特網控制報文協議),ARP(地址解析協議)
傳輸層:TCP,UDP
會話層:SQL,RPC(遠端協議控制)
表示層:TIFF,GIF,HTML
應用層:FTP,DNS(域名解析),SMTP(郵件傳輸協議),Http,www 等。
3、其他協議
ICMP : 因特網控制報文協議
HTTP:超文字傳輸協議
DHCP:動態主機配置協議
4、TCP和UDP的區別?
答:(1)TCP:連線、可靠
傳輸單位:TCP報文段
注重安全性
對應協議:FTP>檔案傳輸協議,Telnet:遠端登入,SMTP:郵件傳送協議【收】,POP3:【發】,HTTP
(2)UDP:非連線、不可靠
傳輸單位:使用者資料報
資料傳輸快,不需要等待
DNS>域名解析
SNMP>簡單網路管理協議
TFTP>簡單檔案傳輸協議
5、淺談HTTP中GET和POST的區別?
答:(1)HTTP中定義了與伺服器互動的不同方法,最基本的包括4種,GET、POST、PUT、DELETE
(2)GET是從伺服器上獲取資料;POST是向伺服器傳送資料
(3)GET是把引數資料佇列加到表單的Action 屬性所指URL中,且資料在URL可以看到;POST是通過HTTPPOST機制,使用者是看不到資料的。
(4)GET傳輸的資料量較小,不能大於2KB
POST傳輸的資料量較大,一般預設為不受限制
(5)GET安全性非常低,POST安全性較高。
6、B樹和B+ 樹的區別?
答:(1)B樹:每個節點都儲存key和data值,所有節點組成這棵樹,並且葉子節點指標為null。
(2)B+樹:只有葉子節點儲存資料data,葉子節點包含了這棵樹的所有鍵值,葉子節點不儲存指標。
在Mysql中,常用的儲存引擎是MyISAM和InnoDB
(1)MyISAM:data存的是資料地址,索引是索引,資料是資料。
(2)InnoDB:data存的是資料本身,索引也是資料
7、多執行緒的實現方式
答:1、繼承Thread類,重寫run方法並通過start方法啟動執行緒。
2、實現Runnable介面,重寫run方法,並把Runnable例項傳給Thread物件,Thread的start方法呼叫run方法,再通過呼叫Runnable例項的run方法啟動執行緒
3、實現Callable介面,並重寫call方法,並把物件callable例項傳給FutureTask物件,再把FutureTask物件傳給Thread物件,它與前兩種最大的不同是callable能返回一個異常處理的結果Future物件並能丟擲異常,其他兩種不能。
8、多執行緒的死鎖、活鎖、飢餓和無鎖。
答:死鎖:多個執行緒相互佔用對方的資源的鎖,而又互相等待對方釋放鎖,若無外力干預,形成死鎖。
活鎖:死鎖是大家互相拿不到都佔用著對方的資源,而活鎖是拿到資源卻又互相釋放不執行。
飢餓:由於執行緒中使用優先順序,高的優先順序優先執行,與死鎖不同的是飢餓在以後一段時間後還能得到執行。
無鎖:即沒有對資源進行鎖定,即所有的執行緒都能訪問並修改同一資源,但同時只有一個執行緒可以修改成功。
9、多執行緒中的併發和並行:
併發:即一段時間內多個任務在執行,但不一定是同時在執行,他們可能是交替在執行,也有可能是序列執行。
並行:指多個任務在同時執行。
* 注:單核CPU不會並行操作,一個CPU只能執行一條指令,並行操作只存在於多核CPU中
10、同步和非同步:
同步:指傳送一個請求,需要等待返回,然後才能傳送下一次請求。
非同步:指傳送一個請求,不需要等待返回,隨時可以傳送下一個請求。
11、阻塞與非阻塞:
答:阻塞:如果一個執行緒佔用了一個公共資源而沒有釋放對它的鎖,另外的別的執行緒想要繼續執行就只能等待釋放鎖,此時就造成阻塞了。
非阻塞:即就是沒有阻塞,執行緒可以自由執行,沒有鎖定公共資源,不相互阻塞執行。
12、避免死鎖?
答:(1)按順序加鎖
(2)獲取鎖的時限
(3)死鎖檢測
13、session和Cookie的區別和聯絡
答:《1》Cookie資料存放在客戶的瀏覽器上,Session資料存放在伺服器上
《2》Cookie不是很安全,別人可以分析存放在本地的cookie 並進行Cookie欺騙
《3》Session會在一定時間內儲存在伺服器上,當訪問量增多的時候,會比較佔用伺服器的效能。
考慮到減輕伺服器效能方面,應當使用cookie。
《4》單個cookie儲存的資料不能超過4K
14、Http請求的基本過程:socket連線、請求、應答、關閉連線。
15、事務的四大特性以及事務的隔離級別
原子性:指事務包含的所有操作要麼全部成功,要麼全部回滾
隔離性:當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫Wie每一個使用者開啟的事務,不能被其他事務的操作所幹擾,多個併發事務之間要相互隔離。
一致性:指一個事務執行之前和執行之後都必須處於一致性狀態
永續性 :指一個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作
隔離級別:髒讀、不可重複讀、虛度(幻讀)
(1)讀未提交:最低級別 ,任何情況都無法保證
(2)讀已提交:避免髒讀
(3)可重複讀:避免髒讀、不可重複讀
(4)序列化:可避免髒讀、不可重複讀、幻讀的發生
Java中的網路支援
針對網路通訊的不同層次,Java提供的網路功能有四大類;
1、InetAddress ; 用於表示網路上的硬體資源
2、URL:統一資源定位符,通過URL可以直接讀取或寫入網路上的資料
3、Sockets:使用TCP協議時間網路通訊的Socket相關的類。
4、Datagram :使用UDP協議,將資料儲存在資料報中,通過網路進行通訊。
Socket通訊實現步驟:
1、建立ServerSocket和Socket
2、開啟連線到Socket的輸入/輸出流
3、按照協議對Socket進行讀寫操作
4、關閉輸入輸出流、關閉Socket
基於TCP的通訊服務
伺服器端:
1、建立ServerSocket物件,繫結監聽埠
2、通過accept方法監聽客戶端請求
3、連線建立後,通過輸入流讀取客戶端傳送的請求資訊
4、通過輸出流向客戶端傳送響應資訊
5、關閉相關資源
客戶端:
1、建立Socket物件,指明需要連線的伺服器的地址和埠號
2、連線建立後,通過輸出流向伺服器端傳送請求
3、通過輸入流獲取伺服器響應的資訊
4、關閉相關資源
多執行緒伺服器
* 應用多執行緒來實現伺服器與多客戶端之間的通訊
基本步驟:
1、伺服器端建立ServerSocket,迴圈呼叫accept等待客戶端連線
2、客戶端建立一個Socket並請求和伺服器端連線
3、伺服器斷案連線客戶端請求,建立socket與該客戶建立專線連線
4、建立連線的兩個socket在一個單獨的執行緒上對話
5、伺服器端繼續等待新的連結
基於UDP的通訊的類
DatagramPacket:表示資料報包
DatagramSocket:進行端到端通訊的類
伺服器端實現步驟:
1、建立DatagramSocket,指定埠號
2、建立DatagramPacket
3、接收客戶端傳送的資料資訊
4、讀取資料
客戶端
1、定義傳送的資訊
2、建立DatagramPacket,包含將要傳送的資訊
3、建立DatagramSocket
4、傳送資料