标 题: Re: 微软2003笔试
发信站: 我爱南开站 (Thu Oct 23 01:14:44 2003)
转信站: BMY!news.tiaozhan.com!news.happynet.org!NanKai
【 在 vivifyinger (爱家) 的大作中提到: 】
MS China 2003 校园招聘一次笔试试题
分三个部分,第一部分IQ测验,5道题,第二部分EQ测试,64道题
,第三部分,写作/翻译
第一部分:(据内部人说一共30道iq题)
1、 7 14 12
4 12 9
6 24 ?
2
、老师
d
的物理测验答案在教室里丢失了,今天那个教室上了
5
堂课,老师
d
上了
3
堂,有可能是
a
、
b
、
c
三个同学盗窃
已知:
1
、
a
上了两堂课
2
、
b
上了三堂课
3
、
c
上了四堂课
4
、
a
、
b
、
c
每个人都上了老师
d
的两堂课
5
、五堂课中,三个人到堂的组合各不相同
6
、老师
d
的课中有一堂,三个人中到了两个,事后证明不是那两个人偷得
问?是谁偷得
3、 a b c d e
* f
__________________
g g g g g g
问,a b c d e f g各市什么数字(不重复)
95238
×
7
=
666666
4、a进行一次C和D之间往返旅行,希望在整个旅行中能够达到60km/h的平均速度,但是
当
他从C到达D的时候发现平均速度只有30km/h,问a应当怎么做才能够使这次往返旅行的平局速度到达60km/h
5图形~~~~~~~
比去年的简单多了 :)
EQ题会问一些个人性格方面的问题,比如你是否易怒~~~~,一共64道
第三部分
应聘SST的会要求用给定的场景写一篇英文的商务文章
应聘TST的会要求作大约300 words的技术文章英译中
我碰到的是EAP的翻译,还有一个朋友碰到了.net framework的翻译,不是很难.
发信人: kevinl (少说,多做), 信区: job
标 题: MSRA的笔试题2(A卷)
发信站: 饮水思源 (2003
年11月16日11:14:14 星期天), 站内信件
#include <stdio.h>
#include <String.h>
class CBuffer
{
char * m_pBuffer;
int m_size;
public:
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的错误。
Allocate
SaveString
不能为
const
If(pText==NULL)
Return;
Allocate(strlen(pText)+1);
Free()
应该是
delete[]
Main
中没有为
buffer1
分配空间,
原因:
(
1
)
const
成员函数表示不会修改数据成员,而
SaveString
做不到,去掉
const
声明
(
2
)
m_pBuffer
指向
NULL
,必须用
Allocte
分配空间才能赋值。
(
3
)
另外需要将
Allocte
成员函数声明为私有成员函数更符合实际
发信人: kevinl (少说,多做), 信区: job
标 题: MSRA笔试题3(A卷)
发信站: 饮水思源 (2003
年11月16日11:22:31 星期天), 站内信件
打印"Welcome MSR Asia"
#include <stdio.h>
#include <string.h>
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);
}
找出程序中的错误。
#include <stdio.h>
#include <string.h>
char * GetName (void)
{
//To return “MSR Asia” String
//char name[]="MSR Asia";
(
1
)
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";
(
2
)
strcat(name,"Welcome ");
//Append a blank char
name[7]=' ';
(
3
)
//Append string to name
char *p=GetName();
(
4
)
strcat(name,p);
free (p);
//print out
printf(name);
}
原因:(
1
)在函数内部定义的变量在函数结束时就清空了,必须动态分配内存
(
2
)字符串赋值语句错误,应该用
strcpy
(
3
)空格位置应该为
7
(
4
)定义一个指针指向动态分配的内存,用完后需用
free
语句释放
发信人: kevinl (少说,多做), 信区: job
标 题: MSRA笔试题4(A卷)
发信站: 饮水思源 (2003
年11月16日12:04:45 星期天), 站内信件
#include <stdio.h>
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?
FuncA called
FuncAB called
FuncBB called
FuncA called
FuncBB called
FuncA called
FuncB called
发信人: kevinl (少说,多做), 信区: job
标 题: MSRA笔试题5(A卷)
发信站: 饮水思源 (2003
年11月16日12:16:21 星期天), 站内信件
#include <stdio.h>
#include <string.h>
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'?
最后运行结果写出来是
XYBCDCBAIBAA
FindSubString
判断回文串,如果是的话,返回其前半段的长度,
//*p1==p1[1]-1
递增
则执行顺序为
BABABA
BA10BA
BA1BBA
BA1BAA