範文齋

位置:首頁 > 職場範文 > 面試

去哪兒網測試面試題

面試6.32K

1.寫一個函數,轉換相對路徑爲絕對路徑,比如:/home/abs/../temp/new/../,輸出路徑爲:/home/temp。

去哪兒網測試面試題

參考代碼:

//寫一個函數,轉換相對路徑爲絕對路徑,比如:/home/abs/../temp/new/../,輸出路徑爲:/home/temp。

int RP2AP(const char* pInStr, char* pOutStr)

{

if (pInStr==NULL || pOutStr==NULL) return 0;

string str = pInStr;

string strTemp;

vectorvec_str;

string strOut=””;

int nPos1;

int nPos2;

nPos1 = (“/”, 0);

if (nPos1<0)

{

return -1;

}

while(1)

{

nPos2 = (“/”, nPos1+1);

if (nPos2>nPos1)

{

strTemp = tr(nPos1, nPos2-nPos1);

//如果不是/..,就放入vector裏

if (strTemp!=”/..”)

vec__back(strTemp);

else//彈出上一個

{

vec_rve(vec_());

vec__back();

vec_rve(vec_());

}

nPos1 = nPos2;

}

else

{

break;

}

}

//循環賦值累加

for (int i=0; i<vec_(); p="" i++)<="">

{

strOut +=vec_str[i];

}

//這裏用strOut.c_str(),要安全一些,有的環境不這樣寫編譯都不過。

memcpy(pOutStr, strOut.c_str(), ());

return 1;

}

int main()

{

int n = 10;

//char a[] = “/home/abs/../temp/new/../”;

char a[] = “/home/abs/temp/new/../”;

char b[256];

memset(b, 0, 256);

int nRet = RP2AP(a, b);

if (nRet ==1 )

cout << b << endl;

system(“pause”);

return 0;

} //寫一個函數,轉換相對路徑爲絕對路徑,比如:/home/abs/../temp/new/../,輸出路徑爲:/home/temp。

int RP2AP(const char* pInStr, char* pOutStr)

{

if (pInStr==NULL || pOutStr==NULL) return 0;

string str = pInStr;

string strTemp;

vectorvec_str;

string strOut=””;

int nPos1;

int nPos2;

nPos1 = (“/”, 0);

if (nPos1<0)

{

return -1;

}

while(1)

{

nPos2 = (“/”, nPos1+1);

if (nPos2>nPos1)

{

strTemp = tr(nPos1, nPos2-nPos1);

//如果不是/..,就放入vector裏

if (strTemp!=”/..”)

vec__back(strTemp);

else//彈出上一個

{

vec_rve(vec_());

vec__back();

vec_rve(vec_());

}

nPos1 = nPos2;

}

else

{

break;

}

}

//循環賦值累加

for (int i=0; i<vec_(); p="" i++)<="">

{

strOut +=vec_str[i];

}

//這裏用strOut.c_str(),要安全一些,有的環境不這樣寫編譯都不過。

memcpy(pOutStr, strOut.c_str(), ());

return 1;

}

int main()

{

int n = 10;

//char a[] = “/home/abs/../temp/new/../”;

char a[] = “/home/abs/temp/new/../”;

char b[256];

memset(b, 0, 256);

int nRet = RP2AP(a, b);

if (nRet ==1 )

cout << b << endl;

system(“pause”);

return 0;

}

2.一個10*10的矩陣(可以理解爲棋盤),隨時生成一組數據填入矩陣,任何一個位置的數字除4進行計算,按餘數着色,餘數爲0着色爲red,1爲blue,2爲green,3爲black,可以理解爲生成4中顏色的棋子放入棋盤,如果存在其中同色五星連珠的情況(規則通五子棋),找出任意一組,輸出5個棋子的位置下標值。

3.

有兩個文件和,請嘗試將他們合併成爲一段文字,並打印出來。

這兩個文件內容如下:

“並不是每個人都需要$(qunar)自己的糧食,$(flight.1)每個人都需要做自己穿的$(flight.2),我們說着別人發明的$(hotel),使用別人發明的數學……我們一直在$(tuan)別人的成果。使用人類的已有經驗和知識$(travel.1)來進行,是一件$(travel.2)的'事情”

flight=也不是:衣服

qunar=種植

hotel=語言

tuan=使用

travel=發明創造:很了不起

4.

一個文件裏有10萬個隨機正整數,按照以下規則能組合出一份新的數據:

A. 如果當前數字能被3整除,那麼它和文件中所有數字(包括自己)兩兩相加後生成一組數字替代自己的位置。

B. 如果不能被3整除,則它只需要乘以二,生成一個數字替代自己的位置。

例如:[3,7,6] 會組合出[6,10,9,14,9,13,12]

再如:[5,12,9,6,2]會組合出[10,17,24,21,18,14,14,21,18,15,11,11,18,15,12,8,4]

寫一個程序找出並打印出新數據的最小的前200個數字。請考慮優化算法複雜度。

5.已知字母序列【d, g, e, c, f, b, o, a】,請實現一個函數針對輸入的一組字符串 input[] = {“bed”, “dog”, “dear”, “eye”},按照字母順序排序並打印。

本例的輸出順序爲:dear, dog, eye, bed。

6.有一萬個北京單身男女向你提交了基本資料,包括:姓名、性別、年齡、星座,寫一段程序嘗試找出他們最匹配的一對。

標籤:面試題 測試