2016年阿里巴巴校招活動開始前,趕緊看看下面2015年的筆試題目吧。
阿里巴巴(中國電子商務(wù)公司) 即 阿里巴巴集團(tuán) 。 阿里巴巴集團(tuán)經(jīng)營多元化的互聯(lián)網(wǎng)業(yè)務(wù),致力為全球所有人創(chuàng)造便捷的交易渠道。自成立以來,阿里巴巴集團(tuán)建立了領(lǐng)先的消費(fèi)者電子商務(wù)、網(wǎng)上支付、B2B網(wǎng)上交易市場及云計(jì)算業(yè)務(wù),近幾年更積極開拓?zé)o線應(yīng)用、手機(jī)操作系統(tǒng)和互聯(lián)網(wǎng)電視等領(lǐng)域。
一、單選(10×2'+10× 3' ,選錯(cuò)倒扣1分)
1.假設(shè)一個(gè)主機(jī)ip為192.168.5.121,子網(wǎng)掩碼為255.255.255.248,則該主機(jī)的網(wǎng)絡(luò)號部分(包括子網(wǎng)號部分)為——
A.192.168.5.12 B 192.168.5.121C 192.168.5.120D 192.168.5.32
【知識點(diǎn)】網(wǎng)絡(luò)地址劃分相關(guān)
【題目解析】
未做子網(wǎng)劃分的 IP 地址:網(wǎng)絡(luò)號+主機(jī)號。在使用 TCP/IP 協(xié)議的兩臺計(jì)算機(jī)之間進(jìn)行通信時(shí),我們通過將本機(jī)的子網(wǎng)掩碼與接受方主機(jī)的 IP 地址進(jìn)行 ' 與 '運(yùn)算,即可得到目標(biāo)主機(jī)所在的網(wǎng)絡(luò)號,又由于每臺主機(jī)在配置 TCP/IP 協(xié)議時(shí)都設(shè)置了一個(gè)本機(jī) IP 地址與子網(wǎng)掩碼,所以可以知道本機(jī)所在的網(wǎng)絡(luò)號。
通過比較這兩個(gè)網(wǎng)絡(luò)號,就可以知道接受方主機(jī)是否在本網(wǎng)絡(luò)上。如果網(wǎng)絡(luò)號相同,表明接受方在本網(wǎng)絡(luò)上,那么可以通過相關(guān)的協(xié)議把數(shù)據(jù)包直接發(fā)送到目標(biāo)主 機(jī);如果網(wǎng)絡(luò)號不同,表明目標(biāo)主機(jī)在遠(yuǎn)程網(wǎng)絡(luò)上,那么數(shù)據(jù)包將會發(fā)送給本網(wǎng)絡(luò)上的路由器,由路由器將數(shù)據(jù)包發(fā)送到其他網(wǎng)絡(luò),直至到達(dá)目的地。在這個(gè)過程中 你可以看到,子網(wǎng)掩碼是不可或缺的!
【參考答案】C
2.64位系統(tǒng)上,定義的變量int *a[2][3]占據(jù)的——字節(jié)
A 4 B 12 C 24 D 48
【知識點(diǎn)】基本類型在不同的系統(tǒng)上所占的內(nèi)存大小
【題目解析】在64位系統(tǒng)上,一個(gè)指針占8個(gè)字節(jié)。在32位系統(tǒng)上,一個(gè)指針占4個(gè)字節(jié)。注意無論在32位還是在64位系統(tǒng)占,int均為4個(gè)字節(jié)。
【參考答案】 D
3.Linux中使用df -h/home 和du -sh/home所查看到的已使用的磁盤容量不同,可能的原因是——
A、命令不同,所以結(jié)果肯定不同 B、兩個(gè)命令參數(shù)有問題
C、運(yùn)行中的進(jìn)程打開的文件被刪除導(dǎo)致 D、Linux的特性導(dǎo)致的
【知識點(diǎn)】linux操作系統(tǒng)相關(guān)
【題目解析】df f代表free顯示的剩余可用的內(nèi)存,而du u代表Usage顯示的是磁盤中已用的內(nèi)存。運(yùn)行中的進(jìn)程打開的文件被刪除后,因?yàn)檫M(jìn)程還在運(yùn)行,所以df現(xiàn)實(shí)的free的內(nèi)存不會加上被刪除的文件大 小。而du已使用的內(nèi)存會減去被刪除文件的大小,這一問題導(dǎo)致他們所看到的已使用的磁盤容量不同。當(dāng)我們把打開文件的進(jìn)程kill調(diào),就會發(fā)現(xiàn)這兩個(gè)命令 現(xiàn)實(shí)的磁盤容量基本相同了。
【參考答案】C
4.一個(gè)C語言程序在一臺32位機(jī)器上運(yùn)行。程序中定義了三個(gè)變量xyz,其中x和z是int,y是short。當(dāng)x = 127,y = -9時(shí),執(zhí)行賦值語句 z = x + y后 xyz的值分別是——
A、x = 0000007FH,y = FFF9H,z = 00000076H
B、x = 0000007FH,y = FFF9H,z = FFFF0076H
C、x = 0000007FH,y = FFF7H,z = FFFF0076H
D、x = 0000007FH,y = FFF7H,z = 00000076H
【知識點(diǎn)】補(bǔ)碼反碼之類的基礎(chǔ)知識
【題目解析】無需多言
【參考答案】D
5.有如下數(shù)組定義,int [ ][ ] myArray = new int[3][ ] = { new int [3]{5,6,2},
new int [5]{6,9,7,8,3},
new int [2]{3,2}};
則,myArray[2][2]的值是——
A、9 B、2 C、6 D、越界
【知識點(diǎn)】二維數(shù)組的初始化
【題目解析】new int[3]相當(dāng)于申請了3個(gè)int型指針的空間,緊接著new int[3][ ] = { new int [3]{5,6,2}, new int [5]{6,9,7,8,3},new int [2]{3,2}};則對這三個(gè)Int型的指針進(jìn)行了初始化。第一個(gè)指針指向數(shù)組]{5,6,2},第二個(gè)指針指向數(shù)組{6,9,7,8,3},第三個(gè)指 針指向數(shù)組{3,2}。因此訪問myArray[2][2]的時(shí)候會發(fā)生越界。
【參考答案】 D
6.快速排序的期望運(yùn)行時(shí)間復(fù)雜度是——
A、O(n^2) B、O(nlogn)C、O(n)D、O(2^n)
【知識點(diǎn)】快速排序
【題目解析】無需多言
【參考答案】 B
7.在一個(gè)長度為n的順序表中刪除第i個(gè)元素,要移動——個(gè),如果在第i前插入一個(gè)元素,則后移——個(gè)
A、n-i,n-i+1 B、n-i+1,n-i,C、n-i,n-i,D、n-i+1,n-i+1
【知識點(diǎn)】類似數(shù)組的插入和刪除
【題目解析】無需多言
【參考答案】 A
8.下面C++程序的輸出是 ——
void f(char *x)
{
x++;
*x = 'a';
}
int main()
{
char str[sizeof("hello")];
strcpy(str, "hello");
f(str);
cout << str;
return 0;
}
A、hello B、halloC、alloD、以上都不是
【知識點(diǎn)】字符串
【題目解析】無需多言
【參考答案】 B
9.有以下程序,其執(zhí)行結(jié)果是___
char fun(char x, char y)
{
if(x) return y;
}
int main()
{
int a = '0', b = '1', c = '2';
printf("%c\n", fun(fun(a,b), fun(b,c)));
}
A、函數(shù)調(diào)用出錯(cuò) B、2C、0D、1
【知識點(diǎn)】字符的ASCII碼
【題目解析】int a = '0', b = '1', c = '2',a,b,c獲得的是‘0’,‘1’,‘2’對應(yīng)的ASCII碼
【參考答案】 B
10.當(dāng)n = 6時(shí),下列函數(shù)的返回值是——
int foo(int n)
{
if(n <= 2)
return n;
return foo(n-1) +foo(n-2);
}
A、1 B、8 C、13、 D、21
【知識點(diǎn)】遞歸
【題目解析】f(6) = f(5) + f(4) = f(4) + f(3) + f(3) + f(2) = f(3) + f(2) + 2f(3) + f(2) = 3f(3) + 2f(2) = 13
【參考答案】 C
11.在一臺主流配置的PC機(jī)上,調(diào)用f(35)所需要的時(shí)間大概是——
int f(int x)
{
int s = 0;
while(x-->0) s+=f(x);
return max(s, 1);
}
A、幾毫秒 B、幾秒 C、幾分鐘 D、幾小時(shí)
不會求指教,參考答案D
12.在一棵度為4的樹T中,若有20個(gè)度為4的結(jié)點(diǎn),10個(gè)度為3的結(jié)點(diǎn),1個(gè)度為2的結(jié)點(diǎn),10個(gè)度為1的結(jié)點(diǎn),則樹T的葉子結(jié)點(diǎn)個(gè)數(shù)是——
【知識點(diǎn)】樹節(jié)點(diǎn)的算法
【題目解析】總度數(shù)即為總邊數(shù),總度數(shù) + 1 = 總結(jié)點(diǎn)數(shù),設(shè)有n個(gè)葉子結(jié)點(diǎn),則有 20 * 4 + 10 * 3 + 1 * 2 + 10 * 1 + 1 = 20 + 10 + 1 + 10 + n
【參考答案】 C
13.有堆棧S,按順序ABCD進(jìn)棧,則出棧順序不可能存在的是——
A、DCBA B、BACDC、BADCD、CABD
【知識點(diǎn)】入棧出棧
【題目解析】無需多言
【參考答案】 D
14.使用二分查找在有序數(shù)組a[n]中查找一個(gè)元素x的時(shí)間復(fù)雜度——
A、O(n) B、O(n^2)C、O(logn)D、O(nlogn)
【知識點(diǎn)】二分查找
【題目解析】時(shí)間復(fù)雜度等于樹的高度
【參考答案】 D
15.下圖中標(biāo)出了每條公路上最大的流量,請問,從S到T最大的流量是——
A、46 B、 47 C、54 D、77
不會
參考答案 A
16.一天,有位年輕人來到張老板店花80元買了件原價(jià)160元的紀(jì)念品。 這件禮物成本65元。結(jié)賬時(shí),年輕人掏出100元,張老板當(dāng)時(shí)沒有零錢,就用那100元向隔壁店家換了零錢,找給年輕人20.但是隔壁店家后來發(fā)現(xiàn)那 100是假錢,張老板無奈還了100元。那么張老板在這次交易中損失了多少錢——
A、65 B、85 C、100 D、185
【知識點(diǎn)】智力題
【題目解析】說明:以年輕人的角度想,給了一張假錢,價(jià)值為0,得到了65元的衣服,和找回的20元,總共獲利85元;以隔壁店家角度想,自己雖然得到一張假錢,但是后來張老板又補(bǔ)回來了,不進(jìn)不出;以張老板的角度想,衣服給出去了,又把零錢找給別人了,共虧了85.
【參考答案】 B
17.2^100 mod 7 = _
A、2 B、3 C、4 D、5
【知識點(diǎn)】二項(xiàng)式
【題目解析】2^100 = 2 * (2^3) ^ 33 = 2 * ( 7 + 1) ^ 33,因此2^100 mod 7 = 2
【參考答案】 A
18.某公司在華東和華南兩大區(qū)域開展業(yè)務(wù),年底匯總業(yè)績的時(shí)候發(fā)現(xiàn),兩大區(qū)域的月度客戶轉(zhuǎn)化率(=成為會員的客戶數(shù)/ 訪問店鋪的客戶數(shù))分別提高了10%和5%。以下描述中正確的是——
A、盡管個(gè)子的月度轉(zhuǎn)化率都有提高,但公司的整體月度轉(zhuǎn)化率仍可能降低
B、市場對業(yè)務(wù)認(rèn)可程度提高,越來越多訪問店鋪的客戶成為會員
C、華東區(qū)的客戶更容易被轉(zhuǎn)化,該公司應(yīng)該把業(yè)務(wù)重點(diǎn)放在這個(gè)區(qū)域
D、華南區(qū)的客戶更需要提高轉(zhuǎn)化,該公司應(yīng)該把業(yè)務(wù)重點(diǎn)放在這個(gè)區(qū)域
【知識點(diǎn)】數(shù)學(xué)
【題目詳解】設(shè)華東和華南的訪問店鋪的客戶數(shù)分別為b、d,月初時(shí)會員的客戶數(shù)分別為a、c。假設(shè)月末時(shí),會員數(shù)分別增加為delt1、delt2,訪問店鋪的客戶數(shù)分別delt3,delt4。
分析一下,就知道最后一個(gè)不等式不一定會成立。所以我覺得答案選A
【參考答案】網(wǎng)上很多答案選B,但我覺得選A啊。
19.一次又8個(gè)人參加的網(wǎng)球比賽,根據(jù)選手實(shí)力。分別編號1——8,1號實(shí)力最強(qiáng),而實(shí)力差距小于等于2才有可能爆冷。8人進(jìn)行1/4決賽,勝出的4人繼續(xù)半決賽,直到產(chǎn)生冠軍。問有可能獲得冠軍的編號最大的選手是——
A、4 B、6 C、7 D、8
【知識點(diǎn)】邏輯題
【題目解析】連蒙帶猜,8感覺上就肯定不可能啊。竟然是求可能獲得冠軍編號最大的選手,那么肯定在前面盡量把實(shí)力強(qiáng)的人爆冷淘汰掉。利用這個(gè)想法,7沒有 找到可能成為冠軍的對陣組合。6獲得冠軍的其中一種對陣組合為1-3,2-4, 4-6,7-8. 1-3中3勝出,2-4中4勝出, 4-6中6勝出,7-8中8勝出。接下來3-4中4勝出,7-8中8勝出,那么6-8中6勝出。
【參考答案】 B
20.某國家非常重男輕女,若一戶人家生了一個(gè)女孩,便再要一個(gè),直到生下男孩為止。假設(shè)生男生女概率相等,問平均每戶有幾個(gè)女孩
A、 0.5 B、2/3C、1D、4/3
【知識點(diǎn)】數(shù)學(xué)概率題
【題目解析】我說不出為什么,摘抄網(wǎng)友的解答:兩種思路,直接根據(jù)概率公式計(jì)算求期望,不過算起來可能比較麻煩。第二種思路是,在這里是沒有人工干預(yù)的,生男生女的概率又是相等的,說明每家都會有一個(gè)男孩,則平均每家也可以有一個(gè)女孩。
【參考答案】 C
二、不定向選擇題(完全正確5分,漏選2分,不選0分,多選錯(cuò)選-2分)
21.以下有關(guān)C語言的說法中,錯(cuò)誤的是——
A、內(nèi)存泄露一般是指程序申請了一塊內(nèi)存,使用完后,沒有及時(shí)將這塊內(nèi)存釋放,從而導(dǎo)致程序占用大量內(nèi)存。
B、無法通過malloc(size_t)函數(shù)調(diào)用申請超過該機(jī)器物理內(nèi)存大小的內(nèi)存塊。
C、無法通過內(nèi)存釋放函數(shù)free(void*)直接將某塊已經(jīng)使用完的物理內(nèi)存直接還給操作系統(tǒng)
D、可以通過內(nèi)存分配函數(shù)malloc(size_t)直接申請物理內(nèi)存
【知識點(diǎn)】內(nèi)存泄露,內(nèi)存分配
【題目解析】內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。內(nèi)存泄漏并非指內(nèi)存在物理上的消失,而是應(yīng)用程序分配某段內(nèi)存后,由于設(shè)計(jì)錯(cuò)誤,導(dǎo)致在釋放該段內(nèi)存之前就失去了對該段內(nèi)存的控制,從而造成了內(nèi)存的浪費(fèi)。所以A正確
malloc(size_t)申請到的是虛擬內(nèi)存。虛擬內(nèi)存的話是可能會大于物理內(nèi)存的,所以B錯(cuò)誤。同理D直接申請物理內(nèi)存應(yīng)該是錯(cuò)的。
【參考答案】我只確定BD是錯(cuò)的,網(wǎng)上也有一些答案選BCD
22.下面關(guān)于二叉搜索樹的正確說法包括——
A、待刪除結(jié)點(diǎn)左子樹和右子樹時(shí),只能使用左子樹的最大值結(jié)點(diǎn)替換待刪除結(jié)點(diǎn)。
B、給定一棵二叉搜索樹的前序和后序結(jié)果,無法確定這棵二叉樹
C、給定一棵二叉搜索樹,根據(jù)節(jié)點(diǎn)值大小排序所需時(shí)間復(fù)雜度是線性的
D、給定一棵二叉搜索樹,可以在線性時(shí)間復(fù)雜度內(nèi)轉(zhuǎn)化為平衡二叉搜索樹
【知識點(diǎn)】二叉樹
【題目解析】二叉搜索樹是指如果一個(gè)節(jié)點(diǎn)既有左孩子又有右孩子。那么左孩子的所有節(jié)點(diǎn)值都會小于等于根節(jié)點(diǎn),而右孩子所有的節(jié)點(diǎn)值都會大于等于根節(jié)點(diǎn)。刪 除節(jié)點(diǎn)時(shí),如果這個(gè)節(jié)點(diǎn)既有左孩子又有右孩子,那么可是使用左孩子中最大的節(jié)點(diǎn)或者右孩子中最小的節(jié)點(diǎn)替換待刪除的節(jié)點(diǎn),所以A錯(cuò)。再看B選項(xiàng),經(jīng)常做這 種題目啊,已知前序和后序求中序,求中序之前就是確定這棵二叉樹,所以B錯(cuò)。再看選項(xiàng)C,對于一顆二叉搜索樹而言,中序遍歷便可得到已經(jīng)排好序的序列,所 以C對。D選項(xiàng),參考算法導(dǎo)論,D也是對的。
【參考答案】CD
23.被稱為中國雨人的周瑋,僅僅使用1分鐘的時(shí)間就可以對16位數(shù)字開14次方。那么,以下數(shù)字鐘,不可能成為其候選答案的是——
A、11.0 B、12.0C、13.0D、14.0E、15.0
【知識點(diǎn)】數(shù)學(xué)
【題目解析】傻辦法啊,用計(jì)算器算一下。A選項(xiàng)的14次方只有15位,DE選項(xiàng)的14次方是17位。
【參考答案】ADE
24.有3個(gè)包,每個(gè)包里各放了兩個(gè)球。包A里的球都是白色的,包B里的球都是黑色的,包C里的球一黑一白。現(xiàn)隨機(jī)取一個(gè)包,并從中隨機(jī)取一個(gè)球。發(fā)現(xiàn)該球是白色的。那么這個(gè)包里剩下的球也是白色的概率是——
A、0 B、0.33 C、0.5 D、0.66 E、1
【知識點(diǎn)】概率論
【題目解析】從三個(gè)包中任取一個(gè)包,共有3中可能。取一個(gè)球發(fā)現(xiàn)時(shí)白色,包里剩下的球也是白色,那只有從A包里面取了。但是因?yàn)锳包中兩個(gè)白球取出來的順序不同,也是不同的情況,所以結(jié)果是2/3。
【參考答案】D
三、填空與問答
25.某電子眼睛分辨率640*360;(省略一段廢話)。藍(lán)牙4.0最大帶寬24Mbps,請問能否通過該技術(shù)將每秒50幀真彩(24bit)畫面?zhèn)鬏斨了钠聊。如果是,請說明原因,如果否,說明理論上大約多久才能傳送一幀。
【參考答案】每秒傳送50幀(24bit)的數(shù)據(jù),那么待傳送的數(shù)據(jù)量為
640*360*50*24 = 263.671875M,而藍(lán)牙4.0最大帶寬為24Mbps,所以不能。
我們假設(shè)理論上大約X秒才能傳送一幀,根據(jù)前面的分析,可得
640*360*24 = 24 * 1024 * 1024 * X,求出X = 0.22s
26.將N條長度為M的有序鏈表進(jìn)行合并,合并以后的鏈表也保持有序,時(shí)間復(fù)雜度為——
這種題目我都不大會,求指教
27.ABCD四人要在夜里過橋,分別耗時(shí)1、2、5、10分鐘,只有一個(gè)手電筒,并且同時(shí)最多兩人一起過。請安排方案讓四人都過,用時(shí)最短,給出方案。
參考答案:17
28.下列代碼是實(shí)現(xiàn)有序整數(shù)數(shù)組的二分查找,請指出其中的bug。
int binary_search(int *array, int length, int key)
{
int start = 0, end = length - 1;
while (end > start)
{
int middle = (start + end) / 2;
int tmp = array[middle];
if (tmp < key)
start = middle;
else if (tmp > key)
end = middle;
else
return middle;
}
return -1;
}
【參考答案】當(dāng)要查找的數(shù)不存在的時(shí)候,會導(dǎo)致死循環(huán)啊。