軟體開發常見筆試面試題整理

2021-09-26 13:52:20 字數 2292 閱讀 8495

1、物件導向和面向過程的區別是什麼?

面向過程

概念 面向過程是一種以過程為中心的程式設計思想,它是一種基礎的順序的思維方式,物件導向方法的基礎實現中也包含面向過程思想

特性 模組化 流程化

優點:效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、linux/unix等一般採用面向過程開

發,效能是最重要的因素。

缺點:沒有物件導向易維護、易復用、易擴充套件

物件導向

概念

物件導向是按人們認識客觀世界的系統思維方式,採用基於物件(實體)的概念建立模型,模擬客觀世界分析、設計、實現軟體的辦法。通過物件導向的理念使計算機軟體系統能與現實世界中的系統一一對應。

特性抽象、 封裝、繼承、多型

優點:易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護

缺點:效能比面向過程低

2、測試報告的內容包括?

3、介紹一下瀑布模型。

4、高併發設計。

5、微服務優點。

6、專案管理,更改專案。

7、快速排序

8、new、delete、malloc、free關係

delete會呼叫物件的析構函式,和new對應free只會釋放記憶體,new呼叫建構函式。

malloc與free是c++/c語言的標準庫函式,new/delete是c++的運算子。它們都可用於申請動態記憶體和釋放記憶體。對於非內部資料型別的物件而言,光用maloc/free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。

由於malloc/free是庫函式而不是運算子,不在編譯器控制許可權之內,不能夠把執行建構函式和析構函式的任務強加於malloc/free。因此c++語言需要乙個能完成動態記憶體分配和初始化工作的運算子new,以及乙個能完成清理與釋放記憶體工作的運算子delete。注意new/delete不是庫函式。

9、引用與指標有什麼區別?

引用必須被初始化,指標不必。

引用初始化以後不能被改變,指標可以改變所指的物件。

不存在指向空值的引用,但是存在指向空值的指標。

10、基類的析構函式不是虛函式,會帶來什麼問題?

【參***】派生類的析構函式用不上,會造成資源的洩漏。

11、建構函式:對變數進行初始化,在物件被建立是被自動呼叫。

12、析構函式:完成物件被刪除前的一些清理工作,在物件的生存期即將結束的時刻被自動呼叫。

13、函式過載:兩個以上具有相同函式名,但是形參個數或者型別不同,編譯器根據實參和形參的型別及個數的最佳匹配,自動確定呼叫哪個函式,就是函式的過載。

14、c和c++的區別?

c是面向過程的語言,c++是物件導向的語言

c++中new和delete是對記憶體分配的運算子,取代了c中的malloc和free

c++中有引用的概念,c中沒有

c++引入了類的概念,c中沒有

c++有函式過載,c中不能

c變數只能在函式的開頭處宣告和定義,而c++隨時定義隨時使用

15、指標和引用的區別

指標儲存的是指向物件的位址,引用相當於變數的別名

引用在定義的時候必須初始化,指標沒有這個要求

指標可以改變位址,引用必須從一而終

不存在空應引用,但是存在空指標null,相對而言引用更加安全

引用的建立不會呼叫類的拷貝建構函式

16、const關鍵字至少有下列n個作用:

(1)欲阻止乙個變數被改變,可以使用const關鍵字。在定義該const變數時,通常需要對它進行初始化,因為以後就沒有機會再去改變它了;

(2)對指標來說,可以指定指標本身為const,也可以指定指標所指的資料為const,或二者同時指定為const;

(3)在乙個函式宣告中,const可以修飾形參,表明它是乙個輸入引數,在函式內部不能改變其值;

(4)對於類的成員函式,若指定其為const型別,則表明其是乙個常函式,不能修改類的成員變數;

(5)對於類的成員函式,有時候必須指定其返回值為const型別,以使得其返回值不為「左值」。例如:

const classa operator*(const classa& a1,const classa& a2);

operator的返回結果必須是乙個const物件。如果不是,這樣的****也不會編譯出錯:

classa a, b, c;

(a * b) = c; // 對ab的結果賦值

操作(a * b) = c顯然不符合程式設計者的初衷,也沒有任何意義。

筆試面試題總結(一) 軟體開發

1 huffman編碼中的貪心策略,該部分所需要的計算時間。首先,要理解huffman編碼中那部分用到了貪心演算法,貪心的策略,這樣才能求所需的計算時間。哈夫曼編碼演算法 每次將集合中兩個權值最小的二叉樹合併成一棵新二叉樹,n 1次合併後,成為最終的一棵哈夫曼樹。這既是貪心法的思想 從某乙個最初狀態...

軟體開發面試題

1 10棵樹,種五行,每行四顆樹,怎麼種?2 乙個房間有三個開關,分別控制另乙個房間的三盞燈,每個房間只進去一次怎麼判斷三個開關分別控制的是哪盞燈。3 兩個盲人分別買了兩雙黑襪子和兩雙藍襪子放在了同乙個籃子裡,他們走的時候兩個人依然分別拿的是兩雙黑襪子和兩雙藍襪子,他們是如何分的。4 生公尺煮成了熟...

面試Java軟體開發職位面試題

1 oracle的分頁 2 jquery中常用的元素查詢方法 3 和 的區別 和 equers 的區別 4 ssh的知識點 5 hibernate的快取 一級 二級 6 map list linklist arraylist 7 設計模式 及作用 8 mabatis和hibernate的區別 9 介...