面試 百度搜尋架構部面試記錄

2022-08-31 00:27:13 字數 2553 閱讀 5564

宣告和定義的區別?

宣告是將乙個名稱引入程式。定義提供了乙個實體在程式中的唯一描述,涉及到記憶體空間的分配以及初始值的設定。宣告和定義有時是同時存在的。

常見的賦值語句為定義即宣告。

幾種只宣告不定義的情況:

void display(); 提供函式宣告

extern int a;

class a;

typedef 宣告;

在類中定義的靜態資料成員的宣告

記憶體分配的幾種方式?

棧區(stack): 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其

操作方式類似於資料結構中的棧。

堆區(heap): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os回

收 。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶。

全域性區(靜態區靜態static):全域性變數和靜態變數的儲存是放在一塊的,初始化的

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

文字常量區 (stack):常量字串就是放在這裡的。 程式結束後由系統釋放。

程式**區(stack):存放函式體的二進位制**。

堆和棧中的儲存內容:棧存區域性變數、函式引數等。

堆儲存使用new、malloc申請的變數等。

申請方式:棧記憶體由系統分配,堆記憶體由自己申請。

申請後系統的響應:

棧:只要棧的剩餘空間大於所申請空間,系統將為程式提供記憶體,否則將報異常提示棧溢位。

堆:首先應該知道作業系統有乙個記錄空閒記憶體位址的鍊錶,當系統收到程式的申請時,會遍歷該鍊錶,尋找第乙個空間大於所申請空間的堆結點,然後將該結點從空閒結點鍊錶中刪除,並將該結點的空間分配給程式。

申請大小的限制:windows下棧的大小一般是2m,堆的容量較大。

申請效率的比較:棧由系統自動分配,速度較快。堆使用new、malloc等分配,較慢。

總結:棧區優勢在處理效率,堆區優勢在於靈活。

memcpy和memset的區別?為什麼memset不能初始化一些其他類。

對於memcpy:

功能:由src所指記憶體區域複製count個字串到dest所指記憶體區域.

說明:src和dest所指記憶體區域不能重疊,函式返回指向dest的指標.

對於memset:

功能:把buffer所指記憶體區域的前count個位元組設定成字元c

說明:返回指向buffer的指標.

memset 用來對一段記憶體空間全部設定為某個字元,一般用於在對定義的字串初始化為' '

memcpy 是用來做記憶體拷貝,可以用來拷貝任何資料型別的物件,可以指定拷貝的資料長度.

memset是乙個位元組乙個位元組設定的,取要賦的值的後8位二進位制進行賦值。所以當memset賦值為1時會出現錯誤。

c++使用c**使用什麼關鍵字?

使用 extern "c" {}.

const關鍵字以及其使用場景?

記憶體分配的幾種方式?

從全域性儲存區域分配:這時內存在程式編譯階段就已經分配好,該內存在程式執行的整個週期都有效,如:全域性變數、static靜態變數。

從棧區分配:在執行函式的時候,函式中的區域性變數的儲存單元都可以從棧中分配,函式執行結束後這些儲存單元都會被自動釋放,實現從棧中分配儲存單元運算操作內置於處理器的指令集中,效率很高 但是分配的記憶體容量有限。

從堆中分配:也稱為動態記憶體分配,在程式執行期間,可以使用malloc和new申請任意數量的記憶體單元,由程式設計師決定在什麼時候使用free和delete釋放記憶體。

程序和執行緒之間的區別?

程序是具有一定獨立功能的程式、它是系統進行資源分配和排程的乙個獨立單位,重點在系統排程和單獨的單位,也就是說程序是可以獨立執行的一段程式。

執行緒又是什麼?執行緒程序的乙個實體,是cpu排程和分派的基本單位,他是比程序更小的能獨立執行的基本單位,執行緒自己基本上不擁有系統資源。

聯絡:乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒(通常說的主線程)。

資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。

執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。

處理機分給執行緒,即真正在處理機上執行的是執行緒。

執行緒是指程序內的乙個執行單元,也是程序內的可排程實體。

程序間通訊的方式?

管道/匿名管道(pipe):

有名管道(fifo)

訊號(signal)

訊息(message)佇列

共享記憶體(share memory)

訊號量(semaphore)

套接字(socket)

執行緒對記憶體進行讀寫時會出現哪些問題?怎麼解決這些問題?

臨界區(critical section)

互斥量(mutex)

訊號量(semaphores)

事件(event)

佇列cpu排程機制?

先到先服務排程演算法(fcfs)

最短作業優先排程(sjf)

優先順序排程

輪轉法排程(rr)

多級佇列排程

多級反饋佇列排程

快排合併兩個有序鍊錶

面試 百度 搜尋架構部 測試開發崗

一面 1 自我介紹 2 技能提問 3 二面 1 自我介紹 2 sql 學生成績表,包含名字,學號,科目,成績,乙個人有可能多個科目的成績,寫sql,求表中成績總和前三的列表,按照次序輸出 3 宴會人數 100,具體不確定,宴會隨機 中獎人數約為10人,也不確定,寫 實現該功能 4 斐波那契數列 5 ...

百度搜尋架構部面經

寫sql語句,優化方法?程序與執行緒的區別 對資料庫熟悉嗎?資料庫的儲存引擎的區別?感覺區別說少了,他還想聽其他的 瀏覽器輸入url的過程 三次握手的過程,為什麼需要三次?說一說linux常用命令 前端用過什麼框架?最後問我最後的職業規劃?你想做工程還是演算法?問了一下技術棧。演算法題 中序遍歷的遞...

模仿百度搜尋

中國春節網 歡迎光臨中國春節網,您現在的位置是中國春節網首頁!年獸 的傳說 熬 年的傳說 萬年建立歷年說 中國 倒貼福字 除夕夜歡迎光臨中國春節網,您現在的位置是中國春節網首頁!年獸 的傳說 熬年的傳說 萬年建立歷年說 中國 倒貼福字 除夕夜.中國春節網 歡迎光臨中國春節網,您現在的位置是中國春節網...