想去面试微软测试工程师的进!
今天去微软面试,地点MLT首先,三天前接到微软的电话面试,问了我关于对数据库事务、存储过程的理解,如何定义存储过程中的变量,还有提到内连接&外连接的区别。语言方面问了C++中,虚函数作用,什么是多态,如何实现。问我是否懂.net开发,我实话实说“不懂”,本人未接触过.net,但那边经理还是教我去公司笔试。
到了公司门口,门卫发个牌,领我到了一个开发经理那里,二话不说,给我三张卷子,全英文的,单面的,题目分五部分,第一部分关于.net,第二部分关于算法实现,两个题,一个简单,一个难点,分别是N!阶乘用递规实现,还有就是“ !OK isthat”把这句句子顺序输出单词之间空格没有规律,输出要按原样。第三部分是智力题,没什么好说,看个人造化了,就是网上传的很多的那种,第四部分是英语能力题,比考四级容易,都是选择题。第五部分是写作,写回信,说一微软的客户电脑出了问题,你是MS工程师给客户回信,要求表现出你的沟通能力。
做完题后给我电话面试的经理先来面我,问了一些电话问的,然后叫我写一个求最大公约数的算法,要求性能好。然后问数据结构方面的问题,给平衡二叉树,满二叉树,完全二叉树作个定义,如果定义不出来,你可以举例子说明。接下来是第二个人来面试。
他问我对测试熟悉还是开发,我当然答:测试。然后他问”如果有一个基于C/S的系统,当有大量客户访问时,速度随着时间不断变慢,你作为测试工程师,会从那些方面入手找问题?“第二个是给出一个图片上传的对话框,有图片大小规定,有格式规定,叫你写出用例。
大致就这些,想到了再补充,希望对大家有帮助。 从面试题看,一直是沿用旧的题目,之前的微软都有,学员们可以上网去好好研究一下。
翻来翻去都是这些题目。 太感谢!
回复 #1 nishuangxi 的帖子
刚才嫌来无事的时候做了下两道编程题目。发现比较第二道第一道更加容易错。第一道有个小陷阱。写惯了c的人都喜欢自加自减运算。那么很有可能写成:int rec(int x)
{
if (x <= 1)
return 1;
else
return (x*rec(x--));
}
或者
int rec(int x)
{
if (x <= 1)
return 1;
else
return (x*rec(--x));
}
但事实上两种写法都是错的。第一种根本算不出结果,第二种--x会影响到乘号左面的x。所以会导致算出的是(n-1)的阶乘所以正确的答案应该是
int rec(int x)
{
if (x <= 1)
return 1;
else
return (x*rec(x-1));
}
[ 本帖最后由 Oh!My 于 2006-11-8 22:20 编辑 ] 嫌来无事再发一下第二道题目的代码。第一眼以为要用堆栈做,仔细一看不是的。那么只有好了,省去写stack class的麻烦。直接逻辑运算插入一个flag判定空格还是单词就ok了。
void str(char a[])
{
int len = 0;
int flag = 1;
int wordlen = 0;
while(a != '\0')
len++;
while(len >= 0)
{
if ((a == ' ' && flag == 1))
{
for(int i = 0; i < wordlen; i++)
cout << a;
wordlen = 0;
flag = 0;
}
if ((a != ' ' && flag == 0))
{
for(int i = 0; i < wordlen; i++)
cout << a;
wordlen = 0;
flag = 1;
}
if (a == ' ')
flag = 0;
else
flag = 1;
wordlen ++;
len --;
}
for(int i = 0; i < wordlen-1; i++)
cout << a[ i ] ;
}
[ 本帖最后由 Oh!My 于 2006-11-9 23:32 编辑 ] 至于那道最大公约数的题目应该用辗转相除法吧.这道题目有点微软作风了.原本就算来个顺序遍历算法复杂度也不过n.比起排序算法来说快太多了. 还是不错嘛,对开发这么了解 最大公约数的求发是应该用转相除法。
我问一下你实现第二个题中的word变量怎么来!
求最大公约数的Euclid法(辗转相除法)
#include <stdio.h>void main()
{
int min, max, curmod;
int a , b;
scanf("%d,%d", &a, &b);
while(a > 1 && b > 1)
{
min = a > b ? b : a;
max = a > b ? a : b;
curmod = max % min;
while (curmod > 0)
{
max = min;
min = curmod;
curmod = max % min;
}
printf("最大公约数是:%d\n", min);
} 不错 不错
回复 #8 nishuangxi 的帖子
循环后面不是每次wordlen都加1么,就这么来的。每次输出一个单词后wordlen再置零。哦,我自己写的时候写word的,放上来为了方便改成了wordlen没有改干净。 补充一个比较经典的问题(至少我是没回答上来):c++一个类能继承几个父类?(回答:多个)C#一个类能继承几个父类?(回答:一个)。(这才是重头戏)为什么C++可以C#不可以?(sdlkfj9 没回答上来)
顺便也麻烦老师们帮忙解答一下。
另:微软好像极其喜欢会C#的人,去之前把C#啃熟一般没什么大问题
最简单的方法
int gcd(int m,int n){
int g;
if(!n)g=m;
else g=gcd(n,m=%n);
return(g);
} 你们对开发这么了解,给我们这些对开发不太了解的测试人员不小的压力
页:
[1]