文章目錄
- C/C++筆試練習
- 選擇部分
- (1)TCP
- (2)IP廣播
- (3)ARP協議
- (4)IP路由器
- (5)MAC協議
- (6)三次握手
- (7)TCP/IP
- (8)TCP
- (9)TCP/IP
- (10)子網劃分
- 編程題 day35
- 年會抽獎
- 抄送列表
C/C++筆試練習
選擇部分
(1)TCP
??主機甲和乙已建立了TCP連接,甲始終以MSS=1KB大小的段發送數據,并一直有數據發送;乙每收到一個數據段都會發出一個接收窗口為10KB的確認段。若甲在t時刻發生超時時擁塞窗口為8KB,則從t時刻起,不再發生超時的情況下,經過10個RTT后,甲的發送窗口是()
??A.10KB
??B. 12KB
??C.14KB
??D.15KB
??答案:A
??1.把慢開始的門限值設為當前窗口的一半,即ssthresh=1/2*8KB=4KB
??2.把擁塞窗口cwnd設置為1個最大報文段MSS大小
??3.再次從慢啟動階段開始。發生擁塞后
??開始慢啟動 cwnd=1KB,之后呈指數增長。
??經過1個RTT cwnd=2^1=2KB
??經過2個RTT cwnd=2^2=4KB,此時到達門限值ssthresh,之后 進入擁塞避免 階段經過3個RTT cwnd=4+1=5KB,由于題目說之后一直都沒有發生超時,cwnd會一直線性增長到接收窗口大小
??經過8個RTT cwnd=10KB,因為發送端不能超過接收端10,此后擁塞窗口一直保持cwnd=10KB.
??發送窗口大小=min(接收窗口,擁塞窗口)=10KB。
??
(2)IP廣播
??某主機的IP地址為180.80.77.55,子網掩碼為 255.255.252.0。若該主機向其所在子網發送廣播分組,則目的地址可以是()
??A.180.80.76.0
??B. 180.80.76.255
??C.180.80.77.255
??D.180.80.79.255
??答案:D
??180.80.77.55
??77 :0100 1101
??1.子網掩碼255.255.252.0 (即11111111.11111111.11111100.00000000)網絡號為連續的1,主機號為連續的0,也就是10位。
??2.然后題目要發送廣播分組,所以求的是廣播地址,廣播地址的主機位也是全為1, 所以主機2180.80.77.55所在的廣播地址就是180.80.010011(11.11111111),括號里面的是主機號,主機號全為1就是廣播地址,即180.80.79.255。
??
(3)ARP協議
??ARP協議的功能是()
??A.根據IP地址查詢MAC地址
??B.根據MAC地址查詢IP地址
??C.根據域名查詢IP地址
??D.根據IP地址查詢域名
??答案:A
??當一臺設備知道對方的IP地址,不知道對方的MAC 地址時,啟動ARP,發送ARP Request請求廣播包到其他主機,收到廣播包的主機查看,只有該請求的設備才會單播回答ARP Reply響應包。
??所以ARP協議本質上是用ip地址查詢MAC地址的協議。
??
(4)IP路由器
??下列關于IP路由器功能的描述中,正確的是()
??Ⅰ.運行路由協議,設置路由表
??Ⅱ.監測到擁塞時,合理丟棄IP分組
??Ⅲ.對收到的IP分組頭進行差錯校驗,確保傳輸的IP分組不丟失
??Ⅳ、根據收到的IP分組的目的IP地址,將其轉發到合適的輸出線路上
??A.僅Ⅲ、 Ⅳ
??B.僅Ⅰ、Ⅱ、 Ⅲ
??C.僅Ⅰ、Ⅱ、Ⅳ
??D.Ⅰ、 Ⅱ、Ⅲ、Ⅳ
??答案:C
??IP層為什么不對數據部分進行差錯校驗?
??因為網絡層是“盡最大努力完整的傳輸數據包”,差錯檢測已由數據鏈路層實現,IP層沒必要再進行一次校驗。
??優點就是,因為不負責差錯檢測和糾錯,所以可獲得較高的傳輸性能。
??缺點就是,因為IP層不負責差錯檢測,那么錯誤檢測只能在傳輸層或應用層被發現,使糾正錯誤的時間增加了。
??
(5)MAC協議
??以太網的MAC協議提供的是()
??A.無連接不可靠服務
??B.無連接可靠服務
??C.有連接不可靠服務
??D.有連接可靠服務
??答案:A
??1.ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息。
??2.ICMP協議的底層協議使用IP協議
??
(6)三次握手
??主機甲向主機乙發送一個(SYN=1,seq=11220)的TCP 段,期望與主機乙建立TCP連接,若主機乙接受該連接請求,則主機乙向主機甲發送的正確的TCP段可能是()
??A.(SYN=0,ACK=0,seq=11221,ack=11221)
??B.(SYN=1,ACK=1,seq=11220,ack=11220)
??C.(SYN=1,ACK=1,seq=11221,ack=11221)
??D.(SYN=0,ACK=0,seq=11220,ack=11220)
??答案:C
??1.主機乙給主機甲應該回復 SYN+ACK數據包,排除A,D。
??2.由于主機甲在SYN數據報當中的序號為(seq=11220),所以主機乙給主機甲回復的確認序號是ack=11221,排除B。
??3.主機乙發送的SYN+ACK數據包的序號seq可以從任意位置開始,所以,C是正確選項。
??
(7)TCP/IP
??TCP/IP參考模型的網絡層提供的是()
??A.無連接不可靠的數據報服務
??B.無連接可靠的數據報服務
??C.有連接不可靠的虛電路服務
??D.有連接可靠的虛電路服務
??答案:A
??
(8)TCP
??主機甲和主機乙之間建立一個TCP連接,TCP最大段長度為1000字節,若主機甲的當前擁塞窗口為4000字節,在主機甲向主機乙連續發送兩個最大段后,成功收到主機乙發送的第一個段的確認段,確認段中通告的接收窗口大小為2000字節,則此時主機甲還可以向主機乙發送的最大字節數是()
??A.1000
??B. 2000
??C.3000
??D.4000
??答案:A
??網絡層提供無連接不可靠的數據報服務,例如協議。
??
(9)TCP/IP
??在TCP/IP體系結構中,直接為ICMP提供服務的協議是()
??A.PPP
??B. IP
??C.UDP
??D.TCP
??答案:B
??1.發送方的發送窗口的上限值取接收方窗口和擁塞窗口中的最小值,即min(4000,2000)=2000B,由于還未收到第二個最大段的確認,所以此時主機甲還可以向主機乙發送的最大字節數為2000-1000=1000B。
??
(10)子網劃分
??某網絡的IP地址空間為192.168.5.0/24,采用定長子網劃分,子網掩碼為255.255.255.248,則該網絡的最大子網個數、每個子網內的最大可分配地址個數()
??A.32,8
??B. 32,6
??C.8,32
??D.8,30
??答案:B
??一個IP的組成部分為:網絡號+子網號+主機號:
??對于這樣的IP 192.168.5.0/24 由/24可以知道其子網掩碼默認為255.255.255.0
??按照子網掩碼255.255.255.248進行劃分
??二進制位: (11111111.11111111.11111111)(24表示網絡號).11111(子網掩碼)000,子網掩碼中全1表示的網絡號和子網號部分,0部分表示主機號部分。
??(11111)2二進制轉換為十進制為2^5 =32 所以可以劃分為32個子網,而后面有3個0,所以000-111表示的范圍2^3-2(全0和全1不可用)=6。
????????????
編程題 day35
年會抽獎
年會抽獎
??解題思路:錯排的遞推公式是:D(n) = (n - 1) [D(n - 2) + D(n - 1)],也就是n - 1倍的前兩項和。公式推導可以參考百度百科。通過這個遞推公式可以得到在總數為n的時候,錯排的可能性一共有多少種。那么要求錯排的概率,我們還需要另一個數值,就是當總數為n的時候,所有的排列組合一共有多少種,那么根據排列組合,肯定是使用Ann的公式來求,也就是n的階乘。所以結果很簡單,就是用公式求出第n項的錯排種類,和n的階乘,然后兩者一除,就是概率了。
#include <iostream>
#include <vector>
using namespace std;int main()
{int n;while (cin >> n) {vector<double> arr(n);arr[0] = 0, arr[1] = 1;for (int i = 2; i < n; i++) {arr[i] = i * (arr[i - 1] + arr[i - 2]);}double base = 1;for (int i = 1; i <= n; i++)base *= i;printf("%.2lf%%\n", arr[n - 1] / base * 100);}return 0;
}
??
抄送列表
抄送列表
??解題思路:1. 通過getiine(cin, names)方法獲取第一行中的所有名字 2. 解析出第一行中的所有名字保存在unordered_set中 3. 獲取第二行中的名字,檢測該名字是否存在,并按照題目的要求進行輸出。
#include<iostream>
#include<string>
using namespace std;int main()
{string s, res;while (getline(cin, s)){getline(cin, res);bool sta = false;for (int i = 0; i < s.length(); i++){string t;if (s[i] == '"'){i++;while (i<s.length()&&s[i] != '"'){t += s[i];i++;}if (t == res){sta = true;break;}}else if (s[i] != ','){while (i<s.length()&&s[i] != ','){t += s[i];i++;}if (t == res){sta = true;break;}}}if (sta == true)cout << "Ignore" << endl;elsecout << "Important!" << endl;}return 0;
}
????????????