宣告和定義的區別?
宣告是將乙個名稱引入程式。定義提供了乙個實體在程式中的唯一描述,涉及到記憶體空間的分配以及初始值的設定。宣告和定義有時是同時存在的。
常見的賦值語句為定義即宣告。
幾種只宣告不定義的情況:
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常用命令 前端用過什麼框架?最後問我最後的職業規劃?你想做工程還是演算法?問了一下技術棧。演算法題 中序遍歷的遞...
模仿百度搜尋
中國春節網 歡迎光臨中國春節網,您現在的位置是中國春節網首頁!年獸 的傳說 熬 年的傳說 萬年建立歷年說 中國 倒貼福字 除夕夜歡迎光臨中國春節網,您現在的位置是中國春節網首頁!年獸 的傳說 熬年的傳說 萬年建立歷年說 中國 倒貼福字 除夕夜.中國春節網 歡迎光臨中國春節網,您現在的位置是中國春節網...