軟件工程面試問題和答案 [適合應屆生和有經驗者]

已發表: 2020-11-18

軟件工程是當今最受歡迎的職業選擇之一。 在這個競爭激烈的領域中,成功的專業人士必須平衡他們的技術、業務和個人技能,才能在遊戲中保持領先。

此外,技術進步正在加速和顛覆行業。 因此,了解基本概念至關重要。 通過這篇文章,我們將介紹最熱門的軟件工程面試問題和答案,以指導您進行準備。

在繼續進行問答之前,讓我們先看一下您可以在該領域從事的一些工作名稱:

  • 軟件設計師
  • 全棧開發人員
  • 軟件程序員
  • IT項目經理
  • 信息系統經理
  • 數據科學家
  • 機器學習工程師
  • 雲工程師
  • 網絡安全工程師

在面試上述任何職位時,您的未來雇主將測試您的概念知識和技能。 因此,有抱負的軟件工程師可以受益於將他們的學位與實踐經驗相結合,無論是通過動手項目還是實習。

此外,您的溝通能力和團隊導向可以在使您與競爭對手區分開來方面發揮重要作用。 因此,當您為招聘週期做好準備時,請記住這些事情。

從世界頂級大學學習在線軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

有了這個,現在是時候深入研究軟件工程工作面試中被問到最多的問題了。

閱讀:軟件開發職業

軟件工程面試問答

1. 列出不同類型的軟件。

計算機軟件可分為以下幾類:

  • 系統軟件
  • 應用程序軟件
  • 網絡應用
  • 嵌入式軟件
  • 人工智能軟件
  • 科學軟件

2. 區分計算機程序和計算機軟件。

計算機程序包括能夠在執行時執行明確定義的任務的編程代碼。 相反,除了編程代碼之外,計算機軟件還包括文件(文檔和用戶指南)。 因此,程序和軟件都包含一組指令,但與程序相比,軟件的範圍更廣。

3.解釋SDLC的主要步驟。

SDLC 是軟件開發生命週期的縮寫形式。 它由許多階段組成,包括:

  • 規劃:軟件估算和項目規劃的其他方面
  • 可行性分析:需求分析,列出軟件規格
  • 軟件設計:確定設計模式,開發原型
  • 軟件開發:將需求轉化為工作代碼
  • 測試:檢查代碼的規定要求、質量、安全開發實踐等。
  • 部署:實施軟件並將其與不同系統集成以創建功能齊全的產品
  • 項目文檔:收集資源並組織軟件文件,包括代碼、文檔和許可證。
  • 培訓和支持:交流新技術的使用、功能和可能性,促進有效的知識轉移
  • 操作和維護:報告問題並改進產品

4. 列出幾個基本的 SDLC 模型和方法。 在你看來,哪個是最好的?

Waterfall、V-Model、Iterative、Spiral、Big-bag 和 Agile 是一些最流行的 SDLC 模型。

至於排名最高的方法,沒有單一的答案,因為解決方案取決於軟件開發過程的需要。 例如,瀑布模型適用於需要靈活性的長期項目。 當有未知需求時,V 形模型效果很好。 螺旋模型非常適合高度定制的項目等。

5. 軟件再工程是什麼意思?

軟件再造旨在改進軟件系統。 這是在不干擾其當前功能的情況下更新軟件的過程。 它可以包括可維護性任務,例如添加新功能以使軟件產品更加高效和用戶友好。

6. 在軟件開發的上下文中定義以下內容:(i) 驗證 (ii) 確認 (iii) 調試

(i) 驗證涉及執行一系列活動以確保軟件能夠實現特定功能。

(ii) 驗證是關於確認軟件滿足客戶的需求。

(iii) 調試是測試過程的一部分,包括消除錯誤。

7. 您將如何確保您的代碼快速且安全?

如果代碼執行速度很慢,您將計算程序的時間複雜度。 它是指執行語句的次數,這取決於編程語言、操作系統和處理能力等因素。

此外,無論您使用哪種編程語言,都有多種方法可以保護您的代碼。 在這裡,安全編碼實踐的知識變得至關重要。 例如,使用免費工具掃描代碼可以幫助您檢測 GitHub 上的開源包中的漏洞。

8. 功能性和非功能性軟件需求是什麼?

需求是對軟件系統、其所需特性和目標功能的描述。 它們可以分為功能性需求和非功能性需求。

功能需求是用戶對提議產品的期望,而非功能需求與外觀、性能、安全性和用戶界面等方面相關。

9. 您將如何跟踪軟件需求?

市場上有各種各樣的工具可用於收集和管理軟件需求。 Modern Requirements、ReQtest、Jama Connect 和 Orcanos 是當今從業者中最受歡迎的一些 RM 軟件。 選擇基於方法和目標,並且因項目而異。 儘管如此,跟踪過程的第一步是列出需求並創建一個 Excel 表,其中包含類型、依賴關係、優先級等詳細信息。

10、你對模塊化和內聚了解多少?

模塊化將軟件系統劃分為離散的模塊。 在這裡,每個模塊都應獨立執行指定的任務。 內聚測量並定義模塊不同元素之間的內部可靠性。

11. 軟件項目經理做什麼的?

項目經理的任務是項目規劃、進度監控和溝通等職責。 在軟件開發過程中,項目經理的主要職責是管理資源,平衡風險,並按照時間、成本和質量約束交付預期的產品。

12. 什麼是軟件範圍?

軟件範圍包括交付軟件產品所需的所有活動。 它定義了以下方面來簡化開發過程:

  • 產品將做什麼
  • 什麼不是項目的一部分
  • 項目估算(在顧問、專家或公式的幫助下)

13. 您將如何確定項目的可行性?

可行性研究有助於衡量軟件開發項目可能給組織帶來的實際利益。 軟件分析員在準備最終報告之前會考慮三個主要因素。 我們在下面詳細解釋了它們:

  • 經濟:附加功能和工具的成本、培訓成本以及最終項目的整體成本效益分析
  • 技術:機器和操作軟件的適用性,包括利用可用的技術支持和人力資源開發擬議系統的可能性
  • 運營:能夠以估計的成本進行調整併跟上需求和項目的價值。

14. 提及一些軟件分析和設計工具。

軟件分析和設計程序有助於將需求規範轉化為實施。 以下是一些標準工具:

  • 數據流圖
  • 數據字典
  • 結構化圖表
  • HIPO(分層輸入過程輸出)圖表
  • 實體關係圖或 ER 圖
  • 決策表

15. 結構化英語和偽代碼有什麼區別?

用於編寫程序模塊結構的母語英語稱為結構化英語。 它包括編程語言關鍵字。

相比之下,偽代碼方法與編程語言非常相似,但沒有任何特定的語法。

另請閱讀:軟件開發項目理念

16. 您如何確定軟件產品的大小?

您可以通過計算交付代碼的行數或功能點來計算軟件大小。 功能點被認為是一種相關的度量,因為它們代表了軟件產品提供的功能。

17. 什麼是軟件指標?

軟件度量是指對需求和產品本身的度量。

  • 需求指標包括長度和完整性等方面。
  • 產品指標與編碼行數、設計、測試指標、面向對象指標等有關。

18. 有哪些有用的項目估算技術?

項目估算是健全的軟件項目規劃的一個組成部分。 以下是一些廣泛使用的方法:

  • 分解(軟件規模、基於問題和基於過程的技術)
  • 經驗(回歸分析、建設性成本模型和軟件方程)

19. 您如何衡量項目執行情況?

軟件實施的審查需要活動監控、里程碑檢查表和狀態報告。

項目管理工具提供了一種檢查進度的舒適方式。 甘特圖、Pert 圖和資源直方圖是其他一些示例。

20. 定義軟件配置管理。

配置管理是關於跟踪和控制軟件項目中的更改。 保持軟件系統與組織規則和法規的一致性至關重要。

21.質量保證和質量控制有什麼區別?

進行質量保證檢查以確定是否遵循了正確的開發過程。 另一方面,質量控制與保持最終產品的質量有關。

22. 比較面向接口、面向對象和麵向方面的編程。

接口編程是一種基於契約的架構模式,用於在組件級別實現模塊化設計。

面向對象編程處理編寫具有單一目的的粒度對象。

面向切面的編程旨在分離代碼,使多個對象承載主要任務,獨立對象承載次要任務。

23. 什麼時候聲明一個類為抽像類?

不能實例化在其聲明中包含抽象關鍵字的類。 在下面提到的情況下,最好將一個類聲明為抽像類。

  • 當類中的至少一個方法被聲明為抽象時。
  • 當從抽像類繼承的類仍然包含抽象方法時。

24. 提及以下之間的主要區別:(i) 堆棧與隊列 (ii) 面向對象與面向組件的設計 (iii) 線程與進程 (iv) EXE 與 DLL (v) 標記和分支

(i) 堆棧遵循後進先出 (LIFO) 原則。 而隊列總是先進先出,即先進先出。

(ii) 面向對象的設計可以在一定程度上融入到基於組件的設計中。 但是,反過來是不可能的。

(iii) “進程”是指正在執行的計算機程序的實例。 它更重,需要更多的上下文切換。 “線程”是調度程序獨立管理的輕量級進程。 一個程序可以有多個線程。

(iv) EXE 和 DLL 都是需要存儲空間才能運行的程序。 EXE 是一個基本的可執行程序,而 DLL 則更具動態性。 它是一個可以加載和執行的外部代碼存儲庫,因此佔用的空間更少。

(v) 標籤保留在特定版本的代碼上,通常不會更改。 它們充當版本控制發布的臨時存放場所。 分支總是指向開發線的頂端。 因此,一旦推送新的提交或將更改合併到主幹中,它們就會被刪除。

25. 使用catch(異常)是個好主意嗎?

當異常類型已知時,應使用 Catch(異常)。 這是一個壞主意,因為當沒有定義變量時您無法讀取異常。

26. 兩者之間哪個更可取:強類型或弱類型?

強類型應該是單一的弱類型,因為它在編譯時檢查變量。 此外,它可以大大減少系統錯誤。 弱類型語言僅在運行時執行轉換,可能會產生不可預知的結果。

27. 什麼是結構化設計?

結構化設計概念化了遵循“分而治之”策略的問題。 這種系統的方法需要將問題分解為其子元素並單獨處理這些較小的問題。 由於這種策略,它也被稱為解決方案設計方法。

28. 描述函數式編程。

函數式編程方法涉及數學概念的應用。 它提供了一種計算數學函數的方法,因此無論程序狀態如何都可以生成結果。

29. 您如何確定需求的優先級?

首先,您必須評估數據結構。 然後,您需要製定一個代碼結構來支持它。

30、你對CASE工具了解多少?

CASE 是計算機輔助軟件工程的縮寫。 它由一組支持 SDLC 活動的自動化軟件應用程序組成。 CASE 工具可以通過提供以下服務來增強和加強軟件項目:

  • 需求分析
  • 結構分析
  • 代碼生成
  • 測試用例生成
  • 文件製作
  • 逆向工程

外賣

勞工統計局(美國)預測未來十年對軟件開發人員的需求將增長 22%。 印度很可能會遇到同樣的需求激增。

根據 LinkedIn 的“印度勞動力報告”,其平台上的軟件工程職位發佈在 2018 年上半年是多個行業中最高的。隨著我們向前發展,教育、法律和設計等突出行業的機會將繼續上漲。 閱讀有關印度軟件開發人員薪水的信息。

正如通過上面列出的問題所觀察到的,想要進入這個行業的人需要廣泛的相互關聯的能力。 以下是您需要掌握的硬技能的快照:

  • C++、C#、Java
  • HTML, CSS JavaScript
  • SQL、Python、引導程序
  • 面向對象設計
  • 調試和測試軟件
  • 使用現代語言(Ruby、Go、R 等)進行編碼
  • 人工智能項目知識等

除了這些技術能力,你還需要掌握多任務處理、溝通、時間管理、注重細節和團隊合作的藝術。

至於學歷,計算機科學或相關領域的學士學位通常涵蓋入門級工作的最低資格標準。 但每個人的職業道路都有些不同。 有些人可能是通過自學、在線課程或編碼訓練營進入勞動力市場的。 其他人可能在 IT 工作幾年後攻讀了高級學位。

擁有研究生級別的證書可以幫助您快速開始您的職業生涯,甚至獲得令人垂涎的工作晉升。 查看由利物浦約翰摩爾斯大學認證的upGrad計算機科學碩士。 它旨在通過高度互動的教學法為您提供與行業相關的技能。

根據您的興趣和職業抱負,您還可以參加軟件開發執行 PG 計劃 - IIIT-B 的全棧開發專業化或專業 PG 認證。 與碩士和文憑課程相比,此類證書的時間承諾更短。 它們允許您展示您在特定領域的技能,例如後端開發、前端開發、網絡安全、DevOps、大數據和雲計算。

有了這個,我們已經涵蓋了頂級軟件工程面試問題和答案 我們試圖包括一般性和技術性主題。 此外,我們還提到了潛在的職業選擇,並概述了 IT 行業的趨勢和前景。 將此信息用作您學習之旅的路標並簡化您的準備策略!

踏上夢想的工作

申請計算機科學理學碩士