<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 前 50 名軟件工程面試問答 > 原文: [https://www.guru99.com/software-engineering-interview-questions.html](https://www.guru99.com/software-engineering-interview-questions.html) [下載 PDF](https://www.guru99.com/pdf/software-engineering-interview-questions.pdf) **1)軟件的重要類別是什么?** * 系統軟件 * 應用程序軟件 * 嵌入式軟件 * 網絡應用 * 人工智能軟件 * 科學軟件。 **2)計算機程序和計算機軟件之間的主要區別是什么?** 計算機程序是一段程序代碼。 它執行定義明確的任務。 另一方面,該軟件包括編程代碼,文檔和用戶指南。 **3)什么是軟件再造?** 它是軟件開發的過程,旨在提高軟件系統的可維護性。 **4)簡要描述軟件開發過程**: 軟件開發的生命周期包括以下幾個階段: * 需求分析 * 規范 * 軟件架構 * 實作 * 測試中 * 文獻資料 * 培訓與支持 * 保養 **5)有哪些 SDLC 型號?** 瀑布模型,螺旋模型,大袋模型,迭代模型和 V 模型是一些著名的 SDLC 模型。 ![Software Engineering Questions](https://img.kancloud.cn/10/2b/102bfb3c82e2938a17edcc9bc1c58abb_280x318.png) **6)什么是驗證和確認?** **驗證**: 驗證是指確保軟件實現特定功能的一系列活動。 **驗證**: 它是指確保根據客戶需求構建的軟件的一組活動。 **7)在軟件開發過程中調試是什么意思?** 調試是導致錯誤消除的過程。 這是成功測試的非常重要的部分。 **8)如何確保您的代碼既安全又快速?** 在軟件中,開發安全始終是第一位的。 因此,如果程序執行緩慢,那么我將嘗試找出導致時間復雜度的原因。 **9)列出用于跟蹤軟件需求的兩個工具?** 有很多方法可以跟蹤需求。 **兩種常用的是**: * 制作需求規格說明文件以列出所有需求。 * 創建一個 excel 表格,列出需求,類型,依賴項,優先級等。 **10)存根和模擬物之間的主要區別是什么?** 存根是接口的最小實現,該接口通常返回硬編碼的數據,而模擬通常會根據期望驗證輸出。 這些期望在測試中確定。 **11)您喜歡使用哪種語言編寫編程算法?** 在選擇編程語言時,每個開發人員都有自己的看法。 雖然,人們應該更喜歡高級語言,因為它們是動態的。 像 C 和 C ++語言一樣。 **12)什么是計算機軟件?** 計算機軟件是一個軟件包,其中包括一個軟件程序,其文檔以及有關如何使用該軟件的用戶指南。 **13)根據您的情況,哪種 SDLC 模型最好?** 那里沒有這樣的排名,因為根據開發過程的需要采用了 SDLC 模型。 各個軟件可能有所不同。 **14)誰是軟件項目經理? 他的作用是什么?** 軟件項目經理是負責管理軟件開發項目的人員。 項目經理正在進行項目計劃,監視進度,進行溝通。 他或她還管理風險和資源,以便在時間,成本和質量限制內交付項目。 **15)軟件范圍是什么意思?** 軟件范圍是定義明確的邊界。 它包括開發和交付軟件產品所完成的所有類型的活動。 軟件范圍定義了將作為軟件一部分交付的所有功能和工件。 該范圍還確定了該產品將做什么? 什么不是項目的一部分? 什么是項目估算? 此過程有助于估計軟件產品的各個方面。 可以咨詢專家或使用預定義的公式來確定此估計值。 **16)如何查找軟件產品的尺寸?** 可以使用以下兩種方法來計算軟件產品的大小 * 計算已交付代碼的行數 * 計算交付的功能點 **17)什么是功能點?** 功能點是軟件產品提供的功能。 它被視為衡量軟件大小的最重要指標。 **18)有哪些可用的軟件項目估算技術?** 最廣泛使用的估算技術是: * 分解技術 * 經驗技術 **19)什么是軟件配置管理?** 軟件配置管理是跟蹤和控制軟件中發生的更改的過程。 變更控制是一項功能,可確保對軟件系統所做的所有變更都是一致的,并且是使用組織規則和規定創建的。 **20)您如何衡量項目執行情況?** 我們可以使用“活動監視”,“狀態報告”和“里程碑清單”來衡量項目的執行情況。 **21)告訴我一些項目管理工具。** 根據軟件項目的需要,使用了許多類型的管理工具。 其中一些是 Pert 圖表,Gantt 圖表,資源直方圖,狀態報告等。 **22)有哪些軟件要求?** 軟件需求是所提出的軟件系統的功能描述。 假定它是對目標系統,其功能和特性的描述。 **23)什么是可行性研究?** 這是一種措施,旨在找出軟件項目開發將如何向組織證明的實用性和益處。 軟件分析器進行研究以了解該項目的經濟,技術和運營可行性。 1. **經濟**:它包括培訓成本,額外成本和工具成本,以及項目成本和收益的總體估算。 2. **技術**:評價技術方面。 是否有可能開發該系統? 評估將在其上執行軟件的機器和操作系統的適用性,軟件開發知識以及可用于該項目的工具。 3. **操作性**:在這里分析師需要評估組織將能夠根據項目需求對所進行的更改進行平滑調整。 以估算的成本解決問題是否值得? 之后,研究所有這些內容,創建最終可行性報告。 **24)什么是功能需求和非功能需求?** 功能要求是用戶從提議的軟件產品中期望的功能功能。 非功能性需求與用戶界面的安全性,性能,外觀和感覺有關。 **25)什么是軟件指標?** 軟件度量標準提供了針對軟件過程各個方面的度量,這些度量分為: 1. 要求指標:長度要求,完整性 2. 產品指標:編碼行數,面向對象的指標,設計和測試指標。 **26)什么是模塊化?** 模塊化是一種用于將軟件系統劃分為各種離散模塊的技術。 希望可以獨立執行任務。 **27)凝聚力是什么?** 內聚性是一種定義模塊元素之間內部依賴性的度量。 **28)提到一些軟件分析&設計工具?** 一些最重要的軟件分析和設計工具是: * 數據流程圖 * 結構圖 * 結構化英語 * 數據字典 * 分層輸入過程輸出圖 * 實體關系圖和決策表 **29)0 級數據流程圖是什么意思?** 最高抽象級別稱為 DFD 的級別 0。 它也稱為上下文級別 DFD。 它把整個信息系統描繪成一張圖。 **30)結構化英語和偽代碼之間的主要區別是什么?** 結構化英語是母語英語。 它用于編寫程序模塊的結構。 它使用編程語言關鍵字。 另一方面,偽代碼更像是編程語言,沒有任何特定語言的語法。 **31)什么是結構設計?** 結構化設計是問題的概念化。 它也稱為解決方案設計,它基于“分而治之”的策略。 **32)什么是函數編程?** 它是一種編程方法,它使用數學函數的概念。 它提供了作為數學函數的計算手段,并且無論程序狀態如何,都可以產生結果。 **33)什么是質量保證與質量控制?** 質量保證檢查在開發軟件時是否遵循了正確的過程,而質量控制則負責維護軟件產品的質量。 **34)什么是 CASE 工具?** CASE 是指計算機輔助軟件工程。 它們是一組自動化軟件應用程序,用于支持,增強和加強 SDLC 活動。 **35)哪種流程模型可以在軟件出現故障之前消除缺陷?** 潔凈室軟件工程方法可以在軟件出現故障之前消除缺陷。 **36)解決此問題** 一間暗室的抽屜里有二十種不同的兩種襪子。 為了確保您有配對的襪子,最少需要穿多少襪子?” 如果您撿起三只襪子,即使幾率是 50%,它們的類型也可能相同。 從來沒有一個平等的現實。 因此,“確保您有一對配對”的唯一方法是拾取至少 11 個電擊。 **37)如何確保編寫的代碼可以處理各種錯誤情況?** 我可以編寫定義預期錯誤情況的測試。 **38)解釋線程和進程之間的區別嗎?** 進程是計算機程序的實例。在一個程序中,可以有一個或多個線程。 **39)告訴我 EXE 和 DLL 之間的區別嗎?** exe 是可執行程序,而 DLL 是可以由程序動態加載和執行的文件。 它是程序的外部代碼存儲庫。 由于兩者都是不同的程序,因此請重復使用相同的 DLL,而不要在文件中包含該代碼。 它還減少了所需的存儲空間。 **40)什么是強類型和弱類型? 哪個是首選? 為什么?** 強類型在編譯時檢查變量的類型。 另一方面,弱類型在運行時檢查系統的類型。 其中,強類型化始終是首選,因為它可以最大程度地減少錯誤。 **41)描述面向接口的編程,面向對象的編程和面向方面的編程之間的區別。** * 接口編程是基于合同的。 * 面向對象是一種編寫具有單一目的的粒度對象的方法。 * 面向方面的程序設計是以各種對象承載主要任務而子任務由獨立對象承載的方式隔離代碼。 **42)為什么使用 catch(異常)總是一個壞主意?** 這是一個壞主意,因為: * 由于未定義變量,因此無法讀取異常 * 當您知道異常類型時,最好使用異常。 **43)通過 HTTP 標頭傳遞什么類型的數據?** 通過 HTTP 標頭傳遞的腳本和元數據。 **44)您如何確定需求的優先級?** 首先,您需要通過評估數據結構來設計系統。 然后,您應該轉到支持它的代碼結構。 **45)請給我區別一下面向對象設計和基于組件的設計嗎?** 面向對象的設計可以很容易地封裝到基于組件的設計中。 **46)您何時使用多態性?** 當繼承類時需要重寫功能時,可以使用多態。 這是關于共享課程和共享合同的。 **47)堆棧和隊列有什么區別?** * 隊列始終是先進先出 * 堆棧始終是后進先出 **48)測試代碼質量的必要條件是什么?** 據我說,單元測試框架對于測試代碼的質量至關重要。 **49)您認為軟件的維護費用昂貴嗎?** 據我說,如果我們使用適當的開發過程,則軟件維護永遠不會花錢。 **50)給我標簽和分支之間的區別嗎?** 標簽用于版本發布,是做這些事情的臨時場所。 但是,當這些更改合并到中繼中時,分支將被刪除。 **51)在哪里可以使用受保護的類級變量?** 受保護的類級別變量可用于從基類派生的任何子類。 **52)是否可以為單個 try 語句執行多個 catch 塊?** 是。 單個 try 語句可以執行多個 catch 塊。 **53)您何時需要將一個類聲明為抽象?** 在以下情況下,我們應將類聲明為抽象: 1. 當類從抽象類繼承時,但并非所有抽象方法都被覆蓋。 2. 如果該類中的方法中的至少一個被聲明為抽象方法。 **54)開發一種算法,以輸出您的當前位置以及該區域中 ATM 位置的列表。 為您提供距離您最近的 K ATM。** 創建一個方法 getDistance(a,b)來計算 a 和 b 之間的距離。 碼: ``` import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; public class PrioRQueueExample { public static void main(String[] args){ PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); }); PrioRQueueExample pqe = new PrioRQueueExample(); //Number of ATMs to return i.e. K int num_ATMs = 3; double curr_loc = 0.00; Map<String,Double> nallATMLocs = new HashMap<String,Double>(); //Map of ATM names and their distance co-ordinates nallATMLocs.put("atm1",45.0); nallATMLocs.put("atm2",78.0); nallATMLocs.put("atm3",54.0); nallATMLocs.put("atm4",64.0); nallATMLocs.put("atm5",35.0); nallATMLocs.put("atm6",42.0); nallATMLocs.put("atm7",57.0); nallATMLocs.put("atm7",1.00); nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){ pq.add(pqe.getLocation(curr_loc,dist));} else{ if( pq.peek() > pqe.getLocation(curr_loc,dist)){ pq.poll(); pq.add(pqe.getLocation(curr_loc,dist)); } } }); pq.forEach(atmLoc -> System.out.println(atmLoc)); } private double getLocation(double curr,double atm){ return atm - curr; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看