资讯详情

c++笔试题

微软亚

微软亚洲技术中心面试题!

1.过程与线程的区别。

线程是指过程中的执行单元,也是过程中的可调度实体. 与过程的区别: (1)调度:线程作为调度和分配的基本单位,过程作为资源的基本单位 (2)并发性:不仅可以并发执行过程,还可以并发执行同一过程的多个线程 (3)拥有资源:流程是拥有资源的独立单位,线程没有系统资源,但可以访问属于流程的资源. (4)系统费用:在创建或取消过程中,系统费用明显大于创建或取消线程时的费用,因为系统必须分配和回收资源。

2.测试方法

人工测试:个人复查、抽查、会审 机器测试:黑盒测试和白盒测试

2.Heap与stack的差别

Heap是堆,stack是栈。 Stack操作系统自动分配/释放空间,Heap手动分配/释放上部空间。 Stack空间有限,Heap是一个很大的自由储存区 C中的malloc函数分配的内存空间即在堆上,C 中对应的是new操作符。 编译期间,变量和函数分配内存在栈上进行,函数调用时参数的传输也在栈上进行

3.Windows如何管理下面的内存?

4.介绍.Net和.Net的安全性。

5.如何访问客户端?.Net组件实现Web Service?

6.C/C 如何在编译器中完成虚表?

7.谈谈COM线程模型。然后讨论过程中内外组件的差异。

8.谈谈IA32分页机制

小页(4K)两级分页模式,大页(4M)一级

9.给两个变量,如何找出带环单链表中的环出现在哪里?

增加一个,个递增二,他们指向同一个接点时就是环出现的地方   ??

10.在IA32中一共有多少种办法从用户态跳到内核态?

通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等

11.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?

用内存映射或全局原子(互斥变量)、查找窗口句柄..  FindWindow,互斥,写标志到文件或注册表,共享内存。. 

12.如何截取键盘的响应,让所有的‘a’变成‘b’?

键盘钩子SetWindowsHookEx

13.Apartment在COM中有什么用?为什么要引入?

14.存储过程是什么?有什么用?有什么优点?

 

    存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程用于实现频繁使用的查询、业务规则、被其他过程使用的公共例行程序

存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快

15.Template有什么特点?什么时候用?

16.谈谈Windows DNA结构的特点和优点。

17.网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别?

1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。 2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 区别:两者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

 

 

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上能运行的程序实现。

 

附加题(只有在完成以上题目后,才获准回答)

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

c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,在某些情况下,我们要求类的使用者必须显示调用类的构造函数时就需要使用explicit,反之默认类型转换可能会造成无法预期的问题。

protected控制的是一个函数对一个类的成员(包括成员变量及成员方法)的访问权限。protected成员只有该类的成员函数及其派生类的成员函数可以访问

 

1.  在C++中有没有纯虚构造函数?

构造函数不能是虚的。只能有虚的析构函数

 

2.  在c++的一个类中声明一个static成员变量有没有用?

在C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,也就是说不管创建多少对象,static修饰的变量只占有一块内存。其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。

static是加了访问控制的全局变量,不被继承。  

3。在C++的一个类中声明一个静态成员函数有没有用? (同上?)

4。如何实现一个非阻塞的socket?

5。setsockopt, ioctl都可以对socket的属性进行设置,他们有什么不同? (linux)

6。解释一下进程和线程的区别? (重复,参见微软亚洲技术中心笔试) 7。解释一下多播(组播)和广播的含义?

组播:主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。

广播:主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要).

 

8。多播采用的协议是什么?

9。在c++中纯虚析构函数的作用是什么?请举例说明。

10。编程,请实现一个c语言中类似atoi的函数功能(输入可能包含非数字和空格)

 

百度笔试题

 

一、选择题:15分 共10题  1.    在排序方法中,关键码比较次数与记录地初始排列无关的是    .  A. Shell排序      B. 归并排序       C. 直接插入排序     D. 选择排序

 

2.    以下多线程对int型变量x的操作,哪几个需要进行同步:  A. x=y;         B. x++;         C. ++x;            D. x=1;

 

3.    代码  void func() {          static int val;          … } 中,变量val的内存地址位于:  A. 已初始化数据段    B.未初始化数据段      C.堆              D.栈

 

4.    同一进程下的线程可以共享以下  A. stack            B. data section   C. register set        D. thread ID

 

5.    TCP和IP分别对应了 OSI中的哪几层?  A.  Application layer  B.  Data link layer  C.  Presentation layer  D.  Physical layer  E.  Transport layer  F.  Session layer  G.  Network layer

 

6.    short a[100],sizeof(a)返回?  A 2     B 4       C 100       D 200        E 400

 

7.    以下哪种不是基于组件的开发技术_____。  A XPCOM        B XP           C COM                D CORBA

 

8.    以下代码打印的结果是(假设运行在i386系列计算机上):      struct st_t      {          int    status;          short* pdata;          char   errstr[32];      };

    st_t  st[16];      char* p = (char*)(st[2].errstr + 32);      printf("%d", (p - (char*)(st)));

A 32          B 114       C 120         D 1112

 

9.    STL中的哪种结构是连续形式的存储  A  map      B  set         C  list      D  vector

 

10.    一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是( )  A、EDCBA;   B、DECBA;    C、DCEAB;    D、ABCDE

 

参考答案:D /ABC/ A/ BC /EG /D /B/ C/ D/ C

 

二、简答题:20分,共2题

1.    (5分)重复多次fclose一个打开过一次的FILE *fp指针会有什么结果,并请解释。  考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。

2.    (15分)下面一段代码,想在调用f2(1)时打印err1,调用f2(2)时打印err4,但是代码中有一些问题,请做尽可能少的修改使之正确。        1    static int f1(const char *errstr, unsigned int flag) {  2        int copy, index, len;  3        const static char **__err = {“err1”, “err2”, “err3”, “err4”};  4      5        if(flag & 0x10000)  6            copy = 1;  7        index = (flag & 0x300000) >> 20;  8       9        if(copy) {  10            len = flag & 0xF;  11            errstr = malloc(len);  12            if(errstr = NULL)  13                return -1;  14            strncpy(errstr, __err[index], sizeof(errstr));  15        } else  16            errstr =  __err + index;      17    }  18  19    void f2(int c) {  20        char *err;  22        swtch(c) {  23        case 1:  24            if(f1(err, 0x110004) != -1)  25                printf(err);  26        case 2:  27            if(f2(err, 0x30000D) != -1)  28                printf(err);  29        }  30 }    

三、编程题:30分 共1题    注意:要求提供完整代码,如果可以编译运行酌情加分。

1.    求符合指定规则的数。  给定函数d(n) = n + n的各位之和,n为正整数,如 d(78) = 78+7+8=93。 这样这个函数可以看成一个生成器,如93可以看成由78生成。   定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。  输出:  1  3  …

 

四、设计题:35分 共1题  注意:请尽可能详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者流程说明。

1.    假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些歌曲的2^30条URL,但每首歌的URL不超过2^10个。系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结果中。现在歌曲名和URL分别通过整型的SONG_ID和URL_ID唯一确定。对该系统有如下需求:  1)    通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表  2)    给定一个SONG_ID,为其添加一个新的URL_ID  3)    添加一个新的SONG_ID  4)    给定一个URL_ID,将其置为不可用

限制条件:内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个。

为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。如果系统数据量扩大,该如何多机分布处理?

 

汉略曾考的测试题目

Q:When speaking of software products, how do you define the term“quality”. 问:当说到软件产品的时候,你如何定义术语“质量”

       Meeting customer requirements Q:What is the role of software debelopers and quality assuranle engineers in ensuring the quality of the product? How are other functional areas important to developing a quality product? 问:在确定产品的质量方面,什么是软件开发工程师和质量保证工程师要做的?其他的功能对如何发展产品质量有什么重要?

 软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。Quality assuranle engineers: use a set of activities designed to ensure the development process to meet the requirements. Q:What is cyclomatic complexity? 问:(这是一个复杂度模型吧)

一种代码复杂度的衡量标准,中文名称叫做圈复杂度。圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。 Q:What are black-box texing and white-box texting? 问:什么是黑盒测试和白盒测试?

黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试又称为结构测试和逻辑驱动测试。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

Black box testing: a testing without knowledge of the internal working of the item being tested. white box testing: use specific knowledge of programming code to examine outputs.

Q:The following function divides a by b and out put to c,returns -1 as error.   Int divide (int a,int b,int c)   List you test cases in a black-box testing. 问:对 Int divide (int a,int b,int c)函数写出黑盒测试用例

先等价,后边界值 

a       b         c         预期         结果      g       g      5       0        6       2        0       1      -10   10      -10     -10      10.0   10.0   Q:Int a ctivity(int nage,bool bmale)   {if (nage<60)     return zoo;     else if(bmale)     return golf;     else return movie;   }  用cyclomatic   complexity,共有多少条路径       3 Q:The following function tests whether the three numbers can be the lengths of the three sides of a triangle. Bool triangle(float a,float b,float c) List you test cases in a black-box testing. 问:也是让写黑盒测试用例,是一个三个数是否是三角形的三条边的测试

先等价,后边界值

a       b         c         预期         结果      g       j         0      -1     2           2      10     2         3      2       3         4      2       2         5      6       6         6  

IQ,EQ题

然后是英文的数据结构,c/c++,数据库,3D建模,软件工程,软件测试

题目几乎都是英文的

后面还要填表格,一张中文的,一张英文的

一般有三个步骤 首先会笔试。笔试题分为EQ题和专业题,EQ题没什么好说的,大家自由发挥就行,不过其中有一些逻辑推理题要注意。专业题目全英文,考的内容很多,数据结构,C/C++语法,COM,3D建模,软件测试基础知识,如黑盒,白盒测试等,题不难,每方面有三到五题左右。 笔试成绩达到一定分数过后才能进入第二轮人事部面试。这部分面试一般是五人一组在一房间里,面试人员会问很多问题,然后每个人做答,问题很随机,当时好像问了“最尊敬的人是谁,最难忘的事是什么,有何职业规划,如何处理与同事之间的关系矛盾等等”。 这轮过后就到技术部面试,会问一些基础知识,如数据结构常用的有哪些,如何用C/C++写出其中的一种,面象对像有哪些特性,XML是什么等等,可能他会用英语问你这些问题,各位练下听力口语哈(当时俺被问的很郁闷)

COM:

(COM),是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。

开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。 COM所含的概念并不止是在Microsoft Windows操作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM方法”。 有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而消息隐藏则是动态链接的一个必要条件。对于COM来讲,接口是一个包含一个函数指针数组的内存结构。每一个数组元素包含的是一个由组件所实现的函数地址。

 

1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)

int a = 4;

(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);

a = ?

答:C错误,左侧不是

标签: tps5410dr集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台