關(guān)于c++的面試題
關(guān)于c++的面試題
一直以來(lái),求職面試都被視為人事招聘中最常用的工具。那關(guān)于c++的一些面試題有什么呢?下面是學(xué)習(xí)啦小編為你整理的c++的一些面試題,希望對(duì)你有幫助。
c++面試題
1.是不是一個(gè)父類寫了一個(gè)virtual 函數(shù),如果子類覆蓋它的函數(shù)不加virtual ,也能實(shí)現(xiàn)多態(tài)?
virtual修飾符會(huì)被隱形繼承的。private 也被集成,只事派生類沒有訪問權(quán)限而已。virtual可加可不加。子類的空間里有父類的所有變量(static除外)。同一個(gè)函數(shù)只存在一個(gè)實(shí)體(inline除外)。子類覆蓋它的函數(shù)不加virtual ,也能實(shí)現(xiàn)多態(tài)。在子類的空間里,有父類的私有變量。私有變量不能直接訪問。
2.輸入一個(gè)字符串,將其逆序后輸出。(使用C++,不建議用偽碼)
#include
using namespace std;
void main()
{
char a[50];memset(a,0,sizeof(a));
int i=0,j;
char t;
cin.getline(a,50,'\n');
for(i=0,j=strlen(a)-1;i
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<
}
//第二種
string str;
cin>>str;
str.replace;
cout<
3.請(qǐng)簡(jiǎn)單描述Windows內(nèi)存管理的方法。
內(nèi)存管理是操作系統(tǒng)中的重要部分,兩三句話恐怕誰(shuí)也說(shuō)不清楚吧~~
我先說(shuō)個(gè)大概,希望能夠拋磚引玉吧
當(dāng)程序運(yùn)行時(shí)需要從內(nèi)存中讀出這段程序的代碼。代碼的位置必須在物理內(nèi)存中才能被運(yùn)行,由于現(xiàn)在的操作系統(tǒng)中有非常 多的程序運(yùn)行著,內(nèi)存中不能夠完全放下,所以引出了虛擬內(nèi)存的概念。把哪些不常用的程序片斷就放入虛擬內(nèi)存,當(dāng)需要用到它的時(shí)候在load入主存(物理內(nèi) 存)中。這個(gè)就是內(nèi)存管理所要做的事。內(nèi)存管理還有另外一件事需要做:計(jì)算程序片段在主存中的物理位置,以便CPU調(diào)度。
內(nèi)存管理有塊式管理,頁(yè)式管理,段式和段頁(yè)式管理?,F(xiàn)在常用段頁(yè)式管理
塊式管理:把主存分為一大塊、一大塊的,當(dāng)所需的程序片斷不在主存時(shí)就分配一塊主存空間,把程 序片斷l(xiāng)oad入主存,就算所需的程序片度只有幾個(gè)字節(jié)也只能把這一塊分配給它。這樣會(huì)造成很大的浪費(fèi),平均浪費(fèi)了50%的內(nèi)存空間,但時(shí)易于管理。
頁(yè)式管理:把主存分為一頁(yè)一頁(yè)的,每一頁(yè)的空間要比一塊一塊的空間小很多,顯然這種方法的空間利用率要比塊式管理高很多。
段式管理:把主存分為一段一段的,每一段的空間又要比一頁(yè)一頁(yè)的空間小很多,這種方法在空間利用率上又比頁(yè)式管理高很多,但是也有另外一個(gè)缺點(diǎn)。一個(gè)程序片斷可能會(huì)被分為幾十段,這樣很多時(shí)間就會(huì)被浪費(fèi)在計(jì)算每一段的物理地址上(計(jì)算機(jī)最耗時(shí)間的大家都知道是I/O吧)。
段頁(yè)式管理:結(jié)合了段式管理和頁(yè)式管理的優(yōu)點(diǎn)。把主存分為若干頁(yè),每一頁(yè)又分為若干段。好處就很明顯,不用我多說(shuō)了吧。
各種內(nèi)存管理都有它自己的方法來(lái)計(jì)算出程序片斷在主存中的物理地址,其實(shí)都很相似。
這只是一個(gè)大概而已,不足以說(shuō)明內(nèi)存管理的皮毛。無(wú)論哪一本操作系統(tǒng)書上都有詳細(xì)的講解
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\n",a);
return 0;
}
這道題目的結(jié)果是什么啊?
define 只是定義而已,在編擇時(shí)只是簡(jiǎn)單代換X*X而已,并不經(jīng)過(guò)算術(shù)法則的
a /= (k+m)*(k+m)/(k+m)*(k+m);
=>a /= (k+m)*1*(k+m);
=>a = a/9;
=>a = 1;
PS:經(jīng)過(guò)本人驗(yàn)證,雖然結(jié)果一樣,但是應(yīng)該不是這樣運(yùn)算的,應(yīng)該是a/=k+m*k+m/k+m*k+m;
因?yàn)镾QR(k+m)/SQR(k+m)的值是7,而不是9。
5.
const 符號(hào)常量;
(1)const char *p
(2)char const *p
(3)char * const p
說(shuō)明上面三種描述的區(qū)別;
如果const位于星號(hào)的左側(cè),則const就是用來(lái)修飾指針?biāo)赶虻淖兞?,即指針指向?yàn)槌A?
如果const位于星號(hào)的右側(cè),const就是修飾指針本身,即指針本身是常量。
(1)const char *p
一個(gè)指向char類型的const對(duì)象指針,p不是常量,我們可以修改p的值,使其指向不同的char,但是不能改變它指向非char對(duì)象,如:
const char *p;
char c1='a';
char c2='b';
p=&c1;//ok
p=&c2;//ok
*p=c1;//error
(2)char const *p
(3)char * const p
這兩個(gè)好象是一樣的,此時(shí)*p可以修改,而p不能修改。
(4)const char * const p
這種是地址及指向?qū)ο蠖疾荒苄薷摹?/p>
6.下面是C語(yǔ)言中兩種if語(yǔ)句判斷方式。請(qǐng)問哪種寫法更好?為什么?
int n;
if (n == 10) // 第一種判斷方式
if (10 == n) // 第二種判斷方式
如果少了個(gè)=號(hào),編譯時(shí)就會(huì)報(bào)錯(cuò),減少了出錯(cuò)的可能行,可以檢測(cè)出是否少了
看過(guò)“關(guān)于c++的面試題”的人還看了:
3.C#面試題大全