職位類型:技術(shù)類
面試時(shí)間:2011年10月
招聘公司:迅雷網(wǎng)絡(luò)
題目分為客觀題和主觀題,客觀題答案僅供參考。
一、客觀題
1.下面的程序可以從1....n中隨機(jī)輸出m個(gè)不重復(fù)的數(shù)。請(qǐng)?zhí)羁?/p>
knuth(int n,int m)
{
srand((unsigned int)time(0));
for(int i=0;i
if(__)
{
cout<
__;
}}}
答案分別為:rand()%(n-i) 2.以下prim函數(shù)的功能是分解質(zhì)因數(shù)。請(qǐng)?zhí)羁?br />
void prim(int m,int n) 答案分別為:m%n 和 m/=n 3.下面程序的功能是輸出數(shù)組的全排列。請(qǐng)?zhí)羁?br />
void perm(int list[],int k,int m) 答案分別為:k==m 和 perm(list,k+1,m) 二、主觀題 2.(60分)在8X8的棋盤上分布著n個(gè)騎士,他們想約在某一個(gè)格中聚會(huì)。騎士每天可以像國(guó)際象棋中的馬那樣移動(dòng)一次,可以從中間像8個(gè)方向移動(dòng)(當(dāng)然不能走出棋盤),請(qǐng)計(jì)算n個(gè)騎士的最早聚會(huì)地點(diǎn)和要走多少天。要求盡早聚會(huì),且n個(gè)人走的總步數(shù)最少,先到聚會(huì)地點(diǎn)的騎士可以不再移動(dòng)等待其他的騎士。 從鍵盤輸入n(0
{
if(m>n)
{
while(__)n++;
__;
prim(m,n);
cout<
}
}
{
if(__)
{
copy(list,list+m,ostream_iterator(cout," "));
cout<
return;
}
for(int i=k;i<=m;i++)< p="">
{
swap(&list[k],&list);
__;
swap(&list[k],&list);
}
}
1.(40分)用戶啟動(dòng)迅雷時(shí),服務(wù)器會(huì)以u(píng)id,login_time,logout_time的形式記錄用戶的在線時(shí)間;用戶在使用迅雷下載時(shí),服務(wù)器會(huì)以taskid,start_time,finish_time的形式記錄任務(wù)的開始時(shí)間和結(jié)束時(shí)間。有效下載時(shí)間是指用戶在開始時(shí)間和結(jié)束時(shí)間之間的在線時(shí)間,由于用戶可能在下載的時(shí)候退出迅雷,因此有效下載時(shí)間并非finish_time和start_time之差。假設(shè)登錄記錄保存在login.txt中,每一行代表用戶的上下線記錄;下載記錄保存在task.txt中,每一行代表一個(gè)任務(wù)記錄,記錄的字段之間以空格分開。計(jì)算每個(gè)用戶的有效下載時(shí)間和總在線時(shí)間的比例。注意:請(qǐng)盡量使用STL的數(shù)據(jù)結(jié)構(gòu)和算法