阿里巴巴2016校招筆試題
①、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的對(duì)象,所以,在調(diào)用A中的test之后,虛函數(shù)func()會(huì)調(diào)用繼承類B的函數(shù),而默認(rèn)形參仍然會(huì)使用test所在的類A的形參1,從而輸出B->1。
、凇(shù)學(xué)計(jì)算將1,2,3,......,99,100任意排列成一個(gè)圈,相鄰兩數(shù)的差的絕對(duì)值求和最多為( )
A:100
B:198
C:200
D:500
E:2500
F:5000
答案:F
解析:定義1-50為“小數(shù)”,51-100為“大數(shù)”,將“相鄰元素的差的絕對(duì)值之和”簡(jiǎn)稱“絕差之和”。為了將絕差之和取最大,應(yīng)該避免將“大數(shù)”和“大數(shù)”放在一起。因此,可以考慮間隔排布。形成:1,100,2,99,3,98,4,97……,50,51的.序列。而事實(shí)上,這個(gè)序列即絕差之和最大的序列?墒褂萌缦伦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更接近,所以交換后絕差變小。
因此,無(wú)論如何交換,絕差之和都無(wú)法增大。即原序列的絕差之和是最大的。它形成的絕差序列是99,98,97,96……,2,1,50,這100個(gè)數(shù)的和為5000。
③、計(jì)算機(jī)基礎(chǔ)
如果下列的公式成立:84*148=B6A8。則采用的是( )進(jìn)制表示的。
A:15
B:11
C:12
D:14
E:16
F:以上都不對(duì)
答案:C
解析:1、常規(guī)做法:假定數(shù)值是x進(jìn)制的,則寫出等式:(8x+4)*(x2+4x+8)=11x3+6x2+10x+8,化簡(jiǎn)得到(3x2+6x+2)*(x-12)=0,則x的非負(fù)整數(shù)解為x=12。
2、“啟發(fā)式”做法:在十進(jìn)制體系下,左側(cè)個(gè)位乘積4*8=32;右側(cè)個(gè)位為8,差32-8=24,從而進(jìn)制必然是24的約數(shù)。只有C選項(xiàng)12是24的約數(shù)。
【阿里巴巴2016校招筆試題】相關(guān)文章:
騰訊2016校招筆試題11-06
阿里巴巴視覺(jué)設(shè)計(jì)師的校招面試筆試題11-18
騰訊校招筆試題01-16
騰訊校招筆試題目12-20
網(wǎng)易2015校招筆試題09-09
阿里巴巴綜合筆題11-13
2016騰訊校招技術(shù)類筆試11-28