- 相關(guān)推薦
阿里巴巴校招筆試題
①、C++
以下程序輸出結(jié)果是( )
class A
{
public:
virtual void func(int val = 1)
{
std::cout << "A->" << val << std::endl;
}
virtual void test()
{
func();
}
};
class B:public A
{
public:
void func(int val = 0)
{
std::cout << "B->" << val << std::endl;
}
};
int main(int argc,char* argv[])
{
B*p = new B;
p->test();
return 0;
}
A:A->0
B:B->1
C:A->1
D:B->0
答案:B
解析:由于p指向了繼承類B的對象,所以,在調(diào)用A中的test之后,虛函數(shù)func()會調(diào)用繼承類B的函數(shù),而默認(rèn)形參仍然會使用test所在的類A的形參1,從而輸出B->1,
阿里巴巴校招筆試題
。、、數(shù)學(xué)計算將1,2,3,......,99,100任意排列成一個圈,相鄰兩數(shù)的差的絕對值求和最多為( )
A:100
B:198
C:200
D:500
E:2500
F:5000
答案:F
解析:定義1-50為“小數(shù)”,51-100為“大數(shù)”,將“相鄰元素的差的絕對值之和”簡稱“絕差之和”。為了將絕差之和取最大,應(yīng)該避免將“大數(shù)”和“大數(shù)”放在一起,
資料共享平臺
《阿里巴巴校招筆試題》(http://www.dameics.com)。因此,可以考慮間隔排布。形成:1,100,2,99,3,98,4,97……,50,51的序列。而事實上,這個序列即絕差之和最大的序列?墒褂萌缦證明:1、 如下圖所示:如果將小數(shù)和小數(shù)交換,得到的序列絕差之和不變。將小數(shù)x和y互換。假定交換之前,x和y的相鄰元素分別為a、b和c、d。則交換之前的絕差為:(a-x)+(b-x)+(c-y)+(d-y),交換之后的絕差為:(a-y)+(b-y)+(c-x)+(d-x),二者相等。
2、 如下圖所示:如果將大數(shù)和大數(shù)交換,得到的序列絕差之和不變。將大數(shù)a和b互換。假定交換之前,a和b的相鄰元素分別為x、y和z、w。則交換之前的絕差為:(a-x)+(a-y)+(b-z)+(b-w),交換之后的絕差為:(b-x)+(b-y)+(a-z)+(a-w),二者相等。
3、 如下圖所示:如果將大數(shù)和小數(shù)交換,得到的序列絕差之和必然減小。將小數(shù)a和大數(shù)z互換。假定交換之前,a和z的相鄰元素分別為x、y和b、c。則交換之前的絕差為:(a-x)+(a-y)+(b-z)+(c-z),交換之后的絕差為:|x-z|+|y-z|+|b-a|+|c-a|,由于x、y、z更接近,a、b、c更接近,所以交換后絕差變小。
因此,無論如何交換,絕差之和都無法增大。即原序列的絕差之和是最大的。它形成的絕差序列是99,98,97,96……,2,1,50,這100個數(shù)的和為5000。
③、計算機(jī)基礎(chǔ)
如果下列的公式成立:84*148=B6A8。則采用的是( )進(jìn)制表示的。
A:15
B:11
C:12
D:14
E:16
F:以上都不對
答案:C
解析:1、常規(guī)做法:假定數(shù)值是x進(jìn)制的,則寫出等式:(8x+4)*(x2+4x+8)=11x3+6x2+10x+8,化簡得到(3x2+6x+2)*(x-12)=0,則x的非負(fù)整數(shù)解為x=12。
2、“啟發(fā)式”做法:在十進(jìn)制體系下,左側(cè)個位乘積4*8=32;右側(cè)個位為8,差32-8=24,從而進(jìn)制必然是24的約數(shù)。只有C選項12是24的約數(shù)。
【阿里巴巴校招筆試題】相關(guān)文章:
騰訊校招筆試題08-08
騰訊校招筆試題目08-07
華夏銀行203年校招筆經(jīng)09-05
阿里巴巴筆試題目09-11
阿里巴巴程序筆試題09-28
銀行校招經(jīng)驗匯總10-21
工行校招筆試經(jīng)驗11-07
交行校招筆試經(jīng)驗08-10