面試筆試中的一些知識點

2021-06-29 05:34:57 字數 3652 閱讀 9892

1、new/delete、 malloc/free

記憶體洩漏是指堆記憶體(heap memory)的洩漏(memory leak)。堆記憶體指程式從堆中分配的,大小任意的(記憶體塊的大小可以在程式執行期決定),使用完後必須顯式釋放的記憶體。應用程式一般使用malloc,realloc,new等函式從堆中分配記憶體,使用完後,程式必須負責相應的呼叫free或delete釋放該記憶體,否則,這塊記憶體就不能被再次使用,即這塊記憶體洩漏了。 malloc與free是c++/c語言的標準庫函式,new/delete是c++的運算子。它們都可用於申請動態記憶體和釋放記憶體。 

2、雜湊表(雜湊表)

3、記憶體分配

a、棧區(stack)

向下生長,由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等,記憶體的分配是連續的,類似於平時我們所說的棧,如果還不清楚,那麼就把它想成陣列,它的記憶體分配是連續分配的,即,所分配的記憶體是在一塊連續的記憶體區域內.當我們宣告變數時,那麼編譯器會自動接著當前棧區的結尾來分配記憶體.

b、堆區(heap)

向上生長(從低位址開始存放),一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由作業系統**.類似於鍊錶,在記憶體中的分布不是連續的,它們是不同區域的記憶體塊通過指標鏈結起來的.一旦某一節點從鏈中斷開,我們要人為的把所斷開的節點從記憶體中釋放.

c、全域性/靜態儲存區(static)

全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 程式結束後由系統釋放

d、唯讀區

存放程式和常量,比如const int a = 2;    char *p = "abc"; 這裡的a和「abc」都存放在可讀寫區。

4、指標以及相關問題

指標是存放位址的變數。指標所佔的儲存空間和作業系統有關,32位作業系統佔4個位元組,64位作業系統佔8個位元組。

例題:64位系統上定義的變數int* a[2][3]佔據 2*3*8 個位元組

&運算子

在c語言中有兩種含義:1、位操作符,表示『位與』;2、取位址運算子,比如int a = 10,*p = &a;

在c++中除了上述兩種含義外還有一種含義:引用,比如int a, &b = a;//a和b等價,共享乙個儲存空間,a,b的值同時變化。

常量指標和指標常量

常量指標:指標所指向的物件只能被讀取,而指標本生的值可以修改,比如:int a,b;   

const int

*p = &a;   p = &b;

指標常量:不能修改指標本生的值,但可以修改指標所指向的物件的值,比如int a = 10;

int * const p = &a; *p = 20; 常量

常量是不能修改的,存放在記憶體的唯讀區,入如const int a = 10; char *p = "abc";這裡的a和字串abc都是常量,只能讀,不能修改。

函式指標和

指標函式

函式指標也是乙個指標變數,它指向函式的入口位址。

int (*f)(int a, int b); // 

宣告函式指標

,函式指標定義為乙個指向乙個返回值為整型,有兩個引數並且兩個引數的型別都是整型的函式。

指標函式是乙個函式,這個函式的返回值是乙個指標。

int *f(int a, int b);  //指標函式宣告,該函式有兩個整形引數,返回值是乙個指標

5、http 狀態碼

找不到該頁面:404

禁止訪問:403

內部伺服器訪問:500

伺服器繁忙:503

6、建構函式與虛構函式

a、當派生類中不含

物件成員

(類的某個成員是物件)

時 在建立派生類物件時,建構函式的執行 順序是:基類的建構函式→派生類的

建構函式;

在撤消派生類物件時,析構函式的執行 順序是:派生類的建構函式→基類

建構函式。

b、當派生類中含有物件成員時 

在定義派生類物件時,建構函式的執行順序:基類的建構函式→物件成員的

建構函式→派生類的建構函式;

在撤消派生類物件時,析構函式的執行順序:派生類的建構函式→物件成員的建構函式→基類的建構函式。

7、程序的狀態以及轉化

程序的三種基本狀態

程序在執行中不斷地改變其執行狀態。通常,乙個執行程序必須具有以下三種基本狀態。

a 、就緒(ready)狀態

當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。

b 、執行(running)狀態

當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態。

c、阻塞(blocked)狀態(即等待狀態)

正在執行的程序,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起程序阻塞的事件可有多種,例如,等待i/o完成、申請緩衝區不能滿足、等待信件(訊號)等。

程序三種狀態間的轉換

乙個程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。 

(1) 就緒→執行

處於就緒狀態的程序,當程序排程程式為之分配了處理機後,該程序便由就緒狀態轉變成執行狀態。

(2) 執行→就緒 

處於執行狀態的程序在其執行過程中,因分配給它的乙個時間片已用完而不得不讓出處理機,於是程序從執行狀態轉變成就緒狀    態。

(3) 執行→阻塞

正在執行的程序因等待某種事件發生而無法繼續執行時,便從執行狀態變成阻塞狀態。

(4) 阻塞→就緒

處於阻塞狀態的程序,若其等待的事件已經發生,於是程序由阻塞狀態轉變為就緒狀態。

例題:程序進入等待狀態有哪幾種方式?(d)

a cpu排程給優先順序更高的執行緒

//執行到等待

b 阻塞的執行緒獲得資源或者訊號

//等待到就緒

c 在時間片輪轉的情況下,如果時間片到了

//執行到就緒

d 獲得spinlock未果 

//執行到等待

5、類的基本知識點

1、封裝性

類包含成員資料和成員函式,一般將成員資料定義成私有,外部**通過公有的成員函式對其訪問,成員函式相當於提供了訪問成員資料的乙個介面,從而實現了對成員資料的封裝。

注意:私有成員函式只可以被該類的成員函式訪問

保護成員只可以被基類或者是派生類的成員函式訪問

公有成員可以通過申請物件進行訪問

2、繼承性

3、多型性——乙個介面,多中方法

基類指標能夠指向它派生出來的派生類是實現c++多型性的關鍵。

執行時的多型性通過虛函式和繼承一起來實現。

虛函式:在基類中定義為virtual函式,在派生類中可以重新定義。

多型類:有虛函式的基類,或者是繼承有虛函式的基類的派生類。

純虛函式:在基類中沒定義,在派生類中一定要定義的函式。

抽象類:含有純虛函式的類(不能宣告物件,但可以宣告指標)

面試筆試 http知識點

1 常用的http方法有哪些?get 用於請求訪問已經被uri 統一資源識別符號 識別的資源,可以通過url傳參給伺服器 post 用於傳輸資訊給伺服器,主要功能與get方法類似,但一般推薦使用post方式。put 傳輸檔案,報文主體中包含檔案內容,儲存到對應uri位置。head 獲得報文首部,與g...

一些常見的面試筆試題

問題1 構造和析構函式中的虛函式呼叫 答案 虛函式可以在建構函式和析構函式中呼叫,但虛函式此時是靜態繫結 而非動態繫結。問題2 c 中的異常可不可以是引用 答案 異常可以是引用,並且效率高。問題3 tcp狀態中的close wait是什麼狀態 答案 close wait狀態是被動關閉方的乙個狀態,此...

面試筆試遇到的一些題

sizeof 指標變數 大小為4個位元組 以32位計算機為例 也是,計算機位址32位,指標存的是記憶體位址,自然也要32位。堆和棧的區別 1 棧由程式自動分配,堆是程式設計師申請的,必須指明大小 2 程式結束,棧自動釋放,而堆還需要free或者delete,手動釋放 2 分配棧很快,只要剩餘空間足夠...