vc c軟體軟體工程師面試題

2021-05-08 08:56:23 字數 2037 閱讀 5800

對試題3,if(strlen(str1) <= 10)應改為if(strlen(str1) < 10),因為strlen的結果未統計』\0』所占用的1個位元組。

剖析:考查對基本功的掌握:

(1)字串以』\0』結尾;

(2)對陣列越界把握的敏感度;

(3)庫函式strcpy的工作方式,如果編寫乙個標準strcpy函式的總分值為10,下面給出幾個不同得分的答案:

2分void strcpy( char *strdest, char *strsrc )

4分void strcpy( char *strdest, const char *strsrc )

//將源字串加const,表明其為輸入引數,加2分

7分void strcpy(char *strdest, const char *strsrc)

10分//為了實現鏈式操作,將目的位址返回,加3分!

char * strcpy( char *strdest, const char *strsrc )

從2分到10分的幾個答案我們可以清楚的看到,小小的strcpy竟然暗藏著這麼多玄機,真不是蓋的!需要多麼紮實的基本功才能寫乙個完美的strcpy啊!

(4)對strlen的掌握,它沒有包括字串末尾的'\0'。

讀者看了不同分值的strcpy版本,應該也可以寫出乙個10分的strlen函式了,完美的版本為: int strlen( const char *str ) //輸入引數const

return len;

}  試題4:

void getmemory( char *p )

void test( void )

試題5:

char *getmemory( void )

void test( void )

試題6:

void getmemory( char **p, int num )

void test( void )

試題7:

void test( void )

解答:試題4傳入中getmemory( char *p )函式的形參為字串指標,在函式內部修改形參並不能真正的改變傳入形參的值,執行完

char *str = null;

getmemory( str );

後的str仍然為null;

試題5中

char p = "hello world";

return p;

的p陣列為函式內的區域性自動變數,在函式返回後,記憶體已經被釋放。這是許多程式設計師常犯的錯誤,其根源在於不理解變數的生存期。

試題6的getmemory避免了試題4的問題,傳入getmemory的引數為字串指標的指標,但是在getmemory中執行申請記憶體及賦值語句

*p = (char *) malloc( num );

後未判斷記憶體是否申請成功,應加上:

if ( *p == null )

試題7存在與試題6同樣的問題,在執行

char *str = (char *) malloc(100);

後未進行記憶體是否申請成功的判斷;另外,在free(str)後未置str為空,導致可能變成乙個「野」指標,應加上:

str = null;

試題6的test函式中也未對malloc的記憶體進行釋放。

剖析:試題4~7考查面試者對記憶體操作的理解程度,基本功紮實的面試者一般都能正確的回答其中50~60的錯誤。但是要完全解答正確,卻也絕非易事。

對記憶體操作的考查主要集中在:

(1)指標的理解;

(2)變數的生存期及作用範圍;

(3)良好的動態記憶體申請和釋放習慣。

再看看下面的一段程式有什麼錯誤:

swap( int* p1,int* p2 )

在swap函式中,p是乙個「野」指標,有可能指向系統區,導致程式執行的崩潰。在vc++中debug執行時提示錯誤「access violation」。該程式應該改為:

swap( int* p1,int* p2 )

{ int p;

p = *p1;

*p1 = *p2;

*p2 = p;

C軟體工程師面試題

本文由njutzzr貢獻 1 c 是物件導向的程式語言嗎?c 中虛函式 virtual 是什麼?有什麼好處?1 c 不是純物件導向的語言,c 是物件導向和過程的,因為c 支援類和過程。2 虛函式 virtual 具有傳遞性,即子類中對父類的虛函式的重寫,也是乙個虛函式 不過函式的參數列也要一樣。3 ...

軟體工程師試題二

一 單向選擇題 四選 一 每小題3分,共18分 1 軟體的發展經歷了 個發展階段。a.一b.二c.三d.四 2 需求分析的任務不包括 a.問題分析b.系統設計c.需求描述d.需求評審。3 乙個軟體的寬度是指其控制的 a.模組數b.層數c.跨度d.厚度 4 當模組中包含複雜的條件組合,只有 能夠清晰地...

招聘軟體工程師面試測試題

招聘軟體工程師面試測試題 時間 2小時 一 資料庫表結構說明 二 資料庫表存在如下記錄資料 三 題目 請依據能力選做部分或全做 1 寫出sql,列出所有學生各門課程的成績,並按學生 課程做公升序排序。查詢結果參考如下 10分 stud name cour name score 李四數學 77.0 李...