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

2022-07-05 03:21:12 字數 2165 閱讀 8344

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

版本控制可讓您:

我建議您包括以下版本控制優點:

使用版本控制系統(vcs),允許所有團隊成員隨時自由處理任何檔案。vcs稍後將允許您將所有更改合併到乙個通用版本中。

所有過去的版本和變體都整齊地包裝在vcs中。在需要時,您可以隨時獲取任何版本,並且手邊將有完整專案的快照。

每次儲存專案的新版本時,vcs都要求您提供更改內容的簡短描述。此外,您可以看到檔案內容中的確切更改。這使您可以知道誰在專案中進行了哪些更改。

像git這樣的分布式vcs允許所有團隊成員擁有完整的專案歷史記錄,因此,如果**伺服器出現故障,則可以使用任何隊友的本地git儲存庫。

最後告訴面試官,分支策略在乙個組織之間會有所不同,所以我知道基本的分支操作,例如刪除,合併,簽出分支等。

您可以僅提到您曾經使用過的vcs工具:「我從事過git,與svn等其他vcs工具相比,它具有乙個主要優勢是它是乙個分布式版本控制系統。」

分布式vcs工具不一定依賴**伺服器來儲存專案檔案的所有版本。相反,每個開發人員都「轉殖」儲存庫的副本,並在其自己的硬碟上擁有專案的完整歷史記錄。

以下是一些基本的git命令:

這個問題可能有兩個答案,因此請確保同時包括這兩個原因,因為根據情況,可以使用以下任一選項:

有兩種方法可以將最後的n個提交壓縮為乙個提交。在答案中包括以下兩個選項:

我建議您首先給git bisect乙個小的定義,git bisect用於通過二進位制搜尋來查詢引入了bug的提交。git bisect的命令是

**git bisect

據我說,您應該首先說git rebase是乙個命令,它將把另乙個分支合併到您當前正在工作的分支中,然後將所有在rebased分支之前的本地提交移動到該歷史的頂部科。

現在,您已經為示例定義了git變基時間,以展示如何在合併之前使用它解決特徵分支中的衝突(如果從master建立了乙個功能分支,並且從那時起master分支已收到新的提交,git變基)可用於將要素分支移至母版的頂端。

該命令將有效地重放主節點頂端的功能分支中所做的更改,從而使衝突得以解決。謹慎完成後,這將使功能分支可以相對輕鬆地合併到master中,有時甚至可以作為簡單的快進操作。

我建議您先簡要介紹一下健全性檢查。健全性測試或冒煙測試確定了繼續測試是否可行和合理。

現在說明如何實現此目的,這可以通過與儲存庫的預提交掛鉤相關的簡單指令碼來完成。在提交之前,甚至在要求您輸入提交訊息之前,都會觸發預提交掛鉤。在此指令碼中,可以執行其他工具,例如linters,並對提交到儲存庫中的更改執行完整性檢查。

對於此答案,而不僅僅是告訴命令,請解釋此命令的確切作用,這樣可以說:要獲取在特定提交中已更改的列表檔案,請使用命令

git diff-tree -r

給定提交雜湊,這將列出該提交中已更改或新增的所有檔案。-r標誌使命令列出單個檔案,而不是僅將它們摺疊為根目錄名稱。

您還可以包括以下提及的要點,儘管它是完全可選的,但將有助於打動面試官。

輸出還將包含一些額外的資訊,可以通過包含兩個標誌來輕鬆抑制它們:

git diff-tree –no-commit-id –name-only -r

在這裡,–no-commit-id將禁止在輸出中顯示提交雜湊,並且–name-only將僅顯示檔名,而不是其路徑。

可以通過三種方式配置指令碼,以便每次儲存庫通過推送接收到新的提交時都執行該指令碼,一種方法是根據確切何時需要觸發指令碼來定義預接收,更新或後接收鉤子。

掛鉤對於每個git儲存庫都是本地的,並且沒有版本化。指令碼可以在「 .git」目錄下的hooks目錄中建立,也可以在其他位置建立,並且可以將指向這些指令碼的鏈結放在目錄中。

我建議您同時包括以下兩個命令:

git branch –merged列出已合併到當前分支中的分支。

git branch –no-merged列出尚未合併的分支。

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

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

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

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

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

問1 請用簡單的語言告訴我c 是什麼?答 c 是在c語言的基礎上開發的一種物件導向程式設計語言,應用廣泛。c 支援多種程式設計正規化 物件導向程式設計 泛型程式設計和過程化程式設計。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是最受廣大程式設計師受用的最強大程式語言之一,支援類 類 封裝...