程序員面試題目_第1頁
程序員面試題目_第2頁
程序員面試題目_第3頁
程序員面試題目_第4頁
程序員面試題目_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第第頁程序員面試題目

1.是不是一個父類寫了一個virtual函數(shù),假如子類掩蓋它的函數(shù)不加virtual,也能實現(xiàn)多態(tài)?

virtual修飾符會被隱形繼承的。private也被集成,只事派生類沒有訪問權限而已。virtual可加可不加。子類的空間里有父類的全部變量(static除外)。同一個函數(shù)只存在一個實體(inline除外)。子類掩蓋它的函數(shù)不加virtual,也能實現(xiàn)多態(tài)。在子類的空間里,有父類的私有變量。私有變量不能徑直訪問。

2.輸入一個字符串,將其逆序后輸出。(運用C++,不建議用偽碼)

#include

usingnamespacestd;

voidmain()

{

chara[50];memset(a,0,sizeof(a));

inti=0,j;

chart;

cin.getline(a,50,);

for(i=0,j=strlen(a)-1;istrlen(a)2;i++,j--)=p=

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

coutaendl;p=

}

//第二種

stringstr;

cinstr;

str.replace;

coutstr;p=

3.請簡約描述Windows內存管理的方法。

內存管理是操作系統(tǒng)中的重要部分,兩三句話唯恐誰也說不清晰吧~~

我先說個大略,盼望能夠拋磚引玉吧

當程序運行時需要從內存中讀出這段程序的代碼。代碼的位置需要在物理內存中才能被運行,由于現(xiàn)在的操作系統(tǒng)中有特別多的程序運行著,內存中不能夠完全放下,所以引出了虛擬內存的概念。把哪些不常用的程序片斷就放入虛擬內存,當需要用到它的時候在load入主存(物理內存)中。這個就是內存管理所要做的事。內存管理還有另外一件事需要做:計算程序片段在主存中的物理位置,以便CPU調度。

內存管理有塊式管理,頁式管理,段式和段頁式管理?,F(xiàn)在常用段頁式管理

塊式管理:把主存分為一大塊、一大塊的,當所需的程序片斷不在主存時就安排一塊主存空間,把程序片斷l(xiāng)oad入主存,就算所需的程序片度只有幾個字節(jié)也只能把這一塊安排給它。這樣會造成很大的糜費,平均糜費了50%的內存空間,但時易于管理。

頁式管理:把主存分為一頁一頁的,每一頁的空間要比一塊一塊的空間小許多,顯著這種方法的空間利用率要比塊式管理高許多。

段式管理:把主存分為一段一段的,每一段的空間又要比一頁一頁的空間小許多,這種方法在空間利用率上又比頁式管理高許多,但是也有另外一個缺點。一個程序片斷可能會被分為幾十段,這樣許多時間就會被糜費在計算每一段的物理地址上(計算機最耗時間的大家都知道是I/O吧)。

段頁式管理:結合了段式管理和頁式管理的優(yōu)點。把主存分為假設干頁,每一頁又分為假設干段。好處就很明顯,不用我多說了吧。

各種內存管理都有它自己的.方法來計算出程序片斷在主存中的物理地址,其實都很相像。

這只是一個大略而已,不足以說明內存管理的皮毛。無論哪一本操作系統(tǒng)書上都有具體的講解

4.

#includestdaf*.h

#defineSQR(*)***

intmain(intargc,char*argv[])

{

inta=10;

intk=2;

intm=1;

a/=SQR(k+m)/SQR(k+m);

printf(%d,a);

return0;

}

這道題目的結果是什么啊?

define只是定義而已,在編擇時只是簡約代換***而已,并不經(jīng)過算術法那么的

a/=(k+m)*(k+m)/(k+m)*(k+m);

=a/=(k+m)*1*(k+m);

=a=a/9;

=a=1;

PS:經(jīng)過本人驗證,雖然結果一樣,但是應當不是這樣運算的,應當是a/=k+m*k+m/k+m*k+m;

由于SQR(k+m)/SQR(k+m)的值是7,而不是9。

5.

const符號常量;

(1)constchar*p

(2)charconst*p

(3)char*constp

說明上面三種描述的區(qū)分;

假如const位于星號的左側,那么const就是用來修飾指針所指向的變量,即指針指向為常量;

假如const位于星號的右側,const就是修飾指針本身,即指針本身是常量。

(1)constchar*p

一個指向char類型的const對象指針,p不是常量,我們可以修改p的值,使其指向不同的char,但是不能轉變它指向非char對象,如:

constchar*p;

charc1=a;

charc2=b;

p=c1;//ok

p=c2;//ok

*p=c1;//error

(2)charconst*p

(3)char*constp

這兩個好象是一樣的,此時*p可以修改,而p不能修改。

(4)constchar*constp

這種是地址及指向對象都不能修改。

6.下面是C語言中兩種if語句判斷方式。請問哪種寫法更好?為什么?

intn;

if(n==10)//第一種判斷方式

if(10==n)//第二種判斷方式

假如少了個=號,編譯時就會報錯,減削了出錯的可能行,可以檢測出是否少了=

7.下面的代碼有什么問題?

voidDoSomeThing(...)

{

char*p;

...

p=malloc(1024);//安排1K的空間

if(NULL==p)

return;

...

p=realloc(p,2048);//空間不夠,重新安排到2K

if(NULL==p)

return;

...

}

A:

p=malloc(1024);應當寫成:p=(char*)malloc(1024);

沒有釋放p的空間,造成內存泄漏。

8.下面的代碼有什么問題?并請給出正確的寫法。

voidDoSomeThing(char*p)

{

charstr[16];

intn;

assert(NULL!=p);

sscanf(p,%s%d,str,n);

if(0==strcmp(str,something))

{

...

}

}

A:

sscanf(p,%s%d,str,n);這句該寫成:sscanf(p,%s%d,str,n);

9.下面代碼有什么錯誤?

Voidtest1()

{

charstring[10];

char*str1=0123456789;

strcpy(string,str1);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論