日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

部分真题整理

發布時間:2025/10/17 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 部分真题整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

① NLR:前序遍歷(PreorderTraversal亦稱(先序遍歷))
——訪問根結點的操作發生在遍歷其左右子樹之前。
② LNR:中序遍歷(InorderTraversal)
——訪問根結點的操作發生在遍歷其左右子樹之中(間)。
③ LRN:后序遍歷(PostorderTraversal)
——訪問根結點的操作發生在遍歷其左右子樹之后。
1、已知一棵二叉樹,如果先序遍歷的節點順序是:ADCEFGHB,中序遍歷是:CDFEGHAB,則后序遍歷結果為:(D)
CFHGEBDA
CDFEGHBA
FGHCDEBA
CFHGEDBA


2、初始序列為1 8 6 2 5 4 7 3一組數采用堆排序,當建堆(小根堆)完畢時,堆所對應的二叉樹中序遍歷序列為:(A)
8 3 2 5 1 6 4 7
3 2 8 5 1 4 6 7
3 8 2 5 1 6 7 4
8 2 3 5 1 4 7 6
初始化序列:1 8 6 2 5 4 7 3,,小根堆就是要求結點的值小于其左右孩子結點的值,左右孩子的大小沒有關系,那么小根堆排序之后為:1 2 4 3 5 6 7 8;
中序遍歷:先遍歷左孩子,然后訪問根結點,最后訪問有孩子,故遍歷結果為:8 3 2 5 1 6 4 7


3、IP地址131.153.12.71是一個(B)類IP地址。
IP地址分類 A類網絡的IP地址范圍為1.0.0.1-127.255.255.254;
B類網絡的IP地址范圍為:128.1.0.1-191.255.255.254;
C類網絡的IP地址范圍為:192.0.1.1-223.255.255.254。
子網劃分:




4、下推自動識別機的語言是:(C)
0型語言
1型語言
2型語言
3型語言
在編譯原理中,圖靈機(TM)識別0型語言
線性界限自動機(LBA)識別上下文有關語言
下推自動機(PDA)識別上下文無關語言
有窮自動機(FA)識別正規語言


5、瀏覽器訪問某頁面,HTTP協議返回狀態碼
找不到該頁面:404
禁止訪問:403
內部服務器訪問:500
服務器繁忙:503


6、如果某系統15*4=112成立,則系統采用的是(A)進制。
6
7
8
9
需要注意的是,當選定六進制時,15,4 和112都應該為六進制。
15由六進制轉為十進制為11,計算方法:1*6 + 5*1 = 11
同理:4轉為十進制為4,112轉為十進制為44 所以轉換后的等式左邊為 11*4, 右邊為44。相等。
所以,答案為A。
假設是X進制 則:(x+5)*4 = x*x +x +2
求解得:x = 6


7、一個棧的入棧序列是A,B,C,D,E,則棧的不可能的輸出序列是?(C)
EDCBA
DECBA
DCEAB
ABCDE
選項A:壓入ABCDE,再依次彈出
選項B:壓入ABCD,彈出D,壓入E,彈出E,再彈出CBA
選項C:不可能
選項D:壓入X,彈出X


8、進程進入等待狀態有哪幾種方式?
CPU調度給優先級更高的線程
阻塞的線程獲得資源或者信號
在時間片輪轉的情況下,如果時間片到了
獲得spinlock未果
A CPU調度給優先級更高的線程(運行態轉為就緒態)
B 阻塞的線程獲得資源或者信號(阻塞態轉為就緒態)
C 在時間片輪轉的情況下,如果時間片到了(運行態轉為就緒態)
D 獲得 spinlock 未果(運行態轉為阻塞態)


9、下列哪兩個數據結構,同時具有較高的查找和刪除性能?()
有序數組
有序鏈表
AVL樹
Hash表
解析:幾種常見的數據結構的操作性能對比如下圖所示

由上圖可見,平衡二叉樹的查找,插入和刪除性能都是O(logN),其中查找和刪除性能較好;哈希表的查找、插入和刪除性能都是O(1),都是最好的。
答案:CD


10、下列排序算法中,哪些時間復雜度不會超過nlogn?(B、C)
快速排序
堆排序
歸并排序
冒泡排序
解析:幾種常見的排序算法對比:
排序法 平均時間 最差情形 穩定度 額外空間 備注
冒泡 O(n2) O(n2) 穩定 O(1) n小時較好
交換 O(n2) O(n2) 不穩定 O(1) n小時較好
選擇 O(n2) O(n2) 不穩定 O(1) n小時較好
插入 O(n2) O(n2) 穩定 O(1) 大部分已排序時較好
基數 O(logRB) O(logRB) 穩定 O(n) B是真數(0-9),
R是基數(個十百)
Shell O(nlogn) O(ns) 1<s<2< span=""></s<2<> 不穩定 O(1) s是所選分組
快速 O(nlogn) O(n2) 不穩定 O(nlogn) n大時較好
歸并 O(nlogn) O(nlogn) 穩定 O(1) n大時較好
堆 O(nlogn) O(nlogn) 不穩定 O(1) n大時較好
穩定的排序:冒泡,插入,基數,歸并



11、Unix系統中,哪些可以用于進程間的通信?(ABCD)
Socket
共享內存
消息隊列
信號量
A socket可以實現同一個主機的進程之間通信,也可以實現不同的兩臺主機之間的不同進程的通信。
B 申請一塊內存,不同的進程都可以使用,使用的時候,最好加鎖
C 消息隊列是可以實現的
D 信號量semget函數可以實現進程通信。


13、 TCP和IP分別對應了OSI中的哪幾層?()



14、 同一進程下的線程可以共享以下?
解析: 線程共享的內容包括:
1.進程代碼段
2.進程的公有數據(利用這些共享的數據,線程很容易的實現相互之間的通訊)
3.進程打開的文件描述符、
4.信號的處理器、
5.進程的當前目錄和
6.進程用戶ID與進程組ID
線程獨有的內容包括:
1.線程ID
2.寄存器組的值
3.線程的堆棧
4.錯誤返回碼
5.線程的信號屏蔽碼



15、如何減少換頁錯誤?(B)
進程傾向于占用CPU
訪問局部性(locality of reference)滿足進程要求
進程傾向于占用I/O
使用基于最短剩余時間(shortest remaining time)的調度機制
換頁錯誤又稱缺頁錯誤,當一個程序試圖訪問沒有映射到物理內存的地方時,就會出現缺頁錯誤, 這時操作系統就要去虛擬內存中加載這塊內存頁。
百度了一下,減少換頁錯誤的方法,即降低缺頁中斷率:
1、內存頁框數。增加作業分得的內存塊數。
2、頁面大小。頁面劃分越大,中斷率越低。
3、替換算法的優劣影響缺頁中斷次數
4、程序局部性。程序局部性好可減少缺頁中斷(為什么?)。
那么B是對的,而對于D,最短剩余時間調度是CPU調度就緒進程的方式,與頁面置換算法無關,不要搞混淆了。


16、同步機制應該遵循的基本準則
? 空閑讓進:當無進程處于臨界區時,表明臨界資源處于空閑狀態,允許一個請求進入臨界區的進程立即進入臨界區,以有效利用臨界資源
? 忙則等待:當已有進程處于臨界區時,表明臨界資源正在被訪問,因而其他試圖進入臨界區的進程必須等待,以保證對臨界資源的互斥訪問
? 有限等待:對要求訪問臨界資源的進程,應保證在有限時間內能進入自己的臨界區,以免陷入“死等”狀態
? 讓權等待:當進程不能進入自己的臨界區時,應立即釋放處理機,以免進程陷入“忙等”狀態


17、設有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},請寫出按二路歸并方法對該序列進行一趟掃描后的結果為 1 。(輸出結果請按照以下格式:ABCDEFG,字母之間沒有逗號)
DQFXAPBNMYCW


18、關鍵碼序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照關鍵碼值遞增的次序進行排序,若采用初始步長為4的Shell的排序法,則一趟掃描的結果是 1 ;若采用以第一個元素為分界元素的快速排序法,則掃描一趟的結果是 2 。
1:QACSQDFXRHMY
2:MHCFDAQSRQYX


19、二進制地址為011011110000,大小為(4)10和(16)10塊的伙伴地址分別為
假設地址是16位的,
(011011110000)2
=(0000 0110 1111 0000)2
=(06F0)16>06F0h
所以當前地址為06F0h
查閱相關資料,有:
伙伴的概念, 滿足以下三個條件的稱為伙伴:
( 1 ) 兩個塊大小相同
( 2 ) 兩個塊地址連續
( 3 ) 兩個塊必須是從同一個大塊中分離出來的。
若塊大小為4,則06F4h是06F0h的伙伴地址。
若塊大小為16,則06E0h是06F0h的伙伴地址。


20、TCP/IP協議棧的網絡層的主要功能是通過(A )來完成的。
IP協議
TCP協議
以太網協議
IGP協議
網絡層是IP協議
TCP協議是傳輸層

21、實現不同的作業處理方式(如:批處理、分時處理、實時處理等),主要是基于操縱系統對(A)治理采取了不同的策略。
處理機
存儲
數據庫
文件


22、下面關于編譯系統和解釋系統的觀點中,錯誤的是(A)
解釋程序不產生目標代碼,它直接執行源程序或源程序的內部形式
使用編譯系統時會區分編譯階段和運行階段
一般來說,編譯系統的比較復雜,開發和維護費用都大。相反,解釋系統比較簡單,可移植性好,適合于以交互形式執行程序
一般來說,建立在編譯基礎上的系統在執行速度上要優于建立在解釋執行基礎上的系統
A 不是直接執行,而是轉換成機器可識別碼之后才能執行


23、對于#include <filename.h> 和 #include “filename.h”,以下說法錯誤的是( B)
#include <filename.h>只搜索標準庫路徑
#include “filename.h”只搜索用戶工作路徑
#include <filename.h>搜索范圍比#include “filename.h”小
兩者可能等價
#include""從當前工作路徑開始搜索,然后擴展到標準庫路徑。



24、類定義的外部,可以被訪問的成員有(C)。
所有類成員
private或protected的類成員
public的類成員
public或private的類成員
public: 公有訪問,類外部可訪問;
private:私有訪問,類本身成員函數可訪問;
protected:保護訪問,類本身以及派生子類可訪問


25、 TCP/IP模型的體系結構中,ICMP協議屬于( B)。
應用層
網絡層
數據鏈路層
傳輸層
ICMP是TCP/IP協議族 的一個子協議,用于 傳遞控制消息,通常使用的PING命令就是使用這個協議。它的歸屬層為:網絡層。


26、 下列的模板說明中,正確的有( )
template <typename T1, typename T2>
template <class T1, T2>
template <class T1, class T2>
template <typename T1; typename T2>


27、 (ACD )面向對象程序設計語言不同于其他語言的主要特點。
繼承性
消息傳遞
多態性
封裝性


28、 下面有關重載函數的說法中正確的是(C)
重載函數必須具有不同的返回值類型
重載函數形參個數必須不同
重載函數必須有不同的形參列表
重載函數名可以不同


29、在一個cpp文件里面,定義了一個static類型的全局變量,下面一個正確的描述是(A)
只能在該cpp所在的編譯模塊中使用該變量
該變量的值是不可改變的
該變量不能在類的成員函數中引用
這種變量只能是基本類型(如int,char)不能是C++類型
Static全局變量和普通全局變量:
針對:一個工程里有多個cpp文件時
相同點:存儲方式相同,都是靜態存儲;
不同點:作用域不同。
普通全局變量---作用域是整個源程序(含有多個源文件),在各個源文件中都有效
Static全局變量----作用域是當前源文件


30、觀察下面一段代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class ClassA
{
public:
virtual ~ ClassA(){};
virtual void FunctionA(){};
};
class ClassB
{
public:
virtual void FunctionB(){};
};
class ClassC : public ClassA,public ClassB
{
public:
};

ClassC aObject;
ClassA* pA=&aObject;
ClassB* pB=&aObject;
ClassC* pC=&aObject;
關于pA,pB,pC的取值,下面的描述中正確的是:(C)
pA,pB,pC的取值相同.
pC=pA+pB
pA和pB不相同
pC不等于pA也不等于pB
子類的指針和第一個基類的指針應該是一樣的,和第二個基類是不一樣的。
pB和pA的差值是 虛函數表指針的大小,32位機器是4字節,64位機器就是8字節了


31、有如下一段代碼:
1
2
3 #define ADD(x,y) x+y
int m=3;
m+=m*ADD(m,m);
則m的值為: (A)
15
12
18
58
代碼展開為:m=m+m*x+y,其中x=m,y=m,所以m=15
假如將#define ADD(x,y) x+y改為:#define ADD(x,y) (x+y),則結果就又不一樣了,m=m+m*(x+y)


32、在Windows編程中下面的說法正確的是:(B)
兩個窗口,他們的窗口句柄可以是相同的
兩個窗口,他們的處理函數可以是相同的
兩個窗口,他們的窗口句柄和窗口處理函數都不可以相同.


33、下面哪種情況下,B不能隱式轉換為A?(B)
class B:public A{}
class A:public B{}
class B{operator A();}
class A{A(const B&);}
拷貝構造函數可以進行隱式類型轉換,operator除了表示重載外也表示隱式類型裝換,子類對象可以隱式轉換為父類對象,父類對象要增加數據成員必須要顯示地轉化為子類的對象。


34、 某公司使用包過濾防火墻控制進出公司局域網的數據,在不考慮使用代理服務器的情況下,下面描述錯誤的是”該防火墻能夠(B )”.
使公司員工只能訪問Internet上與其業務聯系的公司的IP地址.
僅允許HTTP協議通過,不允許其他協議通過,例如TCP/UDP.
使員工不能直接訪問FTP服務器端口號為21的FTP地址.
僅允許公司中具有某些特定IP地址的計算機可以訪問外部網絡


35、假設你在編寫一個使用多線程技術的程序,當程序中止運行時,需要怎樣一 個機制來安全有效的中止所有的線程?請描述其具體流程.
程序中的主線程向各個子線程發送一個退出消息信號,各個線程收到這個消息信號后退出線程函數,則可以安全有效的推出所有的線程。


36、下面的排序算法中,初始數據集的排列順序對算法的性能無影響的是(B)
插入排序
堆排序
冒泡排序
快速排序
有影響就是這個排序算法最好情況和最差情況的時間復雜度不同。對于無影響,我們只要找最好情況和最差情況時間復雜度一樣的算法就可以了,所以是堆排序
根據各種排序算法的流程,對于插入排序,如果幾乎有序的話,每個節點的初始位置就最終位置,所以幾乎不需要移動節點。
對于冒泡排序,如果節點幾乎有序的話,對于一次遍歷設置標記為,如果不交換元素的話即結束排序過程。
對于快速排序,如果以初始序列是逆序的話,時間復雜度變為n2.
綜上,時間堆排序的最差和最優時間復雜度都為nlgn,所以堆排序是最優的
對算法 無影響的有 堆 直接選擇 歸并 基數 即最好 和最壞的時間復雜度都是一樣的


37、數據存儲在磁盤上的排列方式會影響I/O服務的性能,一個圓環的磁道上有 10 個物理塊,10 個數據記錄R1------R10 存放在這個磁道上,記錄的安排順序 如下表所示: 假設磁盤的旋轉速度為20ms/周,磁盤當前處在R1 的開頭處,若系統順序掃描 后將數據放入單緩沖區內,處理數據的時間為4ms(然后再讀取下個記錄), 則處理這10 個記錄的最長時間為(C)
180ms
200ms
204ms
220ms
這道題終于會做了。是這樣的原理,磁盤會一直朝某個方向旋轉,不會因為處理數據而停止。本題要求順序處理R1到R10,起始位置在R1,一周是20ms,共10個記錄,所以每個記錄的讀取時間為2ms。首先讀R1并處理R1,讀R1花2ms,讀好后磁盤處于R1的末尾或R2的開頭,此時處理R1,需要4ms,因為磁盤一直旋轉,所以R1處理好了后磁盤已經轉到R4的開始了,這時花的時間為2+4=6ms。這時候要處理R2,需要等待磁盤從R5一直轉到R2的開始才行,磁盤轉動不可反向,所以要經過8*2ms才能轉到R1的末尾,讀取R2需要2ms,再處理R2需要4ms,處理結束后磁盤已經轉到R5的開頭了,這時花的時間為2*8+2+4=22ms。等待磁盤再轉到R3又要8*2ms,加上R3自身2ms的讀取時間和4ms的處理時間,花的時間也為22ms,此時磁盤已經轉到R6的開頭了,寫到這里,大家已經可以看到規律了,讀取并處理后序記錄都為22ms,所以總時間為6+22*9=204ms。
1. 訪問R1 : 2ms , 處理 R1 :4ms ,
2. 經過 8*2ms 之后,到達 R2 頭,訪問 R2 : 2ms , 處理 R2 :4ms
3. 經過 8*2ms 之后,到達 R3 頭, 訪問 R3: 2ms , 處理 R3 : 4ms
。。。。
10 , 經過 8*2 ms 之后,到達 R10 頭, 訪問 R10 : 2ms, 處理 R10 :4ms
計算上述時間 :R1: 6ms , R2->R10 : (4ms +9*2ms) *9 =6+ 198 = 204ms
38、 隨著IP 網絡的發展,為了節省可分配的注冊IP 地址,有一些地址被拿出來用于私有IP 地址,以下不屬于私有IP 地址范圍的是(C)
10.6.207.84
172.23.30.28
172.32.50.80
192.168.1.100
注解:私有IP地址共有三個范圍段:
A:10.0.0.0~10.255.255.255 /8
B:172.16.0.0~172.31.255.255 /12
C:192.168.0.0~192.168.255.255 /16


39、下列關于一個類的靜態成員的描述中,不正確的是(D)
該類的對象共享其靜態成員變量的值
靜態成員變量可被該類的所有方法訪問
該類的靜態方法只能訪問該類的靜態成員變量
該類的靜態數據成員變量的值不可修改


40、 表達式“X=A+B*(C--D)/E”的后綴表示形式可以為(C)
XAB+CDE/-*=
XA+BC-DE/*=
XABCD-*E/+=
XABCDE+*/=
一個中綴式到其他式子的轉換方法~~
這里我給出一個中綴表達式~
a+b*c-(d+e)
第一步:按照運算符的優先級對所有的運算單位加括號~
式子變成拉:((a+(b*c))-(d+e))
第二步:轉換前綴與后綴表達式
前綴:把運算符號移動到對應的括號前面
則變成拉:-( +(a *(bc)) +(de))
把括號去掉:-+a*bc+de 前綴式子出現
后綴:把運算符號移動到對應的括號后面
則變成拉:((a(bc)* )+ (de)+ )-
把括號去掉:abc*+de+- 后綴式子出現
發現沒有,前綴式,后綴式是不需要用括號來進行優先級的確定的。


41、 C++將父類的析構函數定義為虛函數,下列正確的是哪個?(A)
釋放父類指針時能正確釋放子類對象
釋放子類指針時能正確釋放父類對象
這樣做是錯誤的
以上全錯
C++的多態肯定是使用父類的指針指向子類的對象,所以肯定是釋放子類的對象,如果不使用虛函數的話, 父類的指針就只能夠釋放父類的對象。


42、下列哪一個不屬于關系數據庫的特點?(D)
數據冗余度小
數據獨立性高
數據共享性好
多用戶訪問


43、下面程序的輸出結果為多少?(B)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Void Func(char str_arg[100])
{
printf("%d\n", sizeof(str_arg));
}
int main(void)
{
char str[] = "Hello";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
char *p = str;
printf("%d\n", sizeof(p));
Func(str);
}


5 4 4 4
6 5 4 4
5 5 5 5
5 5 5 4
輸出結果為:6 5 4 4
對字符串進行sizeof 操作的時候,會把字符串的結束符“\0”計算進去的,進行strlen 操作求字符 串的長度的時候,不計算\0 的。 數組作為函數參數傳遞的時候,已經退化為指針了,Func 函數的參數str_arg只是表示一個指 針,那個100不起任何作用的。


44、 typedef char *String_t; 和#define String_d char * 這兩句在使用上有什么區別?
typedef char *String_t 定義了一個新的類型別名,有類型檢查。而#define String_d char * 只是做了個簡單的替換,無類型檢查,前者在編譯的時候處理,后者在預編譯的時候處理。
同時定義多個變量的時候有區別,主要區別在于這種使用方式String_t a,b; String_d c,d;a,b ,c 都是char*類型,而d 為char 類型
由于typedef 還要做類型檢查。。#define 沒有。。所以typedef 比#define 安全。。

45、[問答題]
已知rand7()可以產生1~7的7個數(均勻概率),利用rand7() 產 生 rand10() 1~10(均勻概率)。
int rand10()
{
int n=49;
while(n>40){
n=7*(rand7()-1)+rand7();
}
return n%10+1;
}


46、 對一個正整數作如下操作:如果是偶數則除以 2,如果是奇數則加 1,如此進行直到 1 時操作停止,求經過 9 次操作變為 1 的數有多少個?
如果逆推此題,可以知道 1 一定是由 2 , 4 變化來的(因為2不能由1得到,不納入以下討論)
4 之后有可能是 8 和 3,因此分支開始。
每個偶數 2n 一定能產生兩個分支——由4n 除以2得到,或者2n-1得到,
每個奇數 2n-1 只能是由偶數 4n-2除以2得到,
因此每個偶數逆推一次產生一個奇數和一個偶數,每個奇數逆推一次產生一個偶數
用一個很簡單的函數循環7次就可以了(從4開始算),代碼如下:
void func(int& numEven, int& numOdd)
{
int e = numEven;
int o = numOdd;
numEven = e + o;
numOdd = e;
}
1
2
3
4
5
6
7
8
9
10
11
12 int main()
{
int a = 1;
int b = 0;
for ( int i = 0; i < 7; ++i )
{
func(a, b);
}
cout << a << " " << b;
return 0;
}
得到偶數21個,奇數13個,總數34個。


47、IP數據報頭采用()字節序,在此字節序下從低地址到高地址0x1234的表示形式為 (C) 。
big_endian,0x12 0x34 0 0
little_endian,0x34 0x12 0 0
big_endian,0 0 0x12 0x34
little_endian, 0 0 0x34 0x12
IP數據報頭采用big_endian字序列
big_endian的特點:
低字節存儲在高地址位,高字節存儲在低地址位
little-endian的特點:
低字節存儲在低地址位,高字節存儲在高地址位


48、
struct T {
char a;
int *d;
int b;
int c:16;
double e;
};
T *p;
在64位系統以及64位編譯器下,以下描述正確的是
sizeof(p) == 8 P為指針,64位系統地址占8個字節
sizeof(*p) == 24 根據內存對齊 32字節 a_ _ _ _ _ _ _ | * d 8字節| | b4字節| |c2字節|_ _ |e8字節|
sizeof(p->a) == 1 正確
sizeof(p->e) == 8 double


49、平均速度最快的排序算法是?(B)
Shell排序
快速排序
冒泡排序
插入排序
shell排序的平均復雜度是O(nlogn)~O(n2),最好的情況O(n1.3),最壞的情況O(n2)
快速排序的平均復雜度是O(nlogn), 最好的情況O(nlogn),最壞的情況O(n2)
直接插入排序的平均復雜度是O(n2), 最好的情況O(n), 最壞的情況O(n2)
冒泡排序的平均復雜度是O(n2), 最好的情況O(n), 最壞的情況O(n2)

50、在N個亂序數字中查找第k大的數字,時間復雜度可以減小至(B)
O(N*logN)
O(N)
O(1)
O(2)
51、設集合A={1,2,3},A上的關系R={(1,1),(2,2),(2,3),(3,2),(3,3)},則R不具備 (D)?
自反性
傳遞性
對稱性
反對稱性
假設集合A,以及基于A上的關系R
自反: 如果a是A的元素,那么<a,a>是R的元素
反自反: 如果a是A的元素,那么<a,a>不是R的元素
對稱:如果<a,b>是R的元素,那么<b,a>是R的元素
反對稱:如果<a,b>,<b,a>是R的元素,那么a,b相等
傳遞:如果<a,b>,<b,c>是R的元素,那么<a,c>是R的元素


52、主機甲和主機乙間已建立一個TCP連接,主機甲向主機乙發送了兩個連續的TCP段,分別包含300字節和500字節的有效載荷,第一個段的序列號為200,主機乙正確接收到兩個段后,發送給主機甲的確認序列號是?
500
700
800
1000
確認序列號=原始序列號+TCP段的長度,所以第一次的確認序列號為200+300=500,第二次確認序列號為500+500=1000,選D。


53、將一個從大到小的數組,用以下排序方法排序成從小到大的,(D)最快。
插入排序
冒泡排序
快速排序
堆排序
排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性
冒泡排序 O(n^2) O(n) O(n^2) O(1) 穩定
選擇排序 O(n^2) O(n^2) O(n^2) O(1) 穩定
插入排序 O(n^2) O(n) O(n^2) O(1) 穩定
希爾排序O(n*log(n))~O(n^2) O(n^1.3) O(n^2) O(1) 不穩定
堆排序 O(n*log(n)) O(n*log(n)) O(n*log(n)) O(1) 不穩定
歸并排序 O(n*log(n)) O(n*log(n)) O(n*log(n)) O(n) 穩定
快速排序 O(n*log(n)) O(n*log(n)) O(n^2) O(1) 不穩定
冒泡排序經過優化以后,最好時間復雜度可以達到O(n)。設置一個標志位,如果有一趟比較中沒有發生任何交換,可提前結束,因此在正序情況下,時間復雜度為O(n)。選擇排序在最壞和最好情況下,都必須在剩余的序列中選擇最小(大)的數,與已排好序的序列后一個位置元素做交換,依次最好和最壞時間復雜度均為O(n^2)。插入排序是在把已排好序的序列的后一個元素插入到前面已排好序(需要選擇合適的位置)的序列中,在正序情況下時間復雜度為O(n)。堆是完全二叉樹,因此樹的深度一定是log(n)+1,最好和最壞時間復雜度均為O(n*log(n))。歸并排序是將大數組分為兩個小數組,依次遞歸,相當于二叉樹,深度為log(n)+1,因此最好和最壞時間復雜度都是O(n*log(n))。快速排序在正序或逆序情況下,每次劃分只得到比上一次劃分少一個記錄的子序列,用遞歸樹畫出來,是一棵斜樹,此時需要n-1次遞歸,且第i次劃分要經過n-i次關鍵字比較才能找到第i個記錄,因此時間復雜度是\sum_{i=1}^{n-1}(n-i)=n(n-1)/2,即O(n^2)。


54、有一臺帶一個千兆網卡的服務器A,會把接收到的消息轉發給另外兩臺帶一個千兆網卡的服務器B和C,B和C上面的一個服務進程處理一條10K字節的消息需要2毫秒。如果在B和C上面各跑80個服務進程,在不考慮CPU負載和進程切換、內存占用、傳輸損耗和交互損耗的情況下,B和C服務器每秒一共大約可以處理______條10K字節的消息。(D)
50000
60000
70000
80000
"一個服務進程處理一條10K字節的消息需要2毫秒",則一進程500*10K/S,現在有2*80個進程,則最終處理160*500*10k/S,所以結果80000。
??(A) 1000M/8=125m,125M/10K=12500條消息
千兆網卡的單位是bit,也就是每秒只能發125000KB,最多處理12500條


55、 設一棵二叉樹中有3個葉子節點,有8個度為1的節點,則該二叉樹中總的節點數為?
13 有公式:N2=N0-1,度為2的節點個數是度為0的節點個數減一,所以N0=3,則N2=2,再加上N1=8,總的是13


56、 10個相同的糖果,分給三個人,每個人至少要得一個。有(D)種不同分法
36
一共這么幾種情況:
118,127,136,145;
226,235,244;
334;
然后有數字重復的算3種排列,不重復的算6種排列,共計4×3+4×6=36種。
10個糖果依次排開,中間有9個空擋 ,依次編號為空擋1-9,從這9個空擋中任意取出2 個作為分割點 ,正好能把糖果分為3份,并且保證每一份中至少有一個糖果。因為分割點并沒有順序,所以可以使用組合公式C(9,2)計算。


57、假定x=500,求下面函數的返回值_6_____ 。
1
2
3
4
5
6
7
8
9
10 int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x – 1);
}
return countx;

x每次與x-1進行一次與(&)操作,就會導致x二進制中的1減少一個。通過函數fun可知,x二進制中有多少位1就會進行多少次與計算。
500的二進制表示是:111110100,共有6個1。所以答案是6。


58、在32位機器上
設有以下說明和定義:
1
2
3
4
5
6
7
8
9
10
11 typedef union {
long i;
int k[5];
char c;
} DATE;
struct data {
int cat;
DATE cow;
double dog;
} too;
DATE max;
則語句 printf("%d",sizeof(struct data)+sizeof(max));的執行結果是: 52
共用體里面你們肯定都是明白的,DATE是一個union, 變量公用空間. 里面最大的變量類型是int[5], 占用20個字節. 所以它的大小是20 。
但是到了結構體里面,其實它是這樣的,首先一個Int,然后后面5個int,再然后是一個double,所以最大的成員長度是8不是20,然后6個int剛剛24,然后加上8是32,加上共用體是52,如果你把第一個Int cat去掉,你仍然會發現,結構體大小還是32,因為8個字節內存對齊,前面2個int一組,最后還單一個int也要占8個字節。希望能對內存對齊不明白的童鞋有所幫助。

59、局部變量能否和全局變量重名?
能,局部會屏蔽全局。要用全局變量,需要使用"::"
局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。

60、 如何引用一個已經定義過的全局變量?
extern
可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。


61、 全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?
可以,在不同的C文件中以static形式來聲明同名全局變量。
可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯


62、 static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別?
static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝

總結

以上是生活随笔為你收集整理的部分真题整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。