出色的實習(xí)經(jīng)驗為你以后的職業(yè)生涯打造一個很好的基礎(chǔ),阿里巴巴的實習(xí)生涯更會為你的求職加分。以下是阿里巴巴2015實習(xí)生筆試,以供參考。
1.有兩個N*N的矩陣A和B,想要在PC上按矩陣乘法基本算法編程實現(xiàn)計算A*B。假設(shè)N較大,本機內(nèi)存也很大,可以存下A、B和結(jié)果矩陣。那么,為了計算速度,A和B在內(nèi)存中應(yīng)該如何存儲(按行存指先存儲第一行,再第二行,直到最后一行;按列存指先存儲第一列,再第二列,直到最后一列)?
A.A按行存,B按行存。
B.A按行存,B按列存。
C.A按列存,B按行存。
D.A按列存,B按列存。
答案:A
想到的是傳統(tǒng)矩陣相乘的方法,時間復(fù)雜度為O(n3 ),但是這不是最優(yōu)的方法,最優(yōu)方法為Strassen矩陣相乘發(fā),時間復(fù)雜度降低為O(n2.81),用分治的思想將矩陣分塊計算,在這個算法中按行存儲更有利。所以正確答案為A。
2.IP數(shù)據(jù)報頭采用()字節(jié)序,在此字節(jié)序下從低地址到高地址0x1234的表示形式為 () 。
A.big_endian,0x12 0x34 0 0
B.little_endian,0x34 0x12 0 0
C.big_endian,0 0 0x12 0x34
D.little_endian, 0 0 0x34 0x12
答案:C
big_endian:高位在低地址;
small-endian:地位在低地址。
3.設(shè)集合A={1,2,3},A上的關(guān)系R={(1,1),(2,2),(2,3),(3,2),(3,3)},則R不具備 ()?
A.自反性
B.傳遞性
C.對稱性
D.反對稱性
答案:D
假設(shè)集合A,以及基于A上的關(guān)系R
自反: 如果a是A的元素,那么是R的元素
反自反: 如果a是A的元素,那么不是R的元素
對稱:如果是R的元素,那么是R的元素
反對稱:如果,是R的元素,那么a,b相等
傳遞:如果,是R的元素,那么是R的元素
4.無鎖化編程有哪些常見方法?
A.針對計數(shù)器,可以使用原子加
B.只有一個生產(chǎn)者和一個消費者,那么就可以做到免鎖訪問環(huán)形緩沖區(qū)(Ring Buffer)
C.RCU(Read-Copy-Update),新舊副本切換機制,對于舊副本可以采用延遲釋放的做法
D.CAS(Compare-and-Swap),如無鎖棧,無鎖隊列等待
答案:D
A 這方法雖然不太好,但是常見
B ProducerConsumerQueue就是這個,到處都是
C linux kernel里面大量使用
D 本質(zhì)上其實就是樂觀鎖,操作起來很困難。。單生產(chǎn)者多消費者或者多生產(chǎn)者單消費者的情況下比較常見,也不容易遇到ABA問題。
5. 以下措施中,不可能改進分布式系統(tǒng)讀寫(IO)性能的有____。
A.網(wǎng)絡(luò)從千兆網(wǎng)升級為萬兆網(wǎng)
B.優(yōu)化調(diào)度系統(tǒng),盡量做到任務(wù)與數(shù)據(jù)相近(Locality)
C.數(shù)據(jù)預(yù)取機制
D.實現(xiàn)異步讀寫機制
答案:D
異步IO就是調(diào)用系統(tǒng)IO來完成實際的IO操作,而不需要應(yīng)用程序自己寫代碼完成IO,每次系統(tǒng)IO完成后給應(yīng)用程序返回一個IO完成的信號,從而實現(xiàn)應(yīng)用程序真的的異步無阻塞式的IO,異步IO可以提高應(yīng)用程序的性能,而對操作系統(tǒng)IO沒什么影響。影響分布式系統(tǒng)讀寫(IO)性能的關(guān)鍵因素應(yīng)該是請求數(shù)據(jù),而數(shù)據(jù)可能在別的機器上,所以ABC都能明顯改善性能。至于D,感覺在非分布式系統(tǒng)上都已經(jīng)出現(xiàn)了,貌似對 分布式系統(tǒng)讀寫(IO)性能的影響不大。