6.2 筆試真題 & 詳解
1、 static_cast與 dynamic_cast的區(qū)別。
2、const char * p; char const * p; char * const p; const char const *p; 以上四種表示的不同是什么?
3、手工實現(xiàn) strcpy 函數(shù),不能使用任何庫函數(shù),要求處理 NULL、溢出等異常。
4、下面類的兩種不同的構造函數(shù)的區(qū)別。 Sample::Sample(string name):_name(name){}
Sample::Sample(string name){_name=name;}
5、類繼承后成員變量的可見性(三種類型的變量及 public, private類型的繼承)。
6、產(chǎn)生繼承類實例時構造函數(shù)的調(diào)用次序(基類包含虛函數(shù),繼承類重寫了)。
7、空類的系統(tǒng)自動產(chǎn)生的函數(shù)(至少寫4個), class Sample{ };
8、怎么防止類被繼承?對于不能被繼承的類,怎么初始化及銷毀它的實例?
Session 21、稀疏矩陣存儲采用的數(shù)據(jù)結構及其時間復雜度,并寫出插入一個元素的函數(shù)。
2、對于給定的一個數(shù)字,將其對應的二進制的最右邊的1改為 0("turn off")例如給你。14,二進制為1110,函數(shù)處理后為1100,對應為12 ,寫出實現(xiàn)這個功能的函數(shù)。
3、給你了求 fibonacc 數(shù)列的遞歸實現(xiàn),要求給出優(yōu)化的函數(shù)。
4、多線程互斥鎖的使用,不要產(chǎn)生死鎖。
5、設計模式題,對于給定的類的繼承關系圖,根據(jù)新的條件修改,圖要表現(xiàn)出類間的關系(類間的關系有聚合,繼承,泛化等)(is_a has_a等)。
6、五張牌,兩紅三籃(你看不到顏色),目標是取到紅牌。你在第一次取后,組織者從剩余的四張中取走一張黑牌,你現(xiàn)在有兩種選擇:不換牌和換一次牌,問哪種選擇取得紅牌的概率大?兩種選擇不同是什么?
試題 21、static_cast與 dynamic_cast 的區(qū)別,一個靜態(tài)轉換,不提供類型檢查,不安全;一個提供動態(tài)類型檢查,運行時檢查類型,試探性的轉換,比較安全,不是該類型的父類時,返回 NULL指針。
2、const char * p; har const * p;7\ char * const p; const char const *p;以上四種表示的不同是什么? 指向常量字符串的指針,指向常量字符串的指針,字符串指針常量,指向常量字符串的字符指針。
3、手工實現(xiàn)strcpy函數(shù),不能使用任何庫函數(shù),要求處理NULL、溢出等異常;
4、下面類的兩種不同的構造函數(shù)的區(qū)別。Sample::Sample(string name):_name(name){} sample::Sample(string name){_name=name;}
解答:+line1 是構造函數(shù)初始化列表初始化,line2 是構造函數(shù)體內(nèi)對成員賦值。-初始化列表初始化和構造函數(shù)體內(nèi)初始化的區(qū)別主要是在與數(shù)據(jù)成員的類型。從概念上講,可以認為構造函數(shù)分兩個階段執(zhí)行:(1)初始化階段;(2)普通的計算階段。計算階段由構造函數(shù)體內(nèi)的所有語句完成。沒有在構造函數(shù)初始化列表里初始化的成員,使用與初始化變量同樣的規(guī)則進行初始化。運行該類型的默認構造函數(shù)來初始化類類型的數(shù)據(jù)成員。局部作用域的內(nèi)臵類型成員不被初始化,全局作用域的成員初始化為有三種成員必須在初始化列表中初始化:沒有默認構造函數(shù)的類類型成員、const 成員、引用類型成員。
5、類繼承后成員變量的可見性(三種類型的變量及 public, private 類型的繼承) public 繼承:public >> public, protected>>protected, private >> private'
protected 繼承:public,protected >> protected, private>>private private 繼承:
all >> private.