阿里巴巴2016校招筆試題
①、C++
以下程序輸出結果是( )
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的對象,所以,在調用A中的test之后,虛函數(shù)func()會調用繼承類B的函數(shù),而默認形參仍然會使用test所在的類A的形參1,從而輸出B->1。
②、數(shù)學計算將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ù)”,將“相鄰元素的差的絕對值之和”簡稱“絕差之和”。為了將絕差之和取最大,應該避免將“大數(shù)”和“大數(shù)”放在一起。因此,可以考慮間隔排布。形成:1,100,2,99,3,98,4,97……,50,51的.序列。而事實上,這個序列即絕差之和最大的序列?墒褂萌缦伦C明:
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。
、邸⒂嬎銠C基礎
如果下列的公式成立:84*148=B6A8。則采用的是( )進制表示的。
A:15
B:11
C:12
D:14
E:16
F:以上都不對
答案:C
解析:1、常規(guī)做法:假定數(shù)值是x進制的,則寫出等式:(8x+4)*(x2+4x+8)=11x3+6x2+10x+8,化簡得到(3x2+6x+2)*(x-12)=0,則x的非負整數(shù)解為x=12。
2、“啟發(fā)式”做法:在十進制體系下,左側個位乘積4*8=32;右側個位為8,差32-8=24,從而進制必然是24的約數(shù)。只有C選項12是24的約數(shù)。
【阿里巴巴2016校招筆試題】相關文章:
騰訊2016校招筆試題11-06
阿里巴巴視覺設計師的校招面試筆試題11-18
騰訊校招筆試題01-16
騰訊校招筆試題目12-20
網易2015校招筆試題09-09
阿里巴巴綜合筆題11-13
2016銀行校招面試英語問題09-25
2016騰訊校招技術類筆試11-28