- 軟體工程教程
- 軟體工程主頁
- 軟體工程概述
- 軟體開發生命週期
- 軟體專案管理
- 軟體需求
- 軟體設計基礎
- 分析與設計工具
- 軟體設計策略
- 軟體使用者介面設計
- 軟體設計複雜性
- 軟體實現
- 軟體測試概述
- 軟體維護
- CASE工具概述
- 軟體 - 考試題及答案
- 軟體工程 - 考試題及答案
軟體工程面試問題
親愛的讀者們,這些軟體工程面試問題特別設計是為了讓您熟悉在軟體工程面試中可能遇到的問題型別。根據我的經驗,優秀的 interviewers 很少會預先計劃好要問哪些特定問題,通常問題會從該學科的一些基本概念開始,然後根據進一步的討論和您的回答繼續下去。
問:什麼是計算機軟體?
答:計算機軟體是一個完整的包,它包括軟體程式、其文件以及關於如何使用軟體的使用者指南。
問:你能區分計算機軟體和計算機程式嗎?
答:計算機程式是一段執行特定任務的程式設計程式碼,而軟體包括程式設計程式碼、其文件和使用者指南。
問:什麼是軟體工程?
答:軟體工程是與軟體系統開發相關的工程分支。
問:當你懂程式設計時,為什麼還需要學習軟體工程的概念?
答:一個知道如何砌牆的人可能不擅長建造整棟房子。同樣,一個能夠編寫程式的人可能並不瞭解軟體工程的其他概念。軟體工程概念指導程式設計師如何評估終端使用者的需求,在實際編碼開始之前設計算法,透過編碼建立程式,測試程式碼及其文件。
問:什麼是軟體過程或軟體開發生命週期(SDLC)?
答:軟體開發生命週期或軟體過程是透過遵循開發過程中的每個階段來系統地開發軟體,這些階段包括需求收集、系統分析、設計、編碼、測試、維護和文件,並按此順序進行。
問:有哪些可用的SDLC模型?
答:有幾種可用的SDLC模型,例如瀑布模型、迭代模型、螺旋模型、V模型和大爆炸模型等。
問:SDLC的各個階段是什麼?
答:SDLC的通用階段是:需求收集、系統分析和設計、編碼、測試和實現。階段取決於我們選擇開發軟體的模型。
問:哪個SDLC模型最好?
答:SDLC模型是根據開發過程的需求採用的。它可能因軟體而異,以確保哪個模型合適。
如果滿足以下答案,我們可以選擇最佳的SDLC模型:
- SDLC是否適合所選技術來實現軟體?
- SDLC是否適合客戶的需求和優先順序?
- SDLC模型是否適合軟體的規模和複雜性?
- SDLC模型是否適合我們所做的專案型別和工程?
- SDLC是否適合地理位置集中或分散的開發人員?
問:什麼是軟體專案管理?
答:軟體專案管理是管理軟體開發中涉及的所有活動(如時間、成本和質量管理)的過程。
問:誰是軟體專案經理?
答:軟體專案經理是承擔執行軟體專案責任的人。
問:軟體專案經理做什麼?
答:軟體專案經理從事軟體管理活動。他負責專案規劃、進度監控、利益相關者之間的溝通、風險和資源管理、開發的順利執行以及在時間、成本和質量約束範圍內交付專案。
問:什麼是軟體範圍?
答:軟體範圍是一個明確定義的邊界,它包含開發和交付軟體產品的所有活動。
軟體範圍明確定義了作為軟體一部分交付的所有功能和工件。範圍確定了產品將做什麼以及將不做什麼,最終產品將包含什麼以及將不包含什麼。
問:什麼是專案估算?
答:這是一個估算軟體產品各個方面以計算開發成本(以工作量、時間和資源計)的過程。此估算可以從過去的經驗中得出,也可以透過諮詢專家或使用預定義公式得出。
問:我們如何確定軟體產品的大小?
答:可以使用兩種方法計算軟體產品的大小:
- 計算交付程式碼的行數
- 計算交付的功能點
問:什麼是功能點?
答:功能點是軟體產品提供的各種功能。它被認為是軟體大小的度量單位。
問:有哪些可用的軟體專案估算技術?
答:有很多估算技術可用。最常用的技術包括:
- 分解技術(計算程式碼行數和功能點)
- 經驗技術(Putnam 和 COCOMO)。
問:什麼是基線?
答:基線是定義階段完整性的度量。完成與特定階段相關的所有活動後,該階段即完成,並作為下一階段的基線。
問:什麼是軟體配置管理?
答:軟體配置管理是跟蹤和控制軟體需求、設計、功能和產品開發方面變化的過程。
問:什麼是變更控制?
答:變更控制是配置管理的一項功能,它確保對軟體系統所做的所有更改都是一致的,並且符合組織的規則和規章。
問:如何衡量專案執行情況?
答:我們可以透過活動監控、狀態報告和里程碑清單來衡量專案執行情況。
問:提一些專案管理工具。
答:根據軟體專案的要求和組織策略,使用各種專案管理工具。這些工具包括甘特圖、PERT圖、資源柱狀圖、關鍵路徑分析、狀態報告、里程碑清單等。
問:什麼是軟體需求?
答:軟體需求是擬議軟體系統的功能描述。需求被認為是對目標系統、其功能和特性的描述。需求傳達了使用者對系統的期望。
問:什麼是可行性研究?
答:這是衡量軟體專案開發對組織而言多麼實用和有益的措施。軟體分析師會進行徹底的研究,以瞭解專案的經濟、技術和運營可行性。
經濟方面 - 資源運輸、培訓成本、額外公用事業和工具的成本以及專案的總體成本和效益估算。
技術方面 - 是否可以開發此係統?評估軟體將執行的機器和作業系統、現有開發人員的知識和技能、培訓、專案所需的公用事業或工具的適用性。
運營方面 - 組織能否根據專案的需要順利適應變化?這個問題值得解決嗎?
問:如何收集需求?
答:可以透過訪談、調查、任務分析、集思廣益、領域分析、原型設計、研究現有可用的軟體版本以及觀察來收集使用者的需求。
問:什麼是SRS?
答:SRS或軟體需求規格說明是在需求收集過程中生成的文件。它也可以被視為改進需求並記錄需求的過程。
問:什麼是功能需求?
答:功能需求是使用者對擬議軟體產品的功能特性和規範的期望。
問:什麼是非功能需求?
答:非功能需求是隱含的,並且與安全性、效能、使用者介面的外觀和感覺、互操作性、成本等相關。
問:什麼是軟體度量?
答:軟體度量可以理解為量化和象徵軟體各種屬性和方面的一個過程。
問:什麼是軟體指標?
答:軟體指標為軟體過程和軟體產品的各個方面提供度量。它們分為:
- 需求指標:需求長度、完整性
- 產品指標:程式碼行數、面向物件指標、設計和測試指標
- 過程指標:評估和跟蹤預算、進度、人力資源。
問:什麼是模組化?
答:模組化是一種將軟體系統劃分為多個獨立模組的技術,這些模組預計將獨立執行任務。
問:什麼是併發,如何在軟體中實現?
答:併發是事件或動作同時發生的趨勢。在軟體中,當兩個或多個程序同時執行時,它們被稱為併發程序。
示例
當您啟動列印命令並開始列印時,您可以開啟一個新應用程式。
併發是透過將軟體拆分為多個獨立的執行單元(即程序和執行緒)並並行執行它們來實現的。
問:什麼是內聚性?
答:內聚性是一種度量,它定義了模組元素之間內部依賴程度。
問:什麼是耦合?
答:耦合是一種度量,它定義了程式模組之間相互依賴的程度。
問:提一些軟體分析與設計工具?
答:這些可以是:DFD(資料流圖)、結構圖、結構化英語、資料字典、HIPO(層次輸入過程輸出)圖、ER(實體關係)圖和決策表。
問:什麼是0級DFD?
答:最高抽象級別的DFD稱為0級DFD,也稱為上下文級別DFD,它將整個資訊系統描繪成一個圖,隱藏所有底層細節。
問:結構化英語和虛擬碼有什麼區別?
答:結構化英語是使用程式語言關鍵字來編寫程式模組結構的本地英語,而虛擬碼更接近程式語言,並使用本地英語單詞或句子來編寫程式碼部分。
問:什麼是資料字典?
答:資料字典被稱為元資料。這意味著它是一個關於資料的資料儲存庫。資料字典用於組織系統中使用的名稱及其引用,例如物件和檔案及其命名約定。
問:什麼是結構化設計?
答:結構化設計是將問題概念化為幾個組織良好的解決方案元素。它關注解決方案設計,並基於“分而治之”的策略。
問:面向函式設計和麵向物件設計有什麼區別?
答:面向函式的設計由許多稱為函式的較小的子系統組成。每個函式都能夠在系統中執行重要的任務。面向物件的設計圍繞現實世界中的物件(實體)、它們的類(類別)和在物件上操作的方法(函式)進行。
問:簡要定義自頂向下和自底向上設計模型。
答:自頂向下模型從系統的概括檢視開始,將其分解為更具體的檢視,而自底向上模型首先從最具體和最基本的元件開始,並不斷組合元件以獲得更高層次的抽象。
問:Halstead複雜度度量的基礎是什麼?
A. Halstead複雜度度量取決於程式的實際實現,它以程式中使用的標記作為度量的基礎。
Q.請說明計算程式圈複雜度的公式?
A. 圈複雜度使用圖論公式:V(G) = e – n + 2
Q.什麼是函數語言程式設計?
A. 函數語言程式設計是一種程式語言風格,它使用數學函式的概念。它提供了一種將計算作為數學函式的方式,無論程式狀態如何,它都能產生結果。
Q.區分驗證和確認?
A. 驗證檢查產品是否符合使用者需求,而確認檢查是否遵循正確的步驟來開發產品。
驗證確認是正確的產品,確認確認產品是否以正確的方式構建。
Q.什麼是黑盒測試和白盒測試?
A. 黑盒測試檢查當給出有效輸入值時是否產生所需的輸出。它不驗證程式的實際實現。
白盒測試不僅檢查提供有效輸入時是否產生所需和有效的輸出,而且還檢查程式碼是否正確實現。
| 標準 | 黑盒測試 | 白盒測試 |
|---|---|---|
| 是否需要了解軟體程式、設計和結構 | 否 | 是 |
| 是否需要了解軟體實現 | 否 | 是 |
| 誰對軟體進行此測試 | 軟體測試工程師 | 軟體開發人員 |
| 測試人員的基線參考 | 需求規格說明 | 設計和結構細節 |
Q.質量保證與質量控制?
A. 質量保證監控檢查在開發軟體的過程中是否遵循正確的流程。
質量控制處理的是維護軟體產品的質量。
Q.軟體維護有哪些不同型別?
A. 維護型別包括:糾正性、適應性、完善性和預防性。
- 糾正性
消除使用者發現的錯誤
- 適應性
解決軟體執行的硬體和軟體環境的變化
- 完善性維護
實現使用者現有或新的需求的變化
- 預防性維護
採取適當措施避免未來問題
Q.什麼是軟體再工程?
A. 軟體再工程是在不改變軟體功能的情況下升級軟體構建技術的流程。這樣做是為了使軟體與最新技術保持同步。
Q.什麼是CASE工具?
A. CASE代表計算機輔助軟體工程。CASE工具是一套自動化軟體應用程式,用於支援、加速和簡化SDLC活動。
下一步是什麼?
此外,您可以回顧一下您過去完成的與主題相關的作業,並確保您能夠自信地談論它們。如果您是應屆畢業生,面試官不會期望您回答非常複雜的問題,而是您必須使自己的基礎概念非常紮實。
其次,如果您無法回答一些問題,這並不重要,重要的是,無論您回答了什麼,都必須自信地回答。所以在面試中要有自信。我們在tutorialspoint祝您面試順利,並祝您未來的事業一切順利。乾杯 :-)