必須掌握的20道技術面試題

2021-08-27 08:49:35 字數 2032 閱讀 4624

問1:請用簡單的語言告訴我c++ 是什麼?

答:c++是在c語言的基礎上開發的一種物件導向程式設計語言,應用廣泛。c++支援多種程式設計正規化 --物件導向程式設計、泛型程式設計和過程化程式設計。 其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是最受廣大程式設計師受用的最強大程式語言之一,支援類:類、封裝、過載等特性!

問2:c和c++的區別?

答:c++在c的基礎上增添類,c是乙個結構化語言,它的重點在於演算法和資料結構。c程式的設計首要考慮的是如何通過乙個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制),而對於c++,首要考慮的是如何構造乙個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。

問3:什麼是物件導向(oop)?

答:物件導向是一種對現實世界理解和抽象的方法、思想,通過將需求要素轉化為物件進行問題處理的一種思想。

問4:什麼是多型?

答:多型是指相同的操作或函式、過程可作用於多種型別的物件上並獲得不同的結果。不同的物件,收到同一訊息可以產生不同的結果,這種現象稱為多型。

問5:設計模式懂嘛,簡單舉個例子?

答:設計模式(design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。

比如單例模式,保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

適用於:當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它時;當這個唯一例項應該是通過子類化可擴充套件的,並且客戶應該無需更改**就能使用乙個擴充套件的例項時。

比如工廠模式,定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method 使乙個類的例項化延遲到其子類。

適用於:當乙個類不知道它所必須建立的物件的類的時候;當乙個類希望由它的子類來指定它所建立的物件的時候;當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。

問:物件導向設計原則

答: 依賴倒置原則,高層模組(穩定)不應該依賴低層模組(變化),二者都應該依賴於抽象(穩定)

開放封閉原則,對擴充套件開放,對更改封閉;類模組應該是可擴充套件的,但是不可修改的

單一職責原則,乙個類應該僅有乙個引起它變化的原因,變化的方向隱含著類的責任

替換原則(lsp),子類必須能夠替換它們的基類,繼承表達型別抽象

介面隔離原則(isp),不應該強迫客戶程式依賴它們不用的方法,介面應該小而完備。

優先使用物件組合,而不是類繼承:繼承破壞了封裝性,組合只要求被組合物件有良好定義的介面

封裝變化點:一側變化一側穩定

針對介面程式設計,而不是針對實現程式設計:

重構技法:靜態->動態;早繫結->晚繫結;繼承->組合;編譯時依賴->執行時依賴;緊耦合->松耦合

問:引用和指標的區別

答: 1)指標是乙個實體,定義指標需要分配記憶體,引用只是乙個變數的別名,不分配新的記憶體。

2)引用必須在定義時進行初始化,指標可以定義成空指標

3)引用的位址不可以改變(引用的值可以改變),但指標的位址是可以改變的。

問:c/c++程式的記憶體分割槽

1)、棧區(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其

操作方式類似於資料結構中的棧。

2)、堆區(heap) — 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os回

收 。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶。

3)、全域性區(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的

全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另

一塊區域。 - 程式結束後由系統釋放。

4)、文字常量區 —常量字串就是放在這裡的。 程式結束後由系統釋放

5)、程式**區—存放函式體的二進位制**。

12 進大廠必須掌握的面試題 持續測試面試

我將建議您遵循以下提到的解釋 連續測試是作為軟體交付管道的一部分執行自動測試的過程,以獲得與最新版本相關的業務風險的即時反饋。這樣,每個構建都將得到持續測試,從而使開發團隊能夠快速獲得反饋,從而可以防止這些問題發展到軟體交付生命週期的下乙個階段。由於無需手動重建專案並在進行更改後重新執行所有測試,因...

10 進大廠必須掌握的面試題 版本控制面試

這可能是您在面試中最容易遇到的問題。我的建議是首先給出版本控制的定義。它是乙個記錄一段時間內對乙個檔案或一組檔案的更改的系統,以便您以後可以呼叫特定版本。版本控制系統由乙個 共享儲存庫組成,同事可以在其中對檔案或檔案集進行更改。然後,您可以提及版本控制的用途。版本控制可讓您 我建議您包括以下版本控制...

11 進大廠必須掌握的面試題 持續整合面試

我將建議您通過對持續整合 ci 進行小的定義來開始此答案。這是一種開發實踐,要求開發人員每天多次將 整合到共享儲存庫中。然後,每個簽入均由自動構建進行驗證,從而使團隊能夠及早發現問題。我建議您說明您在上乙份工作中是如何實施的。您可以參考以下給出的示例 在上圖所示的圖中 開發人員將 檢出到其專用工作區...