笔试面试题
阅读原文时间:2021年04月21日阅读:1

是申请intern的笔试题,刚刚做完笔试题回来…

1.下面几个平台用什么传递参数
IA32,IA64,ARM,EM64T
2.RISC 机器的特性
3.几种接口类型:FSB,PCI,ISA
和33M,800M,8M配对…(记不清了,反正有compatiable这个词)
4.算cache-hit ratio
5.rtp/rtsp/rtcp的指什么?什么场合应用?
6.cpu取指时,指令不再cache中,也不再内存中,而在辅存中,问这整个过程中硬件和
软件的行为是什么?
7.折半查找的复杂度,证明
8.sizeof()和strlen()的使用.
9.顺序存储结构的优点,散列法的思想是什么?
10.并发进程相关知识
11.下面的程序能编译通过么?
#include
int main(void)
{
unsigned long long a=0xAAAAAAAABBBBBBBB;
unsigned int b=0xCCCCCCCC;
printf(\"you have %d RMA ,right?\\n\";
printf(\"valuea :%lx,valueb :%lx\\n\",a,b);
}
12.汉罗塔算法,不能递归…

13.插入一个usb设备描述驱动自动装载的过程。
--

发信人: miser (大灰狼), 信区: job
标 题: 去神州数码笔试随笔
发信站: 饮水思源 (2004年12月22曰21:59:10 星期三)

交大的ss,去神州数码可以乘855,终点站,再向西走100米左右吧,可以看到神州数码的
大牌子了。
我考的是软件研发,卷子分java和c/c++两部分,如果你只会其中的一部分,我建议你就不
用去了,又累,还可能被bs。我只会做c/c++部分,考了些c++的一些基本概念,数据结构
的基本题(都是选择题)。数据库考了SQL语言中的一些如select,update,join等。大题
目主要考了三道:(1)为什么在编译时其它文件中的定义的函数要用extern c说明
(2)看程序(求输入数的均值)
(3)string类的构造函数,自引用函数,析构函数,重载赋值函数(实际
上和类默认生成的几个函数差不多)
题目还是比较简单的,祝好运。

发信人: GlobalRainy (Dirichlet, Johann Peter Gustav Lejeune), 信区: C
标 题: SAP试题(不完整),作为周末讨论话题吧
发信站: 饮水思源 (2004年03月19曰23:30:13 星期五), 站内信件

1.Below is usual way we find one element in an array:

const int *find1(const int* array, int n, int x)
{
const int* p = array;
for(int i = 0; i < n; i++)
{
if(*p == x)
{
return p;
}
++p;
}
return 0;
}

In this case we have to bear the knowledge of value type \"int\", the size of
array, even the existence of an array. Would you re-write it using template
to eliminate all these dependencies?

2. Assume you have a class like

class erp
{
HR* m_hr;
FI* m_fi;
public:
erp()
{
m_hr = new HR();
m_fi = new FI();
}
~erp()
{
}
};

if \"new FI()\" failed in the constructor, how can you detect this problem and
release the properly allocated member pointer m_hr?

3. Check the class and variable definition below:

#include
#include
using namespace std;
class Base
{
public:
Base() { cout<<\"Base-ctor\"<<endl; }
~Base() { cout<<\"Base-dtor\"<<endl; }
virtual void f(int) { cout<<\"Base::f(int)\"<<endl; }
virtual void f(double) {cout<<\"Base::f(double)\"<<endl; }
virtual void g(int i = 10) {cout<<\"Base::g()\"<<i<<endl; }
};

class Derived: public Base
{
public:
Derived() { cout<<\"Derived-ctor\"< { cout<<\"Derived::f(complex)\"<<endl; }
virtual void g(int i = 20) {cout<<\"Derived::g()\"<<i<<endl; }
};

Base b;
Derived d;

Base* pb = new Derived;
Select the correct one from the four choices:
Cout<f(1.0);
A.Derived::f(complex) B.Base::f(double)
pb->g();
A.Base::g() 10 B.Base::g() 20
C.Derived::g() 10 D.Derived::g() 20

4.Implement the simplest singleton pattern(initialize if necessary).

5.Name three sort algorithms you are familiar with. Write out the correct
order by the average time complexity.

6.Write code to sort a duplex direction linklist. The node T has overridden
the comparision operators.

发信人: xiaokan (笑看风云), 信区: C
标 题: Re: SAP试题(不完整),作为周末讨论话题吧
发信站: 饮水思源 (2004年03月20曰11:51:48 星期六), 站内信件

1、Use template function
template
InputIter find_imp (InputIter begin, InputIter end, const T& ct)
{
InputIter iter = begin;
while ((iter != end) &&
((*iter) != ct)) { iter++; }
return iter;
}

2、2 methods can take. One is to use try catch idiom, the other
is to use intelligent pointers, such as auto_ptr. I prefer
auto_ptr.

3、Have been discussed a lot.

4、See GoF's . Another recommendable different
implemented example, ACE_Singleton, u can look up ACE library

5、Have been discussed a lot.

6、Have been discussed a lot.

【 在 GlobalRainy (Dirichlet, Johann Peter Gustav Lejeune) 的大作中提到: 】
: 1.Below is usual way we find one element in an array:
: const int *find1(const int* array, int n, int x)
: {
: const int* p = array;
: for(int i = 0; i < n; i++)
: {
: if(*p == x)
: {
: return p;
: }
: ……………..(以下省略)

发信人: cokio (慢慢长大), 信区: job
标 题: synopsys CS笔试题
发信站: 饮水思源 (2004年12月07曰20:55:54 星期二), 站内信件

今天Synopsys笔试内容大致如下,有一题想不起来了,大家帮忙回忆:
1。说出指针和引用的区别。
2。说下深度优先遍历和广度优先遍历区别。
3。C++语法错误判断。这题很有趣,我记下了,贴出来大家看看:)

class base{
private: int i;
public: base(int x){i=x;}
};
class derived: public base{
private: int i;
public: derived(int x, int y) {i=x;}
void printTotal() {int total = i+base::i;}
};
4。实现strcpy函数。
5。编程判断字符串是否对称。如:ABCCBA对称,ABCDBA就不对称。
6。1,2,5,10四个基数任意次数组合相加得到一个数N,求所有可能组合。
7。二叉树前序遍历得到表达式。
8。题目意思不是很明白,可能是推出产生式的意思吧。
9。
10。循环链表的节点对换和删除。
11。hash表实现。

发信人: dtbird (清谈), 信区: CPlusPlus
标 题: 两个笔试题
发信站: BBS 水木清华站 (Wed Oct 27 15:17:02 2004), 站内

1. 定义一个类X使下面的语句可以通过编译
X f() {return true;}

2. 打印出1到1000的整数,不能使用流程控制语句(for,while,goto等),
也不能使用递归。

发信人: withcloud (准备工作中), 信区: CPlusPlus
标 题: 总结一下今年碰到的笔试和面试程序题目
发信站: 南京大学小百合站 (Wed Nov 17 19:31:18 2004)

我今年总共(到目前为止)参加了三场笔试,四次技术面试.我现在把在这过程中碰到的有关
程序设计部分的题目大致总结一下,希望对在找和要找的 XDJMs 有所帮助.

1.笔试:
1)写一个内存拷贝函数,不用任何库函数.就是前些时候本版讨论的那个问题.
2)将一个单链表逆序.(这个问题是个常规的数据结构问题.不过不小心时会损失效率)
3)客房预定的问题.根据客户报的人数,客房等级来从预备的客房中选择出所有符合要求的
客房号.客户没有要求等级时,只考虑人数因素就可以了.要考虑有些客房已经预定的情况.
(写代码是要考虑好彼此的效率)
4)对于一个无序序列进行二分查找
5)将一个数字字符串转换为数字.\"1234\" -->1234
6)在文件(调用库函数创建的,不用考虑数据库的方式)中读入信息(包括职工号,职工产量)
.根据输入的信息(包括职工号,职工产量)..检测是否有相同的职工号记录,如有,则增加其
产量.如没有,则创建新的记录.最后的记录排序的依据是职工产量(降序),如果产量相同,则
按职工号(升序). (具体的题目记不太清了,这个题目有点长.哪位也去笔试了.请修正一下
子)
.
2.面试
同一个地方.面试官的要求是一分钟给出求相似度的算法.)(幸好听老师讲过中文分词,要不
然当场就挂了)
2)写出二分查找的代码.
3)将上述代码通用化.(在 C 的规范内.就是我前面所的那个问题)
4)写出在母串中查找子串出现次数的代码.(不顾及效率时好说.当时一不留神把 KMP 说了
出来,结果又让我描述整个过程.汗..只好从头又学了.不过没有冷场,边学边说.hoho)
5)如何看待在函数中定义很多静态变量.
6)写出quick_sort
7)写出查找从一个集合中输出所有子集合的算法.
8)有关于各种类型指针.各种数据类型的 sizeof 运算结果( 在 C 中)

其他就跟程序写作关系不大了.

发信人: griefjane (grief), 信区: C
标 题: 夏尔笔试题
发信站: 饮水思源 (2004年01月02曰18:31:53 星期五), 站内信件

实现任意长度的整数相加功能。
估计有多种方法可以实现,讨论一下吧,希望最后得到简洁、优雅的一个版本。

发信人: lippman (lippman), 信区: C
标 题: 10/28曰微创笔试题目公布!!!没有答案(ZZ)
发信站: 饮水思源 (2004年10月29曰15:29:23 星期五), 站内信件

下午3点左右接到一个电话,小姐称是微创软件公司,问我有没有空晚上6点去他们公司
笔试,应聘软件工程师,我问了一下情况,就答应了,当作一次经历也不错的。于是乎
,我骑着小电驴花了50分钟找到了延安东路222号外滩中心,大楼很PP,一幢非常高档的
写字楼,进进出出都是白领,工作环境很不错,我看着自己穿的休闲服,还真不好意思
进去,这楼还挺麻烦,要签名领牌子进去。终于上了21楼,看到了公司的门面,很气派
,我喜欢的黄色系装潢,舒服的。不过接待的不是公司员工,是两个身穿制服的保安,
递给我一份考卷,将我领进一间会议室,对我说90分钟后交卷。然后就走出去了。会议
室里面有很多人,除了我和另外一个女生,其余都是男生,都在奋笔疾书!牛!我看了
题目只有发傻~~~根本不是和我的岗位。唯一做的事情就是把题目摘录下来作为经验!不
过我还是作了一部分的。嘻嘻
http://cnwyy.yculblog.com
下面把题目贴出来,没有答案,大家可以讨论:)
Part A
1)实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现)
2)实现一个计算大位数(如100位以上)相乘结果的函数string
multiply(sting,string)。(请完全用算法实现)
3)一个数据库中有两个表,一张表为Customer,含字段ID,Name,一张表为Order,含字
段ID,CustomerID(连向Customer中ID的外键),Revenue;写出求每个Customer的Revenu
e总和的SQL语句。
4)一个学生成绩登记系统,其中学生和课程均是可添加的,请设计一个库表结构实现,
尽量保证系统使用中库表结构不再改变。
5)请简要描述出你最熟悉的技术架构,包括架构中的各种中间件。(建议用图的形式)

Part B
1)请简述Critical Section和Mutex的不同点。
2)请描述下面函数声明中各个const的作用: const char* Test() const
3)举3个以上ASP.Net与ASP相比的进步。
4)ASP.Net中user control和custom control的区别。
5)用一个C语言用来删除单链表的头元素的函数,请找出其中的问题并加以纠正。
void RemoveHead(node* head)
{
free(head)
head=head->next
}

6)试编写函数判断计算机的字节存储顺序是开序(little endian)还是降序(bigendian)

7)给定如下SQL数据库:Test(num INT(4)) 请用一条SQL语句返回num的最小值,但不许
使用统计功能,如MIN,MAX等。
8)输出下面程序结果。

#include
using namespace std;
class A
{
public:virtual void print(void)
{
cout<<\"A::print()\"<<endl;
}
};
class B:public A
{
public:virtual void print(void)
{
cout<<\"B::print()\"<<endl;
}
};
class C:public A
{
public:void print(void)
{
cout<<\"C::print()\"<<endl;
}
};
void print(A a)
{
a.print();
}
void main(void)
{
A a, *pa,*pb,*pc;
B b;
C c;

pa=&a;
pb=&b;
pc=&c;

a.print();
b.print();
c.print();

pa->print();
pb->print();
pc->print();

print(a);
print(b);
print(c);
}

1. 以下三条输出语句分别输出什么?[C易]
char str1[] = \"abc\";
char str2[] = \"abc\";
const char str3[] = \"abc\";
const char str4[] = \"abc\";
const char* str5 = \"abc\";
const char* str6 = \"abc\";
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

13. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
答:
a. class B : public A { ……} // B公有继承自A,可以是间接继承的
b. class B { operator A( ); } // B实现了隐式转化为A的转化
c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认
值的参数)构造函数
d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉
强算一个

12. 以下代码中的两个sizeof用法有问题吗?[C易]
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
if( 'a'<=str && str<='z' )
str -= ('a'-'A' );
}
char str[] = \"aBcDe\";
cout << \"str字符长度为: \" << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;

7. 以下代码有什么问题?[C难]
void char2Hex( char c ) // 将字符以16进制表示
{
char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);
char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);
cout << ch << cl << ' ';
}
char str[] = \"I love 中国\";
for( size_t i=0; i<strlen(str); ++i )
char2Hex( str );
cout << endl;

4. 以下代码有什么问题?[C++易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}

5. 以下代码有什么问题?[C++易]
cout << (true?1:\"1\" << endl;

8. 以下代码能够编译通过吗,为什么?[C++易]
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];

9. 以下代码中的输出语句输出0吗,为什么?[C++易]
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;

10. C++中的空类,默认产生哪些类成员函数?[C++易]
答:
class Empty
{
public:
Empty(); // 缺省构造函数
Empty( const Empty& ); // 拷贝构造函数
~Empty(); // 析构函数
Empty& operator=( const Empty& ); // 赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; // 取址运算符 const
};

3. 以下两条输出语句分别输出什么?[C++难]
float a = 1.0f;
cout << (int)a << endl;
cout << (int&a << endl;
cout << boolalpha << ( (int)a == (int&a ) << endl; // 输出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&b << endl;
cout << boolalpha << ( (int)b == (int&b ) << endl; // 输出什么?

2. 以下反向遍历array数组的方法有什么错误?[STL易]
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
{
cout << array << endl;
}

6. 以下代码有什么问题?[STL易]
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}

11. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
char* pdest = static_cast( dest );
const char* psrc = static_cast( src );
if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了
{
for( size_t i=count-1; i!=-1; --i )
pdest = psrc;
}
else
{
for( size_t i=0; i<count; ++i )
pdest = psrc;
}
return dest;
}
int main( void )
{
char str[] = \"0123456789\";
mymemcpy( str+1, str+0, 9 );
cout << str << endl;

system( \"ause\" );
return 0;

--------------------------------------------------------------------------------
发信人: stroller (混口饭吃不容易), 信区: Job
标 题: 威盛笔试
发信站: 曰月光华 (2004年11月06曰11:30:50 星期六), 站内信件

calloc 和 malloc的区别

4条线段连3*3的点

3*3*3,2*2*2, 1*1*1的薄壁桶,每个桶里面只能倒一次水,
怎么称出13个单位的水

代码优化,主要思想就是把不变量的计算提到循环外

x86种AND,OR,XOR有些什么用途

#define导致计算结果诡异的一个题

10个房间,每个房间里面有随机的金币,每个房间只能进一次,
你获得最多金币的概率多大。
一种策略是,先走4个房间,不拿,但是记下4个房间的金币最大值max,
往后6个房间遇到比max大的就拿,如果没有遇到,那最后一个房间的金币。
编程计算拿到最多金币的概率,给出文字说明;
发信人: godiex (不知道), 信区: job
标 题: Re: 威盛S3软件工程师3笔试
发信站: 饮水思源 (2004年11月06曰14:01:25 星期六)

补充一下全部的试题。

1。看程序写运行结果
m=5;
If(m++>5) printf(“%d\\n”, m);
Else printf(“%d\\n”, --m);

2.简述 AND, XOR, OR的功能
3.calloc和malloc的区别
4.3x3九点,四条连线
5.1x1x1, 2x2x2, 3x3x3的三个容器。每个容器只能灌一次,如何量出13ml的水。
6.求sizeof(p)
char *p=”hello!”
char p[]=”hello!”
void *p=malloc(100)
void Func(char p[100])
7.一段很长的程序,要求写出程序的意图。基本上是把字节指针pData指向的一块内存数
据复制到双字指针pwdData指向的内存区域。每次复制4字节,不足处补零。
8.
#define SQR(x) x*x
int a=10; int k=2; int m=1;
a/=SQR(k+m)/SQR(k+m);
a=?
9.一段程序找效率不高的地方。也是复制内存区域。
10.10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金
币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多
的金币数,就拿。否则就拿最后一个房间的金币。
a) 编程计算这种策略拿到最多金币的概率。
b) 证明这是不是最优策略。

补充一下全部的试题。

1。看程序写运行结果
m=5;
If(m++>5) printf(“%d\\n”, m);
Else printf(“%d\\n”, --m);

打印结果 : 5
程序会进入else所在的分支

2.简述 AND, XOR, OR的功能
跳过

3.calloc和malloc的区别
简单一点的说:1.参数不同,2.calloc还会初始化分配到的内存

4.3x3九点,四条连线
自己琢磨吧,有三条线都是从某一个角上的点开始的。

5.1x1x1, 2x2x2, 3x3x3的三个容器。每个容器只能灌一次,如何量出13ml的水。
方法一:三个容器套在一起,容器口都朝上,底部靠在一起,慢慢倒水,先倒满大容器
(9-4)*2;水漫过2*2*2容器,直到快与1*1*1容器口齐3*1,10+3;
方法二:3*3*3容器与2*2*2容器口朝上,口平齐,小容器在大容器内;往3*3*3容器倒
水,3*3*3-2*2*2=19; 1*1*1容器与2*2*2容器口朝上,口平齐,小容器在大容器内;从
3*3*3容器往2*2*2倒水,3*3*3容器剩12(19-(2*2*2-1*1*1)), 最后1*1*1容器满,
12+1=13;

6.求sizeof(p)
1.char *p=”hello!”
2.char p[]=”hello!”
3.void *p=malloc(100);
4.void Func(char p[100]){
sizeof(p)?
}

解答:
1. sizeof(p) = 4; 怎么说也只是个指针而已
2. sizeof(p) = 7; 最后要加一个'{post.content}'
3. sizeof(p) = 4; 怎么说也只是个指针而已
4. sizeof(p) = 4; 没有试过,感觉林锐的书上这样写的

7.一段很长的程序,要求写出程序的意图。基本上是把字节指针pData指向的一块内存
数据复制到双字指针pwdData指向的内存区域。每次复制4字节,不足处补零。

8.
#define SQR(x) x*x
int a=10; int k=2; int m=1;
a/=SQR(k+m)/SQR(k+m);
a=?
结果a = 1;

解开后 a/=k+m*k+m/k+m*k+m
a = 10 / (2+1*2+1/2+1*2+1)
= 10 / 7.5
整数取整,故a =1 ;

9.一段程序找效率不高的地方。也是复制内存区域。
解答L:
1、计算首地址不必每次都用乘法来算,
2、每行要复制的宽度是固定的,不必每个循环都算

1、变乘为加,不必每次都计算的,只计算一次就可以了。
2、特殊的图形内存块,如位图,可以考虑整块拷贝,不必分行拷贝。

10.10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿
金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间
都多的金币数,就拿。否则就拿最后一个房间的金币。

a) 编程计算这种策略拿到最多金币的概率。
b) 证明这是不是最优策略。

考官提示说不要用概率论的方法,我想无非是设一个长度为10的数组,编号1至10的数字
放入其中,考虑10的位置。
其他的自己考虑吧。

发信人: realchichi (人淡如菊◎相交如水◎晶晶亮), 信区: Job_IT
标 题: 威盛的Software test Engineer笔试题(转载)
发信站: 武汉白云黄鹤站 (2004年11月18曰12:28:32 星期四), 站内信件

【 以下文字转载自 Job 讨论区 】
【 原文由 jjli 所发表 】

1.What is OSI Model?Which layer is responsible for the information reliable

delivery?
2.List the differences of TCP and UDP
3.Please list the differences between convertional C language and
object-oriented language(OOL),sau C++?
4.Please list the three major features and meanings of C++
5.Please list the program areas of the run time environment and give a brief

explanation of the function of each area
6.Write a piece of code(or macro)to convert the decimal number to hex format

7.In a real time operating based embedded system,2 tasks will access the
RS-232C port.Design a mutual exclusive mechanism for tasks sending command

(Pseudo code is okay)
8.A multi-task application is running on top of a real-time operating system,

how many possbile states can a task have?Please draw a state transition
diagram to explain. How the tasks communicate to each?

发信人: realchichi (人淡如菊◎相交如水◎晶晶亮), 信区: Job_IT
标 题: 威盛的Software tools Engineer笔试题(转载)
发信站: 武汉白云黄鹤站 (2004年11月18曰12:28:36 星期四), 站内信件

【 以下文字转载自 Job 讨论区 】
【 原文由 jjli 所发表 】

Software programming test on C++:
1.How good do you see yours programming skills?Please circle your answers
C: Fair/Good/Excellent
C++: Fair/Good/Excellent
2.Please estimate your programming experince:
How many lines of code are your biggest C Program ever written excluding the

standard linked library?
How many lines of code are your biggest C++ program ever written excluding t
he standard linked library?
3.Please explain the following terms
Data Encapsulation
Inheritance
Polymorphism
4.What is a virtual base class?How do you declare such a class?How would you u
se it in a design?
5.What is a template or container class?How do you declare such a class?
6.Which are the access control levels for C++ language?
7.What is RTTI?How do you achieve RTTI in your design?
8.What are the major differences between static and non-static member function
s?
9.How do you call a regular member function from a static member function?
Please use psendo-code to provide your answer
10.How do you declare/define a type of pointer to a class member function?
Please use psendo-code to provide your answer
11.Please explain the following tyoes:
Here is a short lise of combinations and their meanings:
1.Reference-Can change the referenced object
2.Const-Reference
3.Const-Pointer-
4.Pointer-Const-
5.Const-Pointer-Const-
CFoo Instance

CFoo &ReferenceToInstance=Instance; //1
const CFoo &ConstReferenceToInstance=Instance; //2
const CFoo *pConstPointer=&Instance; //3
CFoo *const pPointerConst=&Instance; //4
const CF00 *const pPointerConst=&Instance; //5
12.What are top-down and bottom-up approach?How do you usually use them?
13.Please use pseudo-code to design a set of stack operations with template
14.Please use pseudo-code to design a set of double linked list operations wit
h template

Optional Questionsfor extra credits)
15.Please write a unix makefile for Question13
16.Please explain these common sections:text,data,bss

发信人: guaibaogou (乖狗狗), 信区: job
标 题: 微软笔试试题
发信站: 雁塔晨钟 (Sat Oct 16 20:58:48 2004), 本站(bbs.xidian.edu.cn)

今天笔试过后,11月还有一次笔试,那次的规模应该更大吧,星期五的微软报告说会有80%
到90%的人会给予面
试机会。所以我想把这次的试题写出来,可能对大家有一点帮助吧,当然,我大部分不
记得了,因此希望参加
了的同学可以一起来写。

Part I.选择题70分钟)
1.求函数返回值,输入x=9999;
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}

2.为什么返回局部变量的引用不好?
a,b,c,d不记得了,大概和内存,返回值等等有关。

3.Stack R,from the top to bottom:{2,3,4,5,6},逐个取出放入Queue Q ,再从Q中逐
个取出放入R中,问现在

从上到下R中元素的排列?

4.在你自己定义的类中有什么是CLASSVIEW不会为你做的:
(a) 析构器。 (b)拷贝构造函数 (c)构造函数 (不记得有没有这一项了)
(d)(不记得了)

5.写出程序的结果:___________ __________________
int funa(int *a)
{
a[0] ++;
}

int funb(int b[])
{
b[1] += 5;
}

main()
{
int a[5] = {2,3,4,5,6};
int b[5] = {2,3,4,5,6};
int *p;
p = &a[0];
(*p)++;
funb(p);
for(int i = 0; i <5; i++)
printf(\"%d,\",a);
p = &b[1];
funa(p);//(啊,现在写的时候才发现做错了,传的是b[1]的地址;只记得传地址给
//指针了,考的时候以为
//传的是b.主要是被第一次调用funb弄晕了~~呵呵)
funb(p);
for(i = 0; i < 5; i++)
printf(\"%d,\",b);
}

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如何?

其他的大家来补充吧。
总的感觉是对C\\C++的编程内存、安全要求比较高,而不是仅仅编写一个程序,要求你知
道为什么要这样编写,这样编写了对内存有什么影响,是否安全等等。都是很基础的东
西,但大家平时也会不太注意。

前天微软亚洲工程院全国第一轮笔试,西安考区的,安排在西电,人挺多,不过应
该不到一千吧。

15页考卷,分为AB卷,要求是三个小时考完,全部用铅笔答题。中途不允许去WC,
PS:全英文考题。总体来说还是很基础的,算法与数据结构的比较多,还有一些推
理题目,不过这次的不难(条件环节不够多)。当然少不了编程的题目不过这些题
目主要是考你对程序的理解与习惯。

都过了一夜睡了一觉,题目不记得多少了,就记得几个自己印象深刻点儿,遗憾才深
刻….

I Basic
这个部分有近二十道多项选择题和若干填空题,内容繁多零散,大部分是关于数据结
构和c/c++语言,还有关于软件工程,测试方法,无状态网络的一些题目;填空题是读
程序填结果,当然最后还有一道比较复杂的逻辑题目.

1。regular expression不能描述的是?
a)两个连续偶数
b)两个连续奇数
。。。。

2

int s(int v)
{
int count=0;
int x=v;
while (x)
{
count++;
x=x&(x-1)
}
return count;
}

s(9999)=?

3,关于堆排序的东西,插入新的元素以后的结果

4,关于C语言中,.h文件和.c文件之间的关系

5,如果数据扩大两倍,是向左,还是向右移动几位的问题

6,对二叉排序数,以什么输出(前序,中序,还是后续)输出,是排列

7,一个顺序为 1,2,3,4,5,6 的栈,依次进入一个队列,然后再进栈, 顺序
是什么?

8 关于数组指针的的题目

9 regular language 和context language之间的关系是什么.
a)regular language more powerful than context free language
(后面两个个选项记不清楚了,反正大意就是比较两个谁好.最后一个选项是两者不
能进行这样的比较)

10 在编写代码是查找错误好还是用testing找好?

11 好像是说编译器可以修改type error的好处或不好。

逻辑推理部分

一个线性车库,5排5辆车,一车最多坐两人.
6个人.Tom,Jack, Gawen, Laurie, Mark, Paul.

.Mark独享车且紧跟空车后
.Tom不跟Gawen或Paul坐一辆车.
.Laurie跟别人共享车.
.Gawen在第三排或第四排.

一共5道题目,显然通过4个条件不能确定车序.有的题目是问存在的可能,有的题目
是附加条件后问车序.

程序设计部分.

1 Translate MIPS assembly code into a function in C/C++
* your code should be concise
* no any GOTOs/pointers

MIPS code:

func:
li $v0,0
li $t0,0
l1:
add $t1,$a0,$a0
lb $t2,0($t1)
beq $t2,$zero,l3
bne $t2,$a1,l2
add $v0,$v0,1
l2:
add $t0,$t0,1
j l1
l3:
jr $ra

(caller register: $t0~$t9,$a0~$a3,$v0~$v1; callee $s0~$s7,$ra)
然后列出了指令表,li是赋值,lb是将字段后第一个寄存器内容个字节的内容复制到
第二个寄存器,beq是等值转移ben是不等值转移,j是无条件转移,jr转移至寄存器标
示的内容.

实现数组的插入,查找,删除操作.

arr为指向数组的指针
len为数组长度.
count表示数组元素数目.
出错返回-1

int insert(int* arr,
size_t len,
size_t count,
int val)
返回插入的数组索引.
插入后要求对数组排序.
出错处理

int search(int* arr,
size_t len,
size_t count,

int val)
要求返回所找到的元素
出错处理

int remove(int* arr,
size_t len,
size_t count,
int val)
要求返回删除的元素值
出错处理

测试部分.

1.你被分配到Internet Explorer研发部,(从核心到界面什么都可以).你如何设
计,开发和测试它?

2.给你个DVD,你应当如何测试它,如果你的时间极其有限,你会测试什么?为什么?

3.给你一个字符比较函数strCmp(const char* string1, const char* string2)以
及其返回值表明的意义,(>0, ==0, <0),设计测试case

4.一段字符串复制程序,指出其存在的错误和潜在缺陷.

最后是个论述题目,只有这个题目是要用英文作答的,上面的都可以用Chinese

问的是你在过去一年里做出过什么样的重要决定,你为什么做出这样的决定,这个决
定对你的影响,你达到你作决定时期望的目标了没.有什么收获.

发信人: 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;
}
问程序会在哪一行死掉。

还有一题考静态成员变量的,不过我看怎么着结果都一样
int CalcMean(int i)
{ static int s, c;
s+=i; c++;
return s/c;
}
求CalcMeas( CalcMeas(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)等于?

还有那个IQ题:三个盒子有一个有宝石,先选一个,
主持人打开一个问改不改的。常上iqdoor版肯定不会有问题
还有一个
abcdef*2=cdefab
cdefab*2=efabcd
每个字母代表一个数字
abcdef=?

2 编程题
2。1 写一个CircularQueue()
2。2 写一个Merge函数。把两个排序的链表合并。
难点是两个链表一个从小到大排,另一个反向。
我是先把反向的转过来再合并的。

3 设计(可用中文)
1 设计一个密码对话框。问如何设计,有什么规范,如何测试等
2 Web搜索引擎测试。

4 忘了,可用中文

5 要用英文做答
5。1 你有什么新奇的想法,最好是软件方面
5。2 让一个员工开发一个功能,但是他不重视。如何搞定。
英语是:我猜是这个意思吧。
How would you convince a developer to add a feature
that the developer does not view as importart?

记性好差

发信人: rebirth (肥得像猪一样的猫), 信区: C
标 题: 微软笔试题目(ZZ)
发信站: 饮水思源 (2004年01月01曰13:49:05 星期四), 站内信件

MSRA Interview Written Exam(December 2003,Time:2.5 Hours)

1写出下列算法的时间复杂度。
(1)冒泡排序;
(2)选择排序;
(3)插入排序;
(4)快速排序;
(5)堆排序;
(6)归并排序;

2写出下列程序在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);
}

3写出下列程序的运行结果。

unsigned int i=3;
cout<<i * -1;

4写出下列程序所有可能的运行结果。

int a;
int b;
int c;

void F1()
{
b=a*2;
a=b;
}

void F2()
{
c=a+1;
a=c;
}

main()
{
a=5;
//Start F1,F2 in parallel
F1(); F2();
printf(\"a=%d\\n\",a);
}

5考察了一个CharPrev()函数的作用。

6对 16 Bits colors的处理,要求:
(1)Byte转换为RGB时,保留高5、6bits;
(2)RGB转换为Byte时,第2、3位置零。

7一个链表的操作,注意代码的健壮和安全性。要求:
(1)增加一个元素;
(2)获得头元素;
(3)弹出头元素(获得值并删除)。

8一个给定的数值由左边开始升位到右边第N位,如
0010<<1 == 0100
或者
0001 0011<<4 == 0011 0000
请用C或者C++或者其他X86上能运行的程序实现。

附加题(只有在完成以上题目后,才获准回答)
In C++, what does \"explicit\" mean? what does \"protected\" mean?

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器