标题 | C笔试题目及答案 |
范文 | C笔试题目及答案 C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。下面就由第一范文网小编为大家介绍一下C++笔试题目及答案的文章,欢迎阅读。 C++笔试题目及答案篇1 1. What’s overload function in C++? “重载”是指编写一个与已有函数同名但参数表不同的函数。构成重载的条件是:在相同的范围内(比如说在同一个类中),函数名字相同,但函数参数不同(要么参数类型不同,要么参数个数不同,要么两者都不同) 2. A. What’s inline function in C++? 内联函数是指嵌入代码,就是在调用函数的地方不是跳转,而是直接把代码写到那里去。它与普通函数相比能提高效率,因为它不需要中断调用,在编译的时候内联函数可以直接把代码镶嵌到目标代码中去,省去了函数调用的开销,但是它是以代码膨胀为代码的(以增加空间消耗为代价) B. When would you use inline function? (1)一个函数不断的被重复调用 (2)函数只有简单的几行,且函数内部包含:for,while,switch语句。 C. Please write sample code. void Foo(int x,int y); inline void Foo(int x,int y){...} 需要注意的是:关键字inline必须与函数定义体放在一起才能使函数构成内联,仅将inline放在函数声明前不起任何作用。 3. Which of the following are legal? For those usages thatare illegal, explain why. const int buf; 不合法。因为定义const变量(常量)时必须进行初始化,而buf没有初始化。 int cnt = 0; const int sz = cnt; 合法。 cnt++; sz++; 不合法。因为修改了const变量sz的值。 4. Please point out the errors in the following C++ code. Andwhy? switch ( ival ) { case 1, 3, 5, 7, 9:oddcnt++; break; case 2, 4, 6, 8, 10:evencnt++; break; } 貌似case 不能把所有的情况并列列出来,没见过 case 1, 3, 5, 7,9:这种写法,改为 case1:oddcnt++; case 3:oddcnt++; C++笔试题目及答案篇2 1. Given the following base and derived class definitions: class Base { public: foo ( int ); protected: int _bar; double _foo_bar; }; class Derived: public Base { public: foo ( string ); bool bar ( Base *pb ); void foobar ; protected: string _bar; }; Identify what is wrong with each of thefollowing code fragments and how each might be fixed: (a) Derived d; d.foo ( 1024 ); 错误:定义个派生类的对象d,d.foo( 1024 );派生类中foo的参数是string,不能将int型转换为"string" (b) void Derived :: foobar { _bar=1024;} 正确:定义派生类的成员函数foobar;把整形1024赋给string ,发生类型转换 (c) bool Derived :: bar { Base *pb } { return _foo_bar = = pb->_foo_bar; } 错误:没有参数列表,还有下面不应该为"==",还有在派生类中无法访问基类的保护成员。 应该改为:boolDerived :: bar (Base *pb) { return _foo_bar = pb->_foo_bar; } 2. A. Please list all the design patterns you known. 常见的设计模式有23种,比如说:单例模式、工厂模式,观察者模式、组合模式、策略模式、适配器模式、命令模式等等 B. Please explain the pattern of “Factory” and give anexample if you can. 工厂模式使一个类的实例化延迟到子类,换句话说也就是将创建对象实例的责任, 转移到工厂类中,并利用抽象的原理,将实例化行为延迟到具体工厂类。 3. A. Please list all the sorting algorithms you known. 排序算法:冒泡排序(最简单了,就是2个for循环)、快速排序、选择排序、插入排序、归并排序、希尔排序、堆排序等等 B. Please use pseudo code to describe the algorithm of “QuickSort”. 快速排序采用的是分治策略,分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题,递归解决这些子问题,然后将这些子问题的解组合为原问题的解。 快速排序:快速排序是对冒泡排序的一种改进,时间复杂度均是O(nlogn)空间复杂度是:O(logn) 基本思想:通过一趟排序算法将待排记录分割成2部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序以达到整个序列有序。 一趟快速排序做法: 附设两个指针low和high,设枢轴记录关键字为pivotkey,则先从高位(high)起向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录进行交换,然后从低位(low)所指位置向后搜索,找到第一个关键字大于pivotkey的记录和枢轴记录进行交换,重复这两步,直至low=high为止。 源代码: void quicksort(int a, int low, int high) { inti,j,key,temp; if(low< high) { key= a[low]; i= low; j= high; while(i< j) { for(i = i + 1; i < high; i++) if(a[i] > key) break; for(j = j; j > low; j--) if(a[j] < key) break; if(i< j) {temp = a[i]; a[i]= a[j]; a[j]= temp; } } temp= a[low]; a[low]= a[j]; a[j]= temp; quicksort(a,low,j-1); quicksort(a,i,high); } } 测试:int_tmain(int argc, _TCHAR* argv) { inta={49,38,65,97,76,13,27,49}; intsize = sizeof(a)/sizeof(int); quicksort(a,0,size-1); for(int i=0;i { cout< cout< } system("pause"); return0; } C++笔试题目及答案篇3 Please answer the following questions: A. What’s process scheduling and list all schedulingalgorithms you known. 调度算法是指:根据系统的资源分配策略所规定的资源分配算法。 1.先来先服务和短作业(进程)优先调度算法 2.高优先权优先调度算法 3.基于时间片的轮转调度算法 B. What’s the “Race Condition”? 竞态条件(racecondition)是一个在设备或者系统试图同时执行两个操作的时候 出现的不希望的状况,但是由于设备和系统的自然特性,为了正确地执行,操作必 须按照合适顺序进行。 常用在多线程环境中。 C. Please explain the diagram of process state change. 进程有3种基本状态,等待、就绪、运行。 运行态→等待态:往往是由于等待外设,等待主存等资源分配或等待人工干预而引 起的。(服务请求,如请求I/O等) 等待态→就绪态:等待的条件已满足,只需分配到处理器后就能运行。(服务完 成/事件来到) 运行态→就绪态:不是由于自身原因,而是由外界原因使运行状态的进程让出处理 器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器 等。 (时间片到等) 就绪态→运行态:系统按某种策略选中就绪队列中的一个进程占用处理器,此时就 变成了运行态(进程调度) |
随便看 |
|
范文大全网提供教案、简历、作文、工作总结等各类优秀范文及写作素材,是综合性免费范文平台。