学习面试题Day08
1、TCP/IP協(xié)議的理解。
???? TCP/IP定義了電子設(shè)備(如計(jì)算機(jī))連入因特網(wǎng)的標(biāo)準(zhǔn),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。它既是互聯(lián)網(wǎng)中的基本通信語(yǔ)言或協(xié)議,也是局域網(wǎng)的通信協(xié)議。
???? TCP/IP是一組包括TCP協(xié)議、IP協(xié)議、UDP協(xié)議、ICMP協(xié)議和其他一些協(xié)議的協(xié)議組。需要進(jìn)行網(wǎng)絡(luò)通信的計(jì)算需要提供符合這些協(xié)議標(biāo)準(zhǔn)的程序以后,才能進(jìn)行網(wǎng)絡(luò)通信。
2、TCP協(xié)議的通信特點(diǎn)是什么?
???? TCP協(xié)議主要擁有如下的通信特點(diǎn):
???? (1)面向連接的傳輸;
???? (2)端到端的通信;
???? (3)可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;
??? ?(4)采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列。
3、Java的TCP編程模型是什么?
???? 編寫Java的TCP網(wǎng)絡(luò)應(yīng)用程序需要分為服務(wù)器端和客戶端兩個(gè)部分,大致有以下步驟。
???? 服務(wù)器端:
???? (1)創(chuàng)建一個(gè)服務(wù)器端的Socket,指定一個(gè)端口號(hào);
???? (2)開始監(jiān)聽來(lái)自客戶端的請(qǐng)求要求;
???? (3)獲得輸入流或輸出流;
???? (4)調(diào)用輸入流/輸出流的read()或write()方法,進(jìn)行數(shù)據(jù)的傳輸;
???? (5)釋放資源,關(guān)閉輸出流/輸入流、Socket和ServerSocket對(duì)象;
???? 客戶端:
???? (1)創(chuàng)建Socket對(duì)象,建立與服務(wù)器端的連接;
???? (2)獲得輸出流或輸入流;
???? (3)調(diào)用輸入流/輸出流的read()或write()方法,進(jìn)行數(shù)據(jù)的傳輸;
???? (4)釋放資源,關(guān)閉輸出流/輸入流、Socket對(duì)象。
4、UDP協(xié)議的通信特點(diǎn)是什么?
???? UDP協(xié)議主要擁有如下的通信特點(diǎn):
???? (1)UDP是一個(gè)無(wú)連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上;
???? (2)不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等;
???? (3)字節(jié)開銷很小;
???? (4)吞吐量主要受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機(jī)性能等因素的限制。
5、Java的UDP編程模型是什么?
??? ?編寫Java的UDP網(wǎng)絡(luò)應(yīng)用程序需要分為接收端和發(fā)送端兩個(gè)部分,它們大致的步驟相同,主要包括以下幾個(gè)方面:
???? (1)創(chuàng)建數(shù)據(jù)Socket,指定一個(gè)端口號(hào);
???? (2)對(duì)于接收消息的一端來(lái)說,提供一個(gè)byte數(shù)組進(jìn)行數(shù)據(jù)的存儲(chǔ);而對(duì)于發(fā)送消息一端,除此以外還需要提供對(duì)端的IP地址和端口號(hào);
???? (3)調(diào)用DatagramPacket的receive()或send()方法進(jìn)行數(shù)據(jù)的接收或發(fā)送;
???? (4)調(diào)用DatagramPacket的getData()方法得到byte數(shù)組的數(shù)據(jù);
???? (5)釋放資源。
6、如何創(chuàng)建TCP通信的服務(wù)器端的多線程模型?
???? 使用多線程模型來(lái)編程TCP程序的服務(wù)器端,主要有以下步驟:
???? (1)創(chuàng)建ServerSocket對(duì)象,指定監(jiān)聽的端口;
???? (2)把a(bǔ)ccept()方法作為循環(huán)條件,循環(huán)監(jiān)聽客戶端請(qǐng)求;
???? (3)創(chuàng)建線程類,定義一個(gè)Socket類型的成員變量,并定義一個(gè)可以為它賦值的構(gòu)造方法;
???? (4)在run()方法中使用socket變量進(jìn)行任意的通信操作;
???? (5)在主進(jìn)程的循環(huán)體內(nèi)開啟一個(gè)線程,并傳入accept()方法的返回值。
7、用UDP通信模型創(chuàng)建一個(gè)即時(shí)聊天軟件。
???? 主要思路包括:為接收用戶輸入和打印聊天記錄兩個(gè)界面創(chuàng)建兩個(gè)不同的線程,它們分別使用DatagramPacket通信。創(chuàng)建一個(gè)發(fā)送消息的線程類(SendThread)和一個(gè)接收消息的線程類(ReceiveThread),分別的作用是循環(huán)監(jiān)聽用戶的輸入并把用戶輸入的數(shù)據(jù)通過調(diào)用DatagramSocket的send()方法發(fā)出和循環(huán)的調(diào)用DatagramSocket的receive()方法,接收另外一端來(lái)的數(shù)據(jù)。
8、有兩間房,一間房中有3盞燈,另一間房有控制這3盞燈的開關(guān)(這兩間房是分割開的,毫無(wú)聯(lián)系)。現(xiàn)在要你分別進(jìn)這兩間房一次,然后判斷出這三盞燈分別是由哪個(gè)開關(guān)控制的。
???? 首先進(jìn)入開關(guān)房間,先開開關(guān)A,過段時(shí)間,關(guān)A,開B,去另一個(gè)房間,亮著的燈是B控制的,不亮的燈中熱的是A控制,冷的是C控制。
9、有3個(gè)容器,分別是3、7、10體積,容器沒有刻度。10體積的容器中裝滿某種液體,3、7容器是空的。沒有別的工具,現(xiàn)在請(qǐng)把這種液體平分成相對(duì)精確的兩份。
???? (1)3:0:7
???? (2)0:3:7
???? (3)3:3:4
???? (4)0:6:4
???? (5)3:6:1
???? (6)2:7:1
???? (7)2:0:8
???? (8)0:2:8
???? (9)3:2:5
???? (10)0:5:5
10、有12個(gè)外表完全一樣的球,其中有一個(gè)球重量不一樣(這里假設(shè)更輕),給你一個(gè),誒呦刻度的天平,你只能用3次,把球找出來(lái)。
???? (1)分3堆,4:4:4.
???? (2)把上步確定好的四個(gè)球進(jìn)行2:2分堆過秤。
???? (3)把最后兩個(gè)球過秤。
11、狡猾的騙子到商店用100元的鈔票買了9元的東西,售貨員找了他91元錢,這時(shí)他又稱自己已有零錢,給了9元而要回了自己原來(lái)的100元。那么,他騙了商店多少錢?
???? 82元+商品本身的價(jià)值。
12、有兩根不均勻分布的香,每根香燒完的時(shí)間是一個(gè)小時(shí),你能用什么方法來(lái)確定一段15分鐘的時(shí)間?
???? (1)點(diǎn)燃第一根香的兩頭,和點(diǎn)燃第二根香的一頭;
???? (2)等到第一根香燃盡以后,再把第二根香的另一頭點(diǎn)燃;
???? (3)從第一根香燃盡開始算起,直到第二根香燃盡,時(shí)間就是15分鐘。
轉(zhuǎn)載于:https://www.cnblogs.com/android-blogs/p/5622286.html
總結(jié)
以上是生活随笔為你收集整理的学习面试题Day08的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 实现excel 导出功能
- 下一篇: 编译安装 zbar 时两次 make 带