柚子快報激活碼778899分享:C++面試---小米
柚子快報激活碼778899分享:C++面試---小米
一、static 關(guān)鍵字的作用,及和const的區(qū)別 static關(guān)鍵字作用: 1、在類的成員變量前使用,表示該變量屬于類本身,而不是任何類的實例。 2、在類的成員函數(shù)前使用,表示該函數(shù)不需要對象實例即可調(diào)用,且只能訪問類的靜態(tài)成員變量和其他靜態(tài)成員函數(shù)。 3、在局部變量前使用,表示該變量在函數(shù)調(diào)用結(jié)束后不會被銷毀,而是保持其值不變。 4、在全局變量或函數(shù)前使用,限制其作用范圍僅在定義的文件內(nèi),對其他文件不可見。
static和const區(qū)別: 1、static關(guān)鍵字用來定義靜態(tài)變量,其生命周期為程序執(zhí)行期間,但它的作用域限定于定義它的文件或函數(shù)內(nèi)。 2、const關(guān)鍵字定義常量,其值在定義后不能被修改,用來保證數(shù)據(jù)的不變性。它只影響它所修飾的變量的可變性,而不影響其生命周期。
二、extern 關(guān)鍵字的作用 主要作用是: 1、允許在多個文件中訪問同一個全局變量或函數(shù)。 2、表明變量或函數(shù)的定義存在于其他文件中。
三、指針和引用的區(qū)別
1、指針是一個變量,其值為另一個變量的地址,通過地址,可以直接訪問和修改對應(yīng)內(nèi)存中的值。 2、引用是別名,它為對象提供了一個新的名字,對引用的操作等同于對對象本身的操作。 3、指針可以為空,引用必須綁定到一個對象。 4、指針的值(即所指對象的地址)可以改變,但引用一旦與某個對象綁定,就不能再改變引用到其他對象。
四、c++內(nèi)存分配的方式
1、靜態(tài)存儲:編譯時分配,如全局變量、靜態(tài)變量。 2、自動存儲:函數(shù)內(nèi)部聲明的變量,如局部變量,隨著函數(shù)調(diào)用創(chuàng)建和退出銷毀。 3、動態(tài)存儲:使用new和delete進行手動分配和釋放的堆內(nèi)存。
五、靜態(tài)內(nèi)存分配和動態(tài)內(nèi)存分配的區(qū)別,靜態(tài)分配的優(yōu)缺點
區(qū)別: 1、靜態(tài)內(nèi)存分配在編譯時就確定了存儲空間的大小和生命周期,通常用于全局變量和靜態(tài)局部變量。 2、動態(tài)內(nèi)存分配在運行時根據(jù)需要動態(tài)地分配和釋放內(nèi)存,通常使用new和delete操作符。
靜態(tài)內(nèi)存分配的優(yōu)點: 1、管理簡單,沒有額外的運行時開銷。 2、生命周期長,隨程序啟動創(chuàng)建,程序結(jié)束時銷毀。
靜態(tài)內(nèi)存分配的缺點: 1、靈活性低,必須提前預(yù)知并定義所需內(nèi)存大小。 2、可能會導(dǎo)致內(nèi)存浪費,若預(yù)分配內(nèi)存未被充分利用
六、講一下c++智能指針及shared_ptr的底層實現(xiàn) unique_ptr:獨占所有權(quán),不支持復(fù)制和賦值操作。 shared_ptr:引用計數(shù)機制,多個智能指針可以共享同一個對象。 weak_ptr:不對對象的所有權(quán)計數(shù),用于解決shared_ptr的循環(huán)引用問題。
shared_ptr的底層實現(xiàn) 包括兩個主要部分: 1、控制塊:存儲引用計數(shù)和指向動態(tài)分配的對象的指針。 2、智能指針對象:包含對控制塊的引用。
七、map 和 unordered_map 區(qū)別 map: 1、基于紅黑樹實現(xiàn)。 2、元素按鍵自動排序。 3、查找、插入和刪除操作的時間復(fù)雜度為O(log n)。
unordered_map: 1、基于哈希表實現(xiàn)。 2、元素不排序,按哈希值存儲。 3、平均情況下查找、插入和刪除操作的時間復(fù)雜度為O(1),最壞情況為O(n)。
八、STL有哪些容器,各自特點
序列容器: 1、vector:動態(tài)數(shù)組,支持快速隨機訪問。 2、list:雙向鏈表,支持快速插入和刪除。 3、deque:雙端隊列,兩端都可以快速插入和刪除。
關(guān)聯(lián)容器: 1、set:集合,元素唯一且自動排序。 2、map:鍵值對集合,鍵唯一且自動排序。 3、multiset:集合,元素可以重復(fù),自動排序。 4、multimap:鍵值對集合,鍵可以重復(fù),自動排序。
無序關(guān)聯(lián)容器(C++11新增): 1、unordered_set:集合,元素唯一,基于哈希表實現(xiàn),不排序。 2、unordered_map:鍵值對集合,鍵唯一,基于哈希表實現(xiàn),不排序。 3、unordered_multiset:集合,元素可以重復(fù),基于哈希表實現(xiàn),不排序。 4、unordered_multimap:鍵值對集合,鍵可以重復(fù),基于哈希表實現(xiàn),不排序。
適配器容器: 1、stack:棧,后進先出。 2、queue:隊列,先進先出。 3、priority_queue:優(yōu)先隊列,元素按優(yōu)先級出隊。
柚子快報激活碼778899分享:C++面試---小米
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。