发信人: doggy (老三~差人※年复一年), 信区: Career_MS
标 题: MS考经
发信站: BBS 水木清华站 (Sat Nov 13 17:40:11 2004), 站内
刚考完回来,趁热乎回忆一下题目吧。
A组题
1 选择填空题
居然是多选,ft。似乎十几道,开始考基本概念。比如
为什么要使用函数(结构化,可重用之类的)
后来看程序输出或者找错,有一道比较难,我比较犹豫:
struct S {
int i;
int * p;
};
void main()
{
S s;
int * p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
问程序会在哪一行死掉。
最后一行
记
s.i
的地址为
a,s.p
的地址为
b,
即
a = &s.i,b = &s.p, b = a+4
p = &s.i //
则
p = a;
s.p = p // *b = p = a;
s.p[1] = 1 //
即
*(*b + 4) = *(a+4) = *b = 1;
s.p[0] = 2 //
即
**b = *(1)
对地址
0x00000001
赋值非法
还有一题考静态成员变量的,不过我看怎么着结果都一样
int CalcMean(int i)
{
static int s, c;
s+=i; c++;
return s/c;
}
求CalcMeas( CalcMeas(3) )=?
再嵌套几次都一样。
3
还有一个
int calc(int a, int b)
{
if(a >= b)
return (a==b)?a:b;
else
return a+b+calc(++a, --b);
}
问calc(1, 5)等于?
15
还有那个IQ题:三个盒子有一个有宝石,先选一个,
主持人打开一个问改不改的。常上iqdoor版肯定不会有问题
还有一个
abcdef*2=cdefab
cdefab*2=efabcd
每个字母代表一个数字
abcdef=?
2 编程题
2。1 写一个CircularQueue()
2。2 写一个Merge函数。把两个排序的链表合并。
难点是两个链表一个从小到大排,另一个反向。
我是先把反向的转过来再合并的。
3 设计(可用中文)
1 设计一个密码对话框。问如何设计,有什么规范,如何测试等
2 Web搜索引擎测试。
4 是一个测试函数 int atoi( const char * string ) 字符串转换倒一个整数
列举出所有的情况。 可以用中文
5 要用英文做答
5。1 你有什么新奇的想法,最好是软件方面
5。2 让一个员工开发一个功能,但是他不重视。如何搞定。
英语是:我猜是这个意思吧。
How would you convince a developer to add a feature
that the developer does not view as importart?
记性好差
罗马数字共有七个,即
I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。
按照下面三条规则可以表示任意正整数。
重复数次:一个罗马数字重复几次,就表示这个数的几倍。
右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,
表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗
马数字,表示大数字减小数字。但是,左减不能跨越等级。
比如,99不可以用IC表示,用XCIX表示
基本数字Ⅰ、X
、C
中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个,比如40不能用XXXX,而用XL表示
设计一个函数
,
将
100(
包括
100)
以内的整数转换成罗马数字
,
超过
100
不考虑
int
itor(int n,char* buf,int bufLength)
其中,n是要转换的整数,buf是要输出的字符串,bufLength是buf的字符长度
成功,返回0,否则,返回
-1;
比如:
char
buf[256];
result
= itor(n,buf,sizeof(buf));
when
n = 28; result = 0, 输出"XXVIII";
when
n = 72; result = 0, 输出"LXXII";
abcdef*2=cdefab
cdefab*2=efabcd
每个字母代表一个数字,请问
abcdef=?
abcdef*4=efabcd
设
x= abcd, y=ef
那么
(x*100 + y)*4 = y*10000 + x
得到
399*x = y*9996
两边分别除以
7
57 * x = 1428*y
那么
y = 57, x = 1428
拿去验证一下
142857*2 = 285714
1.
Implement a string class in C++ with basic functionality like comparison, concatenation
串联,
input and output. Please also provide some test cases and using scenarios (sample code of using this class).
Please
do not use MFC, STL and other libraries in your implementation.
class String{
public:
String();
String(int n,char c);
String(const char* source);
String(const String& s);
//String& operator=(char* s);
String& operator=(const String& s);
~String();
char& operator[](int i){return a[i];}
const char& operator[](int i) const {return a[i];}//
对常量的索引
.
String& operator+=(const String& s);
int length();
friend istream& operator>>(istream& is, String& s);//
搞清为什么将
>>
设置为友元函数的原因
.
friend String operator+(const String& a,const String& b)
//friend bool operator< (const String& left,const String& right);
friend bool operator> (const String& left, const String& right);//
下面三个运算符都没必要设成友元函数
,
这里是为了简单
.
friend bool operator== (const String& left, const String& right);
friend bool operator!= (const String& left, const String& right);
private:
char* a;
int size;
};
2.
Implement a single-direction linked list sorting algorithm. Please first define the data structure of linked list and then implement the sorting algorithm.
3.
(Optional) what is your understanding of web, HTML and XML? Please don't write too much content, feel free to use bullets.
以下题目请注意错误处理:
1、用非递归算法实现求N个数的最大公约数
2、设计一数据结构,实现对单词(限于a到z的26个字母)的存储,并可实现查询,如输入"ab",则返回所有以ab开头的单词.