北京中軟常見筆試題和面試題答案

思而思學(xué)網(wǎng)

1.不許用中間變量,把String ABCDE 倒轉(zhuǎn)

2.10000個(gè)數(shù)求第2大的數(shù),不許用排序算法.

3.排序算法的測試用例

我的答案:

1.

1. include "stdafx.h"

1. include

1. include

using namespace std;

int _tmain(int argc, _TCHAR argv[])

{

char ps = new char[15];

strcpy_s(ps,15,"I am yuchifang");

cout<<"before reverse:"<

cout<

int i = 0;

int j = 13;

while(i

{

ps[i] = ps[i]+ps[j];

ps[j] = ps[i]-ps[j];

ps[i] = ps[i]-ps[j];

i++;

j--;

}

cout<<"after reverse"<

cout<

return 0;

}

這是我在中軟國際面試的一些題目,看你會嗎?

1、Java中的屬性和字段有什么區(qū)別? --這個(gè)是當(dāng)時(shí)考我的一道題,我不會啊!!!!!!!!!

2、C/C++你更熟悉那個(gè)?C++中的虛函數(shù)用在什么地方?JAVA中的虛函數(shù)呢?(我沒記得Java中還有這個(gè))

3、你對數(shù)據(jù)庫中存儲過程了解多少?說說。

4、假如微軟給你500萬美元項(xiàng)目經(jīng)費(fèi),你怎么利用它?

5、你對考研是什么態(tài)度?

6、你對加班是什么態(tài)度? 這個(gè)答案項(xiàng)目經(jīng)理說出來后我感覺太現(xiàn)實(shí)了,你猜他怎么說的?和IT人有關(guān)的

7、Why do you …… ICS&S? (我忘具體怎么說的了,大意就是問你為何要來中軟國際?人家可是用全英語問的,說的挺快的,幸好我聽懂一點(diǎn))

問題太多了,大多是技術(shù)問題,不過都和知識要點(diǎn)有關(guān),不考太難的太復(fù)雜的,不過我還是大部分不會啊!!!英語會讓你就自己喜歡的方向作簡介呢。難,要我說就完了。

先想出這多了,下次再寫,技術(shù)問題好多,有空把筆試題給大家看看,唉!

、、、、、、、、、、、、、、、、、、、、、、

題目為寫算法生成隨機(jī)4位數(shù),要求每位數(shù)字不同.

Solution:

有個(gè)隱含條件,即第一個(gè)數(shù)字不能為0.  以下是我初步的javascript解法:

function rand4(){

var arr = new Array();

var index = 0;

var tempNum;

while(index<4){

tempNum = Math.round(Math.random()9);

if(!(index==0 && tempNum==0)){

//hold point

if(arr[tempNum]== null){

arr[tempNum] = tempNum;

++index;

}

}

}

var ret = 0;

for(var i in arr){

if (ret != 0){

ret = 10;

}

ret += parseInt(i);

} alert(ret);

return ret;

}

我相信會編程的人都會寫出這個(gè)算法. 基本上是很普通的.這個(gè)算法有個(gè)不愉快的地方就是hold point那塊,成功率為100%(第一次),90%(第二次),80%(第三次),70%(第四次),越來越低,不過只要不低于50%,程序效率還不會打折扣.

以下是我的第二種寫法,用空間換了點(diǎn)時(shí)間,用C++語言寫的:

1. include

1. include

using namespace std;

class Rand4{

private:

int a[10];

int getNum(int index){

while(a[index]==-1){

++index;

index %= 10;

}

int ret = a[index];

a[index] = -1;

return ret;

};

void init(){

for(int i=0;i<10;++i){

a[i] = i;

}

};

public:

int Next(){

init();

int ret = (rand()%10) 1000;

int index = 100;

int time = 3;

while(time>0){

ret += getNum((rand()%10))index;

index /= 10;

--time;

}

return ret;

};

};

int main(int argc, char argv[])

{

Rand4 r4;

cout<

cout<

cout<

system("PAUSE");

return 0;

}

此法的時(shí)間復(fù)雜度為正宗的O(n),空間開銷(不包含調(diào)用庫函數(shù)的)就比前一個(gè)例子多了些.

此法在n取m的隨機(jī)計(jì)算中,m從0一直到趨近于n, 效率都是不變的.

其他的高效方法暫時(shí)還沒有想出.

熱門推薦

最新文章