MSRA相關考題

MSRA相關考題

在網上找到了MSRA相關考題,大多是沒有答案的,偶給整理一下,給出偶的答案,要是有錯誤,希望與我交流。

1.打印"Welcome MSR Asia"

#include

#include

char * GetName (void)

{

//To return "MSR Asia" String

char name[]="MSR Asia";

return name;

}

void main(int argc, char* argv[])

{

char name[32];

//Fill in zeros into name

for(int i=0;i<=32;i++)

{

name[i]=''/0'';

}

//copy "Welcome" to name

name="Welcome";

//Append a blank char

name[8]='''';

//Append string to name

strcat(name,GetName());

//print out

printf(name);

}

找出程序中的錯誤。

Solved By Super.Jiju

1. 在char * GetName (void)中,char name[]="MSR Asia”; return name;錯誤在於 name是在棧上面申請內存的,return name的效果是return 棧內存地址的一個copy,當函數調用結束後,name所擁有的內存被釋放,如果想通過返回指向該數組的指針,應該用new/malloc申請內存。

2. 在main函數裏,name[32]在for循環賦值的時候會越界。name[i]=’/0’,如果將字符串複製進數組,應該用strcpy,追加應該用strcat

3. 定義指針指向GetName(),並釋放內存。

修改後程序如下:

#include

#include

#include

char * GetName (void)

{

//To return "MSR Asia" String

char *name=(char *)malloc(strlen("MSR Asia")+1);

strcpy(name,"MSR Asia");

return name;

}

void main(int argc, char* argv[])

{

char name[32];

//Fill in zeros into name

for(int i=0;i<32;i++)

{

name[i]='/0';

}

//copy “Welcome”to name

//name="Welcome";

strcat(name,"Welcome ");

/*Append a blank char

name[8]=' ';

Append string to name*/

char *p=GetName();

strcat(name,p);

//print out

printf(name);

free(p);

}

2. 將空格爲分隔符的字符串逆序打印,但每個token不逆序。例如 "Hello world I am william",那麼打印出的結果爲"william am I world Hello"

C++實現如下:用c語言實現思想類似,查找空格,strcat

#include

#include

using namespace std;

string Inverse(string str)

{

string str1;//return str;

size_t pos1=0,pos2=str.length();

while((pos1=str.find_last_of(" ",pos2))

{

str1+=str.substr(pos1+1,pos2-pos1);

str1+=" ";

pos2=pos1-1;

}

str1+=str.substr(0,str.find_first_of(" "));

return str1;

}

int main()

{

string str;

getline(cin,str);

cout<

system("pause");

return 0;

}

問題:編寫atoi,即將字符串轉爲整型。

參考了被人的代碼,佩服:

#include

#include

using namespace std;

int myatoi(string str)

{

int i;

int val;

for ( i = 0; isspace(str[i]); i++) ;//第i位的爲str第一個非空位

int sign = (str[i] == '-') ? -1 : 1; //判斷首位符合

if('-' == str[i] || '+' == str[i]) i++;

for(val = 0; str[i] != '/0';i++)

{

if( isspace(str[i])) continue;

if(isdigit(str[i]))

{

val = str[i]-'0' + 10*val; //str[i]-'0'即str[i]與'0'位置差

}

}

return val * sign;

}

void main()

{

string str;

getline(cin,str);

cout<

system("pause");

}

1寫出下列算法的時間複雜度。
(1)冒泡排序;

(2)選擇排序;

(3)插入排序;

(4)快速排序;

(5)堆排序;

(6)歸併排序;

123-> O(n^2),456->O(n*log(n))

寫出下列程序在X86上的運行結果。

struct mybitfields

{

unsigned short a : 4;

unsigned short b : 5;

unsigned short c : 7;

}test ;

void main(void)

{

int i;

test.a=2;

test.b=3;

test.c=0;

i=*((short *)&test);

printf("%d/n",i);

}

http://super-jiju.spaces.live.com/blog/cns!806C498DDEE76B61!315.entry

裏面有相關位域的介紹。

0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0

從右到左依次給a,b,c分配4 5 7個位,short佔兩個字節,共16位,那麼賦值後,結構體內應如上圖所示,按照short型讀取信息,所以應該輸出50(110010);由於位域不允許跨兩個字節,因此位域的長度不能大於一個字節的長度,也就是說不能超過8位二進位。即本題中不能超過16位。

寫出下列程序的運行結果。

unsigned int i=3;

cout<

這裏面i佔了32位,unsigned int的取值範圍是0-2^32-1;所以-3用unsigned int表示即爲2^32+2;

寫出下列程序所有可能的運行結果。

int a;

int b;

int c;

void F1()

{

b=a*2;

a=b;

}

void F2()

{

c=a+1;

a=c;

}

void main()

{

a=5;

//Start F1,F2 in parallel

F1(); F2();

printf("a=%d/n",a);

system("pause");

}

--à5*2+1

對 16 Bits colors的處理,要求:

(1)Byte轉換爲RGB時,保留高5、6bits;

(2)RGB轉換爲Byte時,第2、3位置零。

不會

一個鏈表的操作,注意代碼的健壯和安全性。要求:

(1)增加一個元素;

(2)獲得頭元素;

(3)彈出頭元素(獲得值並刪除)。

僅供參考:

#include

using namespace std;

template

class LisT;

template

class Node

{

friend class LisT;

private:

T data;

Node *link;

public:

Node():link(NULL){};

Node(const T x):data(x),link(NULL){};

};

template

class LisT

{

private:

Node *first,*last;

public:

LisT():first(NULL),last(NULL){};

LisT(const T x);

bool Insert(const T x,const int pos);

T Top(void);

T Pop(void);

};

template

LisT::LisT(const T x)

{

first=last=NULL;

Insert(x,0);

}

template

bool LisT::Insert(const T x, const int pos)

{

Node *p=first;

int k=0;

while(p && klink;k++;}

if(!p && first )

{

cout<<"Invalid postion for Insertation"<

return 0;

}

Node* newnode=new Node(x);

if(!first || pos==0)

{

newnode->link=first;

if(!first) last=newnode;

first=newnode;

}

else

{

newnode->link=p->link;

if(!p->link) last=newnode;

p->link=newnode;

}

return 1;

}

template

T LisT::Top()

{

Node *p=first;

if(first)

return p->data;

else

{

cout<<"List is EMPTY"<

return 0;

}

}

template

T LisT::Pop()

{

Node *p=first;

if(first)

{

T x=p->data;

first=p->link;

delete p;

return x;

}

else

{

cout<<"List is Empty"<

return 0;

}

}

int main()

{

LisT mlist;

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

{

mlist.Insert(i,0);

}

for(int i=1;i<6;++i)

{

cout<

}

cout<

system("pause");

return 0;

}

一個給定的數值由左邊開始升位到右邊第N位,如

0010<<1 == 0100

或者

0001 0011<<4 == 0011 0000

請用C或者C++ 或者其他X86上能運行的程序實現。

不是十分理解題意 JJLKK

#include

#include

using namespace std;

string tran(string str,int n)

{

string temp="";

size_t pos=0,len=str.length();

for(pos=n;pos

{

if(isdigit(str[pos])) temp+=str[pos];

}

temp+=string(n,'0');

return temp;

}

int main()

{

string str;

int n;

cout<<"Input the number"<

getline(cin,str);

cout<<"Input n"<

cin>>n;

str=tran(str,n);

size_t len=str.length();

for(size_t i=0;i

{

cout<

if((i+1)%4==0) cout<<" ";

}

cout<

system("pause");

return 0;

}

In C++ , what does "explicit" mean? what does "protected" mean?

問Calc(9999)的值是多少。

int Calc(unsigned int x)

{

int count=0;

 while(x)

 {

printf("x=%i/n",x);

count++;

x=x&(x-1);

}

 return count;

}

如果x非零,那麼就讓x&(x-1),函數的功能是將某十進制數轉換爲二進制後,其中數字1的個數。x=9999->9998->9996->9992->9984->9728->9216->8192,其中8192是2^13.

10000000000000&0111111111111=0;

可以參考:http://www.msra.cn/Articles/ArticleItem.aspx?Guid=7cfc244e-aaf5-4669-be0a-3a8f32409731

爲什麼返回局部變量的引用不好?

A:局部變量由系統自動分配在棧上,自動管理回收。如果返回引用,可以造成數據丟失。

Stack R,from the top to bottom:{2,3,4,5,6},逐個取出放入Queue Q ,再從Q中逐個取出放入R中,問現在從上到下R中元素的排列?

A:逆序。

一個小猴子邊上有100根香蕉,它要走過50米才能到家,每次它最多搬50根香蕉,(多了就被壓死了),它每走1米就要吃掉一根,請問它最多能把多少根香蕉搬到家裏。 提示:他可以把香蕉放下往返的走,但是必須保證它每走一米都能有香蕉吃。也可以走到n米時,放下一些香蕉,拿着n根香蕉走回去重新搬50根。

A:從最後一步開始,小猴子最多可以攜帶50個香蕉走完最後一段路程,並且這是最有情況。那麼小猴子在搬橡膠的前面過程中,要消耗50個香蕉。前面共有50個香蕉夠它消耗。

本來還有很多題目,懶得繼續做下去了,附上來吧。

1。好多正方體的小木塊,大小相同,每一面都是用同一種顏料塗的要麼是紅的要麼是蘭的

問,最少取出多少塊可以保證2快所有相對應面的顏色一樣,(可以旋轉到所有面一樣的)

2。1024個燈 第一次從左往右開1,3,5。。。。到了那一頭再返回來開1024 1020。。。這樣來回 最後是哪一個燈被開了

3。一個籃球在上面畫黑點,要求所有黑點之間的連線(在球面上的)相同最多有幾個點

n=4,正四面體的四個頂點。

4體育彩票1-100(100個自然數),選取10個數作爲你的彩票,開獎的時候工作人員從1-100中間取出10個,只要你的10個數字在其餘的90個數字內就算中將,問中獎的得機會??還是最少幾張就可以中將?

5有如下幾張牌

黑J 8 4 2 7 3

紅A Q 4

草K Q 5 4 6

方A 5

你取出一張牌把數字告訴A吧花色告訴B

A:我不知道我的是哪一張牌 B:我知道你不知道!過了一會兒A:我知道了!

B:我也知道了!問是哪一張牌 爲什麼?

1、U2合唱團在17分鐘內得趕到演唱會場,途中必需跨過一座橋,四個人從橋的同一 端出發,你得幫助他們到達另一端,天色很暗,而他們只有一隻手電筒。一次同時最多可以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來回橋兩端。手電筒是不能用丟的方式來傳遞的。 四個人的步行速度各不同,若兩人同行則以較慢者的速度爲準。 Bono需花1分鐘過橋 Edge需花2分鐘過橋 Adam需花5分鐘過橋 Larry需花10分鐘過橋 他們要如何在17分鐘內過橋呢?(這是Micrsoft徵聘人員時問的問題,你必須在五分鐘內答出來纔可能獲得聘用。

B+E B A+L E B+E

2、10個紅球,10個白球,兩個相同的包,如何放置才能使任意從一包中拿一個球是

紅球的可能性最高?是多少?

3、三層、四層二叉樹有多少種?

1。前兩層是滿樹,第三層最多4個節點,每個節點都可能是空,也可能不是空。但是不能完全是空,所以有2^4-1種

2。前兩層不是滿樹,即第2層只有一個節點。同上得到2^2-1種,因爲第2層少那一個不一定,所以*2三層:2^4-1 2*(2^2-1)

3。以上兩種情況覆蓋所有3層2叉樹

4。4層類似考慮。根節點至少有一個子樹是3層樹,另一個子樹可以是3層,2層,1層,空所以設3層有x種情況,2層有y種情況(y=3),1層有z種情況(z=1),0層有1種情況,那麼就有:當做子樹爲3層,有x*(x y z 1)種情況,同理右子樹也是一樣,但是有重複計算,

即左右子樹都是3層的時候,所以總的情況應該是2*(x*(x y z 1))-x*x

?、

1——100000數列按一定順序排列,有一個數字排錯,如何糾錯?寫出最好方法。兩個數字呢?一個數字錯就順序掃描,相鄰元素比較,1和2比較,3和4比較。。。直到發現出錯元素,把它插入合適的位置兩個出錯則兩步,第一步同上,找到2個不合順序的對就把這兩個插入合適位置,就至少糾正了一個錯。再掃描一遍,則可以完全糾正。如果第一步沒有發現錯誤順序,就證明是

出錯的兩個相鄰,是一對,則2和3結合,4和5...

#include

#include

int FindSubString(char* pch)

{

int count=0;

char* p1=pch;

while(*p1!=''/0'')

{

if(*p1==p1[1]-1)

{

p1 ;

count ;

}

else

{

break;

}

}

int count2=count;

while(*p1!=''/0'')

{

if(*p1!==p1[1] 1)

{

p1 ;

count2--;

}

else

{

break;

}

if(count2==0)

{return count;

return 0;

}

void ModifyString(char* pText)

{

char* p1=pText;

char* p2=p1;

while(*p1!=''/0'')

{

int count=FindSubString(p1);

if(count>0)

{

*p2 =*p1;

sprintf(p2,"%i",count);

while(*p2!=''/0'')

{

p2 ;

}

p1 =count count 1;

}

else

{

*p2 =*p1 ;

}

}

void main(void)

{

char text[32]="XYBCDCBABABA";

ModifyString(text);

printf(text);

}

In the main() function, after ModifyString(text) is called, what''s the value

of ''text''?

Algorithms

* What''s the difference between a linked list and an array?

* Implement an algorithm to sort a linked list. Why did you pick the method you did?

* Implement an algorithm to sort an array. Why did you pick the method you did?

* Implement strstr() (or some other string library function).

* Reverse a string. Optimize for speed. Optimize for space.

* Count the number of set bits in a number. Now optimize for speed. Now optimize for size.

* How would you find a cycle in a linked list?

* Give me an algorithm to shuffle a deck of cards, given that the cards are stored in an array of ints.

* Write a function that takes in a string parameter and checks to see whether or not it is an integer, and if it is then return the integer value.

* Write a function to print all of the permutations of a string.

* Implement malloc.

* Write a function to print the Fibonacci numbers.

* Write a function to copy two strings, A and B. The last few bytes of string A overlap the first few bytes of string B.

* How would you print out the data in a binary tree, level by level,

starting at the top?

Applications

* How can computer technology be integrated in an elevator system for a

hundred story office building?

How do you optimize for availability? How would variation of traffic over

a typical work week or floor or time of day affect this?

* How would you redesign an ATM?

* Suppose we wanted to run a microwave oven from the computer. What kind of

software would you write to do this?

* How would you design a coffee-machine for an automobile.

Thinkers

* How are M&Ms made?

* If you had to learn a new computer language, how would you go about doing

it?

* If MS told you we were willing to invest $5 million in a start up of your

choice, what business would you start? Why?

* If you could gather all of the computer manufacturers in the world

together into one room and then tell them one thing that they wouled be compelled to do,what would it be?

* Explain a scenario for testing a salt shaker.

* If you are going to receive an award in 5 years, what is it for and who

is the audience?

* How would you explain how to use Microsoft Excel to your grandma?

* Why is it that when you turn on the hot water in any hotel, for example,

the hot water comes pouring out almost instantaneously?

#include

class A

{

public:

void FuncA()

{

printf("FuncA called/n");

}

virtual void FuncB()

{

printf("FuncB called/n");

}

};

class B: public A

{

public:

void FuncA()

{

A::FuncA();

printf("FuncAB called/n");

}

virtual void FuncB()

{

printf("FuncBB called/n");

}

};

void main(void)

{

B b;

A *pa;

pa=&b;

A *pa2=new A;

b.FuncA();

b.FuncB();

pa->FuncA();

pa->FuncB();

pa2->FuncA();

pa2->FuncB();

delete pa2;

}

What is the output of the above program?

#include

#include

class CBuffer

{

char * m_pBuffer;

int m_size;

publc:

CBuffer()

{

m_pBuffer=NULL;

}

~CBuffer()

{

Free();

}

void Allocte(int size)

{

m_size=size;

m_pBuffer= new char[size];

}

private:

void Free()

{

if(m_pBuffer!=NULL)

{

delete m_pBuffer;

m_pBuffer=NULL;

}

}

public:

void SaveString(const char* pText) const

{

strcpy(m_pBuffer, pText);

char* GetBuffer() const

{

return m_pBuffer;

}

};

void main (int argc, char* argv[])

{

cBuffer buffer1;

buffer1.SaveString("Microsoft");

printf(buffer1.GetBuffer());

}

找出Allocate, SaveString, main的錯誤。

一.最基本題型(說明:此類題型比較簡單)

1. 1到100有多少個9

2. 連續整數之和爲1000的共有幾組

3. U2合唱團在17分鐘內得趕到演唱會場,途中必需跨過一座橋,四個人從橋的

同一端出發,你得幫助他們到達另一端,天色很暗,而他們只有一隻手電筒。

一次同時最多可以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就

得有人把手電筒帶來帶去,來回橋兩端。手電筒是不能用丟的方式來傳遞的。

四個人的步行速度各不同,若兩人同行則以較慢者的速度爲準。 Bono需花1

分鐘過橋 Edge需花2分鐘過橋 Adam需花5分鐘過橋 Larry需花10分鐘過橋

他們要如何在17分鐘內過橋呢?(這是Micrsoft徵聘人員時問的問題,你必須

在五分鐘內答出來纔可能獲得聘用)。

4. 說有一份遺產3500元一個女人的老公留下來的,如果這個女人生的是兒子那麼她將分到她兒子的一半,如果是女兒,他將分得她女兒的2倍,如果這個女人生了一對,一男一女,問各得多少遺產?

5. 老師d的物理測驗答案在教室裏丟失了,今天那個教室上了5堂課,老師d上了3

堂,有可能是a、b、c三個同學盜竊

已知: 1、a上了兩堂課

2、b上了三堂課

3、c上了四堂課

4、a、b、c每個人都上了老師d的兩堂課

5、五堂課中,三個人到堂的組合各不相同

6、老師d的課中有一堂,三個人中到了兩個,事後證明不是那兩個人偷得

問?是誰偷得

6. a b c d e

* f

__________________

=g g g g g g

問,a b c d e f g各是什麼數字(不重複)

7. a進行一次C和D之間往返旅行,希望在整個旅行中能夠達到60km/h的平均速度,但是當他從C到達D的時候發現平均速度只有30km/h,問a應當怎麼做才能夠使這次往返旅行的平局速度到達60km/h

8. 燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?

9. 你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?

10. 如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩隻提捅形狀上下都不均勻,問你如何才能準確稱出4公升的水?

11. 一個岔路口分別通向誠實國和說謊國。來了兩個人,已知一個是誠實國的,另一個是說謊國的。誠實國永遠說實話,說謊國永遠說謊話。現在你要去說謊國,但不知道應該走哪條路,需要問這兩個人。請問應該怎麼問?

12. 12個球一個天平,現知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球。13個呢?

13.在9個點上畫10條直線,要求每條直線上至少有三個點?

14.在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別是什麼時間?你怎樣算出來的?

二.沒有答案型(說明:這些題顯然不是考你智力。而考的是你的反應能力。 這種題大多數沒有答案,但是要看你的反應嘍!)

1.爲什麼下水道的蓋子是圓的?

2.中國有多少輛汽車?

3.將汽車鑰匙插入車門,向哪個方向旋轉就可以打開車鎖?

4.如果你要去掉中國的34個省(含自治區、直轄市和港澳特區及臺灣省)中的任何一個,你會去掉哪一個,爲什麼?

5.多少個加油站才能滿足中國的所有汽車?

6.想象你站在鏡子前,請問,爲什麼鏡子中的影象可以顛倒左右,卻不能顛倒上下?

7.爲什麼在任何旅館裏,你打開熱水,熱水都會瞬間傾瀉而出?

8.你怎樣將Excel的用法解釋給你的奶奶聽?

9.你怎樣重新改進和設計一個ATM銀行自動取款機?

10.如果你不得不重新學習一種新的計算機語言,你打算怎樣着手來開始?

11.如果你的生涯規劃中打算在5年內受到獎勵,那獲取該項獎勵的動機是什麼?

12.如果微軟告訴你,我們打算投資五百萬美元來啓動你的投資計劃,你將開始什麼樣商業計劃?爲什麼?

13.如果你能夠將全世界的電腦廠商集合在一個辦公室裏,然後告訴他們將被強迫做一件事,那件事將是什麼?

三.難題(說明:這類題有一定難度,如果得不到答案,也不能說明什麼。 如果你想到了解題思路,那麼答案馬上就能出來。如果想不到思路, 那麼......就別想解出來了。)

1.你讓工人爲你工作7天,回報是一根金條,這個金條平分成相連的7段,你必須在每天結束的時候給他們一段金條。如果只允許你兩次把金條弄斷,你如何給你的工人付費?

2.有一輛火車以每小時15公里的速度離開北京直奔廣州,同時另一輛火車每小時20公里的速度從廣州開往北京。如果有一隻鳥,以30公里每小時的速度和兩輛火車同時啓動,從北京出發,碰到另一輛車後就向相反的方向返回去飛,就這樣依次在兩輛火車之間來回地飛,直到兩輛火車相遇。請問,這隻鳥共飛行了多長的距離?

3.你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被污染的藥丸是沒被污染的藥丸的重量+1。只稱量一次,如何判斷哪個罐子的藥被污染了?

4.門外三個開關分別對應室內三盞燈,線路良好,在門外控制開關時候不能看到室內燈的情況,現在只允許進門一次,確定開關和燈的對應關係?

5.人民幣爲什麼只有1、2、5、10的面值?

6.你有兩個罐子以及50個紅色彈球和50個藍色彈球,隨機選出一個罐子,隨機選出一個彈球放入罐子,怎麼給出紅色彈球最大的選中機會?在你的計劃裏,得到紅球的機率是多少?

四.超難題(說明:如果你是第一次看到這種題,並且以前從來沒有見過類似的題型,並且能夠在半個小時之內做出答案。只能說明你的智力超常......)

第一題 五個海盜搶到了100顆寶石,每一顆都一樣大小和價值連城。

他們決定這麼分:

抽籤決定自己的號碼(1、2、3、4、5)

首先,由1號提出分配方案,然後大家表決,當且僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔進大海喂鯊魚如果1號死後,再由2號提出分配方案,然後剩下的4人進行表決,當且僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔入大海喂鯊魚

依此類推

條件:每個海盜都是很聰明的人,都能很理智地做出判斷,從而做出選擇。

問題:第一個海盜提出怎樣的分配方案才能使自己的收益最大化?

第二題 . 一道關於飛機加油的問題,已知:

每個飛機只有一個油箱,飛機之間可以相互加油(注意是相互,沒有加油機) 一箱油可供一架飛機繞地球飛半圈,問題: 爲使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?

(所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場)

五.主觀題(說明:在以後的工作過程中,我們可定會犯這樣那樣的錯誤。 既然錯誤已經釀成,損失在所難免,我們只能想辦法把損失減少到最小。 如果能巧妙地回答出這些問題,再發生錯誤的情況下。能讓客戶有最少的抱怨,公司有最少的損失。)

1.某手機廠家由於設計失誤,有可能造成電池壽命比原來設計的壽命短一半 (不是衝放電時間),解決方案就是免費更換電池或給50元購買該廠家新手機 的折換券。請給所有已購買的用戶寫信告訴解決方案。

2.一高層領導在參觀某博物館時,向博物館館員小王要了一塊明代的城磚作 爲紀念,按國家規定,任何人不得將博物館收藏品變爲私有。博物館館長需要如何寫信給這位領導,將城磚取回。

3.營業員小姐由於工作失誤,將2萬元的筆記本電腦以1.2萬元錯賣給李先生,王小姐的經理怎麼寫信給李先生試圖將錢要回來?

5.

18.一道智力題或者說邏輯題,好多英文單詞不認識,都沒弄懂意思,所以也沒做。有記得的寫出來吧,最好翻譯過來,我還打算做一下呢。雖然很有可能做不出。

有一道好像是說編譯器可以修改type error,的好處或不好。

有一道是什麼regular language和 text free language比較?(有沒有人給我解釋一下這兩個是什麼東東?)

有一道是在編寫代碼是查找錯誤好還是用testing找好?

其他的都不記得了。

Part II 編程(40分鐘)

1. 把一段彙編語言的程序寫成一個C語言函數,不能有go to 和指針。因爲那段彙編我沒看懂,所以也記不得了。那個彙編是我們微原學的彙編,是另一個,不過它有解釋關於它的語句命令。

2.實現以下程序,以方便binary search.

.要有處理錯誤語句

.隊列的分配的大小是固定的MAX_LEN,由第二個參數輸入

.不能複製隊列

insert (int *arr, //隊列

size_l len, // 隊列大小

size_l count, //隊列元素的數目

int varl //要處理的數據

)返回插入數據的索引

remove(int *arr,size_l len,size_l count,int varl)返回刪除元素的索引

search(int *arr,size_l len,size_l count,int varl)返回搜索道元素的索引

Part III Design(20分鐘)

1.如果給你分配一個任務,做一個新版本的IE瀏覽器的一個功能,可能是搜索功能、用戶界面,你將如何design,development,test

2.不記得

Part IV Testing(30分鐘)

1。給你一個函數,你如何測試它,函數是strcmp(char* str1,char* str2)

2.給你一個DVD Play,你如何測試它?如果測有隻有一定的時間,你首先測試哪一步?爲什麼?

Part V. Writing(20分鐘)

在過去的這些年,你遇到了哪一個最大的困難,你是如何解決它的?你是單獨做的還是和別人一起做的決定?爲什麼做這個決定?現在the output如何?

5 回覆 :微軟筆試面試題集錦

1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?

答:先取三根繩子(A,B,C),同時點燃A的兩端和B的一端,當A燒完後,熄滅B並點燃C的兩端.等C燒完再點燃B的兩端.

2.你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?

答:4個

3.如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩隻提捅形狀上下都不均勻,問你如何才能準確稱出4公升的水?(40秒-3分鐘)

答:灌滿5公升的桶後,再將水倒滿3公升的桶,再將3公升的桶清空,將剩下的2公升水倒如3公升桶,再灌滿5公升的桶, 將水倒如3公升的桶, 當3公升桶滿時,5公升中剩下的是4公升水.

4.一個岔路口分別通向誠實國和說謊國。來了兩個人,已知一個是誠實國的,另一個是說謊國的。誠實國永遠說實話,說謊國永遠說謊話。現在你要去說謊國,但不知道應該走哪條路,需要問這兩個人。請問應該怎麼問?(20秒-2分鐘)

答: (是不是隻許問每人一個問題啊, 如果是答案就是這樣)

先問第一個: "對不起, 不好意思, 拜託了, 請問這兩條路是不是去不同地方的?"

再問第二個:"狗卵! 哪條路是去說謊國的?"

如果,一答:YES 那麼按照二指出的另一條路走;

如果,一答:NO 那麼按照二指的路走就是了.

5.12個球一個天平,現知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球。13個呢?(注意此題並未說明那個球的重量是輕是重,所以需要仔細考慮)(5分鐘-1小時)

答:先分A,B,C三組,每組四個. 每組編號爲A1,A2,A3,A4;B1,B2,B3,B4;C1,C2,C3,C4;

第一次:稱A,B兩組:IF A==B; 則C爲異常組,第二次取A或B組中任意三球與C1,C2,C3稱:

IF C1+C2+C3==A1+A2+A3 ;第三次稱C4與A1:IF C4>A1,則C4是重球;else C4是輕球

IF C1+C2+C3>A1+A2+A3;第三次稱C1與C2:IF C1==C2,C3是重球;IF C1>C2,C1是重球

else,C2是重球

IF C1+C2+C3C2,C2是輕球

else,C1是輕球

如果第一次:A>B;則C是標準組, 第二次取A1,A2,B1與A3,B2,C1稱,

IF A1+A2+B1==A3+B2+C1;第三次稱B3與B4;IF B3==B4,則A4是重球;IF B3>B4,則B4是輕球;ELSE B3是輕球;

IF A1+A2+B1>A3+B2+C1;第三次稱A1與A2:IF A1==A2,則B2是輕球;IF A1>A2,則A1是重球,ELSE A2是重球;

IF A1+A2+B1C1這種情況.

如果第一次:A

13個球的話,第二次稱時用三重一輕與一重一輕兩個標準球對稱.

7.在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別是什麼時間?你怎樣算出來的?(5分鐘-15分鐘)

答:25次.0時0分0秒,1時五分五秒,2時10分十秒.以此類推~~

1.你讓工人爲你工作7天,回報是一根金條,這個金條平分成相連的7段,你必須在每天結束的時候給他們一段金條。如果只允許你兩次把金條弄斷,你如何給你的工人付費?

答:分成1/7一塊,2/7一塊,4/7一塊;第一天給工人1/7那塊,第二天給他2/7那塊,他找你1/7塊~~~~以次類推.

2.有一輛火車以每小時15公里的速度離開北京直奔廣州,同時另一輛火車每小時20公里的速度從廣州開往北京。如果有一隻鳥,以30公里每小時的 速度和兩輛火車同時啓動,從北京出發,碰到另一輛車後就向相反的方向返回去飛,就這樣依次在兩輛火車之間來回地飛,直到兩輛火車相遇。請問,這隻鳥共飛行 了多長的距離?

答: 也就是說在那兩輛火車相遇之前那隻傻鳥是飛個不停的,如果設北京到廣州是N公里, 則 (N/15+20)*30,也就是說那鳥飛了6/7倍北京到廣州的距離.

3.你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被污染的藥丸是沒被污染的藥丸的重量+1。只稱量一次,如何判斷哪個罐子的藥被污染了?

答:取第一個罐子的一個藥丸加上第二個罐子的兩個藥丸與第三個罐子的三個藥丸對稱,如果天平水平則被污染的是四號藥罐,如果天平傾斜了三格則是第三號藥罐,如傾斜了兩格則是兩號,ELSE 一號. (也許哦)

4.門外三個開關分別對應室內三盞燈,線路良好,在門外控制開關時候不能看到室內燈的情況,現在只允許進門一次,確定開關和燈的對應關係?

答:

可以這樣: 把一個燈開一段時間後, 再打開第二個燈, 進門,用手摸一下,很燙的那個對應第一次開的,不燙的對應第二次開的,不亮的對應第三個.

5.人民幣爲什麼只有1、2、5、10的面值?

答:因爲這是能夠組合成100以內任何數的最小張數

6.你有兩個罐子以及50個紅色彈球和50個藍色彈球,隨機選出一個罐子, 隨機選出一個彈球放入罐子,怎麼給出紅色彈球最大的選中機會?在你的計劃裏,得到紅球的機率是多少?

答:我的方案是:所有藍球先裝罐,再隨機取沒有裝罐的球,得到紅球的機率是100%!!!(哈哈是不是瘋了~)

同時起飛三架,到1/8的地方時一架把油給另外兩架加滿,自己剛好夠返程,到達1/4處時一架把油給另一架加滿,自己也是剛好返程.最後一架飛機 飛總路程的1/2,到達3/4處時派一架飛機去接,平分油料,飛到7/8處時油耗盡,派另一架去接,平分油料,剛好飛完餘下的路程.所以一共起飛5架次.

發佈了53 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章