系統(tǒng)工程師 北京 筆試卷
第一部分 單選題(前10題,每題2分;后10題,每題3分;共50分。選對(duì)得滿分,選錯(cuò)倒扣一分,不選得0分。)
1.字符串“alibaba”有 個(gè)不同的排列。
A.5040
B.840
C.14
D.420
2.下列一段C++代碼的輸出是 。
class Base
{
public:
int Bar(char x) {return (int)(x);}
virtual int Bar(int x) {return(2*x);}
};
class Derived :public Base
{
public:
int Bar(char x) {return(int)(-x);}
int Bar(int x) {return (x/2);}
};
void main(void)
{
Derived Obj;
Base*pObj=&Obj;
printf("%d,",pObj->Bar((char)(100)));
printf("%d,",pObj->Bar(100));
}
A.100,50
B.-100,200
C.-100,50
D.100,200
3.有一個(gè)二維數(shù)組A[10][5],每個(gè)數(shù)據(jù)元素占1個(gè)字節(jié),且A[0][0]的存儲(chǔ)地址是1000,則A[i][j]的地址是 。
A.1000+10i+j B.1000+i+j C.1000+5i+j D.1000+10i+5j
4.下列 不是線性表?
A.隊(duì)列
B.棧
C.關(guān)聯(lián)數(shù)組
D.鏈表
5.下列有關(guān)在一個(gè)處理器(processor)上跑兩個(gè)線程(thread)的說法中,正確的是 。
A.一個(gè)線程可以改變另一個(gè)線程的程序計(jì)數(shù)器(program counter)
B.一個(gè)線程既不能讀也不能寫另一個(gè)線程的棧(stack)
C.一個(gè)線程可以讀寫另一個(gè)線程的寄存器(register)
D.以上都不對(duì)
6.關(guān)于雙鏈表的搜索給定元素操作的說法正確的是 。
A.從兩個(gè)方向搜索雙鏈表,比從一個(gè)方向搜索雙鏈表的速度慢
B.從兩個(gè)方向搜索雙鏈表,比從一個(gè)方向搜索雙鏈表的方差要小
C.從兩個(gè)方向搜索雙鏈表,比從一個(gè)方向搜索雙鏈表速度要快
D.以上說法都不正確
7.對(duì)n個(gè)數(shù)字進(jìn)行排序,期中兩兩不同的數(shù)字的個(gè)數(shù)為k,n遠(yuǎn)遠(yuǎn)大于k,而n的取值區(qū)間長度超過了內(nèi)存的大小,時(shí)間復(fù)雜度最小可以是 。
A.O(nlogk)
B.O(nk)
C.O(n)
D.O(nlogn)
8.一臺(tái)指針式鐘表的時(shí)鐘和分鐘的指向重合的時(shí)間間隔是 B 。
A.720/13分鐘
B.720/11分鐘
C.60分鐘
D.以上都不正確
9.兩個(gè)大小不同的杯子R和S,R中裝著一定量的小米,S中裝著一定量的沙子。一名兒童用勺子從S中取出一勺沙子放入R,與小米混合之后,再從R中取出等體積的一勺混合物放入S。假定兩勺物品的體積相等,且R和S都沒有發(fā)生溢出。則以下說法中正確的是 。
A.R中的沙子和S中的小米一樣多
B.R中的沙子比S中的小米少
C.R中的沙子比S中的小米多
D.無法判斷
10.假定拋出的硬幣落地之后正反兩面出現(xiàn)的概率分別是1/2。那么拋10次和100次硬幣(分別稱為T10和T100)相比,以下說法正確的是 。
A.T100出現(xiàn)一半的正面比T10出現(xiàn)一半正面的概率更大
B.T100前3次都是正面的概率比T10前3次都是正面的可能性大
C.T100正面次數(shù)的方差小于T10出現(xiàn)正面次數(shù)的方差
D.T100出現(xiàn)正面的比例比T10出現(xiàn)正面的比例在(0.45,0.55)區(qū)間中的可能性更大。
11.某福彩機(jī)構(gòu)推出了一款簡(jiǎn)單的猜謎游戲:游戲玩家只需交納n元,賭紅或者黑。如果開獎(jiǎng)結(jié)果與游戲玩家所賭的顏色相同,則玩家除得到交納的n元賭資外,還可以獲得n元作為獎(jiǎng)勵(lì);否則該玩家失去交納的n元賭資。為了游戲公平,開獎(jiǎng)是紅或者黑的概率均為1/2。某游戲玩家想出了一個(gè)玩法:開始出100元參與賭博,然后按照如下規(guī)則進(jìn)行游戲,如果輸?shù)?,并且賭資充足,就把已經(jīng)輸了的總錢數(shù)翻倍作為賭資進(jìn)行賭博;否則,就停止該游戲。假定該機(jī)構(gòu)賭資無限,而玩家的賭資比較有限,以下關(guān)于該玩家退出游戲時(shí)的情形的評(píng)論中合理的是: 。
A.該玩家的策略可以保證游戲結(jié)束時(shí)贏錢數(shù)的期望為正數(shù)
B.該福彩機(jī)構(gòu)長期會(huì)賠錢
C.該玩家會(huì)有一定概率在游戲結(jié)束時(shí)輸錢,但輸?shù)貌欢?br />
D.該玩家贏的可能性比輸?shù)目赡苄源?/p>
12.有16瓶水,其中只有一瓶水有毒,小白鼠喝一滴之后一小時(shí)會(huì)死。請(qǐng)問最少用 只小白鼠,在1小時(shí)內(nèi)一定可以找出至少14瓶無毒的水?
A.1只
B.3只
C.4只
D.16只
13.有一臺(tái)4核CPU的服務(wù)器,上面運(yùn)行著1種在線服務(wù)。如果該在線服務(wù)處理一個(gè)請(qǐng)求在非獨(dú)占IO上的等待時(shí)間和CPU計(jì)算上消耗的時(shí)間比為2:1,假定IO帶寬充足,那么至少開 個(gè)線程能最大化性能地使用該服務(wù)器?
A.4
B.8
C.12
D.線程越多越好
14.有一種語言稱為lua,里面的數(shù)字只有一種類型(number),實(shí)際上是雙精度浮點(diǎn)數(shù)。沒有各種位數(shù)的整數(shù),如32位、64位整數(shù)等。那么關(guān)于該語言的說法錯(cuò)誤的是 。
A.該語言可以用number類型的變量作為數(shù)組下標(biāo)
B.該語言可以表示任意32位數(shù)字整數(shù)的數(shù)字ID
C.該語言無法實(shí)現(xiàn)32位數(shù)字整數(shù)的按位與、或、異或運(yùn)算
D.該語言可以正常進(jìn)行雙精度浮點(diǎn)數(shù)運(yùn)算
15.一個(gè)在線服務(wù)通常需要讀取存儲(chǔ)著海量數(shù)據(jù)的數(shù)據(jù)庫。為了提高服務(wù)的處理速度,通常需要加cache(緩存)。以下場(chǎng)景中不合適使用cache的是 。
A.數(shù)據(jù)庫中每條數(shù)據(jù)被訪問到的概率近似相等,且獨(dú)立
B.使用了多線程機(jī)制的服務(wù)
C.單條數(shù)據(jù)尺寸大小的數(shù)據(jù)
D.有著大量訪問的服務(wù)
16.如下一段神奇的代碼實(shí)現(xiàn)的功能是 。
int miracle(unsigned int n)
{
int m=n==0 ? 0:1;
while (n=(n&(n-1)))
{
m++;
}
return m;
}
A.n的二進(jìn)制表示中“0”的個(gè)數(shù)
B.n的二進(jìn)制表示的倒序值
C.n的二進(jìn)制表示中“1”的個(gè)數(shù)
D.一個(gè)均勻的哈希函數(shù)
17.有1023個(gè)兩兩不同的整數(shù),取值范圍是1到1024,其按位異或的結(jié)果的取值范圍是 。
A.0到1024
B.0,1025到2047
C.1到1024
D.2到2048之前的全部偶數(shù)
18.七夕節(jié)n戀人(n>=2)圍成一圈舉行篝火晚會(huì)。晚會(huì)的規(guī)則是:男女相同,且每對(duì)戀人處在相鄰的位置上。請(qǐng)問有多少種不同的圈子?
A.(2n-1)!/2
B.2(n-1)!
C.2n(n-1)!
D.(2n)!
19.星期天有10個(gè)朋友約好一起郊游,在車站的集合時(shí)間是早晨9:50:00到10:00:00。已知每個(gè)人到達(dá)車站的時(shí)間是9:50:00到10:00:00內(nèi)的均勻分布,且彼此獨(dú)立。那么最后一人最可能到達(dá)的時(shí)間是 (精確到分鐘,向下取整)。
A.各個(gè)分鐘概率相等
B.9:57
C.9:58
D.9:59
20.已知某國家每年出生人口數(shù)每年遞增3%,且男女比例為1:1。如果每個(gè)男性都希望找比自己小0.5到 3歲的女性結(jié)婚,且每個(gè)女性都希望找比自己大0.5到3歲的男性結(jié)婚,適婚年齡為20到30歲,那么對(duì)該國適婚男女婚配方面的說法正確的是 。
A.男女會(huì)比較均衡
B.會(huì)產(chǎn)生較多剩女
C.會(huì)產(chǎn)生較多剩男
D.信息不足,無法判斷
第二部分 不定向選項(xiàng)(4題,每題5分。每題有1-5個(gè)正確選項(xiàng),完全正確計(jì)5分,漏選計(jì)2分,不選計(jì)0分,多選、錯(cuò)選計(jì)-2分)
21.要提高多線程程序的效率,對(duì)鎖的控制策略非常重要。一種策略是在鎖的個(gè)數(shù)不太多、控制結(jié)構(gòu)不太復(fù)雜的情況下,盡可能降低加鎖的粒度;另一種策略是在合適的條件下取消用鎖。以下情況中不可能取消鎖的是 。
A.多線程寫一個(gè)共同的數(shù)據(jù)結(jié)構(gòu),且寫操作是原子操作
B.多線程寫一個(gè)共同的數(shù)據(jù)結(jié)構(gòu),且寫操作不是原子操作
C.多線程讀一個(gè)共同的數(shù)據(jù)結(jié)構(gòu),且讀操作不是原子操作
D.一個(gè)線程寫,多個(gè)線程讀一個(gè)共同的數(shù)據(jù)結(jié)構(gòu),寫操作是原子操作,讀操作不是原子操作
E.一個(gè)線程寫、多個(gè)線程讀一個(gè)共同的數(shù)據(jù)結(jié)構(gòu),寫操作不是原子操作,讀操作是原子操作