C++面试题大全

2011-03-19 00:28:14|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++|来源:唯设编程网

1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问。

---------------------------------------------------------------------

2.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)

#include <iostream>
using namespace std;
void main()
{
	char a[50];memset(a,0,sizeof(a));
	int i=0,j;
	char t;
	cin.getline(a,50,'
');
	for(i=0,j=strlen(a)-1;i<strlen(a)/2;i++,j--)
	{
		t=a[i];
		a[i]=a[j];
		a[j]=t;
	}
	cout<<a<<endl; 
}

//第二种

string str;
cin>>str;
str.replace;
cout<<str;

---------------------------------------------------------------------

3.请简单描述Windows内存管理的方法。

内存管理是操作系统中的重要部分,两三句话恐怕谁也说不清楚吧~~

我先说个大概,希望能够抛砖引玉吧

当程序运行时需要从内存中读出这段程序的代码。代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常 多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的概念。把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内 存)中。这个就是内存管理所要做的事。内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。

内存管理有块式管理,页式管理,段式和段页式管理。现在常用段页式管理块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程 序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费,平均浪费了50%的内存空间,但时易于管理。

页式管理:把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方法的空间利用率要比块式管理高很多。

段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪费在计算每一段的物理地址上(计算机最耗时间的大家都知道是I/O吧)。

段页式管理:结合了段式管理和页式管理的优点。把主存分为若干页,每一页又分为若干段。好处就很明显,不用我多说了吧。

各种内存管理都有它自己的方法来计算出程序片断在主存中的物理地址,其实都很相似。

这只是一个大概而已,不足以说明内存管理的皮毛。无论哪一本操作系统书上都有详细的讲解

---------------------------------------------------------------------

4.代码理解

#include "stdafx.h"
#define SQR(X) X*X
int main(int argc, char* argv[])
{
	int a = 10;
	int k = 2;
	int m = 1;
	a /= SQR(k+m)/SQR(k+m);
	printf("%d
",a);
	return 0;
}

这道题目的结果是什么?

发表评论0条 】
网友评论(共?条评论)..
C++面试题大全