c++筆試題
答案:虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位址的陣列.而物件的隱藏成員--虛函式表指標是在執行期--也就是建構函式被呼叫時進行初始化的,這是實現多型的關鍵.
答案:只要基類在定義成員函式時已經宣告了virtue關鍵字,在派生類實現的時候覆蓋該函式時,virtue關鍵字可加可不加,不影響多型的實現。子類的空間裡有父類的所有變數(static除外)。
答案:這些函式的區別在於實現功能以及操作物件不同。
1.strcpy 函式操作的物件是字串,完成從源字串到目的字串的拷貝功能。
2.snprintf 函式操作的物件不限於字串:雖然目的物件是字串,但是源物件可以是字串、也可以是任意基本型別的資料。這個函式主要用來實現(字串或基本資料型別)向字串的轉換功能。如果源物件是字串,並且指定 %s 格式符,也可實現字串拷貝功能。
3.memcpy 函式顧名思義就是記憶體拷貝,實現將乙個記憶體塊的內容複製到另乙個記憶體塊這一功能。記憶體塊由其首位址以及長度確定。程式中出現的實體物件,不論是什麼型別,其最終表現就是在記憶體中佔據一席之地(乙個記憶體區間或塊)。因此,memcpy 的操作物件不侷限於某一類資料型別,或者說可適用於任意資料型別,只要能給出物件的起始位址和記憶體長度資訊、並且物件具有可操作性即可。鑑於 memcpy 函式等長拷貝的特點以及資料型別代表的物理意義,memcpy 函式通常限於同種型別資料或物件之間的拷貝,其中當然也包括字串拷貝以及基本資料型別的拷貝。
對於字串拷貝來說,用上述三個函式都可以實現,但是其實現的效率和使用的方便程度不同:
1.strcpy 無疑是最合適的選擇:效率高且呼叫方便。
2.snprintf 要額外指定格式符並且進行格式轉化,麻煩且效率不高。
3.memcpy 雖然高效,但是需要額外提供拷貝的記憶體長度這一引數,易錯且使用不便;並且如果長度指定過大的話(最優長度是源字串長度 + 1),還會帶來效能的下降。其實 strcpy 函式一般是在內部呼叫 memcpy函式或者用彙編直接實現的,以達到高效的目的。因此,使用 memcpy 和 strcpy 拷貝字串在效能上應該沒有什麼大的差別。
4.請編寫乙個 c 函式,該函式給出乙個位元組中被置 1 的位的個數,並請給出該題的至少乙個不同解法。
第一種
unsigned int testasone0(char log)
return num;
} 第二種
unsigned int testasone1(char log)
return num;
} 還有一種方法是x&x-1,微軟的《程式設計之美》裡有,這裡不再贅述。
5.請編寫乙個 c 函式,該函式將給定的乙個字串轉換成整數。
int invert(char *str)
return num;}
6.請編寫乙個 c 函式,該函式將給定的乙個整數轉換成字串。
void inttocharchange(int num, char* pval)
} for(j=0; j<=i; j++)
//倒置
pval[j] = '\0'; }
7.請編寫乙個 c 函式,該函式在乙個字串中找到可能的最長的子字串,該字串是由同一字元組成的。
int childstring(char*p)
//自己寫
while( i< stringlen )
else
else
len=0;
i++;
j++;
} }
eturn
maxlen;
}
IT公司筆試面試題系列(三)
1.三個float a,b,c。問值 a b c b a c a b c a c b 兩者都不行。在比較float或double時,不能簡單地比較。由於計算誤差,相等的概率很低。應判斷兩數之差是否落在區間 e,e 內。這個e應比浮點數的精度大乙個數量級。2.請講一講析構函式和虛函式的用法和作用?析構...
IT公司筆試面試題系列(四)
1.請你分別畫出osi的七層網路結構圖和tcp ip的五層結構圖。7 應用層 5應用層 6 表示層 4傳輸層 5 會話層 3 網路層 4 傳輸層 2 資料鏈路層 3 網路層 1物理層 2 資料鏈路層 1 物理層 2.請你詳細地解釋一下ip協議的定義,在哪個層上面?主要有什麼作用?tcp與udp呢?i...
筆試面試題
1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...