今天參加了一家it公司的筆試,涉及到幾個c++的問題,之前並沒有搞太清楚,小總結一下。
問題一:關於c++的虛函式,引入虛函式的意義。
我們知道,多型性是物件導向程式設計的重要特徵,一般定義是:向不同物件傳送同一訊息,不同物件在接收到該訊息時會有不同的處理方法。那麼實現多型性有兩種方式,一種是靜態多型性,另一種是動態多型性。
靜態多型性是通過函式和運算子的過載來實現的,從編譯器的角度看,它在程式編譯時就知道呼叫函式的全部資訊,在編譯時系統就知道要呼叫哪個函式了,這種方式的速度快、效率高,但是缺乏一定靈活性。
動態多型性 就是通過虛函式來實現,從編譯器的角度來看,在編譯時並不知道呼叫哪個函式,而是在程式執行過程中才動態地確定操作所針對的物件。利用虛函式,可以設計出易於功能拓展的系統。虛函式要使用virtual進行修飾,它一般在基類進行函式宣告,在派生類中進行具體函式定義。
問題二:關於析構函式
我們都知道析構函式一般在結束某個物件(假設為區域性物件)的呼叫前呼叫它來釋放資源,但是要注意幾點:1、靜態區域性物件在函式呼叫結束時物件並不釋放,因此不呼叫析構函式,只在main函式結束或呼叫exit函式結束程式時系統才呼叫靜態區域性物件的析構函式釋放資源;2、如果定義的是乙個全域性物件,直到main函式結束和呼叫了exit函式時才呼叫其析構函式;3、當用new給物件分配資源,使用delete刪除物件時,先要呼叫析構函式;4、建構函式可以過載,而析構函式不能過載,只能將其宣告為虛函式來實現多型性,當派生類物件從記憶體中撤銷時一般先呼叫派生類的析構函式,再呼叫基類的析構函式,但用new簡歷的臨時物件並定義了乙個指向該基類的指標變數,在使用delete撤銷物件時,不執行派生類中的析構函式,而是只執行基類的析構函式,當將基類的析構函式宣告為虛函式後,就可以執行派生類的析構函式了。
問題三:關於物件複製問題
由於物件結構較為複雜,所以直接使用一般的賦值語句是無法實現複製的,可以有兩種方法,一種是過載「=」操作符,使其具有直接複製物件功能,另一種是使用拷貝建構函式,拷貝建構函式宣告方式:box::box(const box&x)
問題四:使用ifstream流類定義乙個物件開啟檔案時預設的開啟方式
ifstream myfile;
myfile.open(「filename」);
open函式由兩個引數組成,第乙個引數是指定的檔案路徑名,第二個引數是開啟模式,系統預設按ios::in方式開啟,即為隱含開啟方式。
這次筆試還考了20幾道數學邏輯題,主要是些小學初中奧賽的題,不過在短時間不一定能做對哦,還得好好練練數學邏輯和推理!
面試經歷1
隨著畢業腳步的來臨,投的簡歷也會也來越多,面試經歷也會越來越多,為了讓簡歷不會石沉大海,一定要有的放矢,想清楚自己的工作方向,寫好自己的簡歷也是很重要的,什麼改寫,什麼要重點突出,這會讓hr在刷選簡歷的時候命中率極大提高。最近在找實習工作,感謝某某科技給予的筆試經歷,在筆試的過程中一看選擇題,發現沒...
位元組跳動筆試面試經歷
一面是一位和藹的中年程式設計師。1.高階函式 一步一步引導我說出思路!最後面試結束後我查了乙個是乙個js術語。面試官對我說 因為你們學校學習和工作之間是有差距的,所以不會直接問你知識,我會給你一些線索看看你的思路 這個問題大概答出了大半題,大概是這樣。2.筆試經歷 讓我驚訝的是面試官還願意聽聽我筆試...
江蘇巨集智科技筆試面試經歷
雖說是近期,但也只有一周罷了,不過影響也挺大的,關於找工作的心境也發生了一些變化.11月14日坐火車返回南京.也沒有特別準備,大致看了下,將要筆試的是一家蘇州的外包公司,而且還是給日本做的,之後和大波的 中還被他戲稱我要賣身給鬼子.11月15日坐校車前往本部,算起來,大學以來第二次來本部吧,真有種詭...