C++面試必備,概念解析
【參考答案】
1) 引用必須被初始化,指標不必。
2) 引用初始化以後不能被改變,指標可以改變所指的物件。
3) 不存在指向空值的引用,但是存在指向空值的指標。
可以參考下 在 5 題中補充的內容
12.C++中virtual與inline的含義分別是什麼?
【參考答案】
在基類成員函式的宣告前加上virtual關鍵字,意味著將該成員函式宣告為虛擬函式。
inline與函式的定義體放在一起,使該函式稱為內聯。
inline是一種用於實現的關鍵字,而不是用於宣告的關鍵字。
虛擬函式的特點;如果希望派生類能夠重新定義基類的方法,則在基類中將該方法定義為虛方法,這樣可以啟用動態聯編。
行內函數的特點;使用行內函數的目的是為了提高函式的執行效率。行內函數體的程式碼不能過長,因為行內函數省去呼叫函式的時間是以程式碼膨脹為代價的。行內函數不能包含迴圈語句,因為執行迴圈語句要比呼叫函式的開銷大。
哈!我想我確實要注意一下表達能力。。
13.
VC中,編譯工具條內的Debug與Release選項是什麼含義?
【參考答案】
Debug 通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。
Release 稱為釋出版本,它往往是進行了各種優化,使得程式在程式碼大小和執行速度上都是最優的,以便使用者很好地使用。
Debug帶有大量的除錯程式碼,執行時需要相應的執行庫,
釋出模式程式緊湊不含有除錯程式碼和資訊,直接可以執行(如果不需要執行庫)
14.函式assert的用法?
【參考答案】斷言assert是僅在debug版本起作用的巨集,用於檢查“不應該“發生的情況。程式設計師可以把assert看成一個在任何系統狀態下都可以安全使用的無害測試手段
學VC++的時候見過assert巨集定義,但是自己從來沒用過。。。
15.const 與 #define 的比較 ,const有什麼優點?
【參考答案】
(1) const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤(邊際效應) 。
#define不能生成 類的專屬常量,因為它只是進行簡單的替換。。
(2) 有些整合化的除錯工具可以對 const 常量進行除錯,但是不能對巨集常量進行除錯。
《Effective C++》中建議以const、enum、inline代替#define。
使用enum的原因
有些情況下,編譯器不允許靜態常量出現在類的初始設定中,只得以enum的形式
另一方面,enum和#define更相似,它們都沒有具體的型別,比如,有const int a; 卻沒有 #define N int a,enum和#define都不能夠被去地址,而const可以。
16.請你談談引用和指標的區別。
【參考答案】
(1)引用被建立的同時必須被初始化(指標則可以在任何時候被初始化) 。
(2)不能有 NULL 引用,引用必須與合法的儲存單元關聯(指標則可以是 NULL) 。
(3)一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件) 。
不斷地出現,可見這個問題是經常容易被問到的。
17.
有了 malloc/free 為什麼還要 new/delete ?
【參考答案】
malloc 與 free 是 C++/C 語言的標準庫函式,new/delete 是 C++的運算子。它們都可用於申請動態記憶體和釋放記憶體。
對於非內部資料型別的物件而言,光用 malloc/free 無法滿足動態物件的要求。
物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行解構函式。
由於malloc/free 是庫函式而不是運算子,不在編譯器控制權限之內,不能夠把執行建構函式和解構函式的任務強加於 malloc/free。
因此 C++語言需要一個能完成動態記憶體分配和初始化工作的運算子 new,以及一個能完成清理與釋放記憶體工作的運算子 delete。注意 new/delete 不是庫函式。
以前只是習慣在用C時用malloc/free,用C++時用new/delete,沒注意到這些差異性。
18.如果在申請動態記憶體時找不到足夠大的記憶體塊,malloc 和 new 將返回 NULL 指標,宣告記憶體申請失敗。你是怎麼處理記憶體耗盡的?
【參考答案】
(1)判斷指標是否為 NULL,如果是則馬上用 return 語句終止本函式。
(2)判斷指標是否為 NULL,如果是則馬上用 exit(1)終止整個程式的執行
(3)為 new 和 malloc 設定異常處理函式。例如 Visual C++可以用_set_new_hander 函式為 new 設定使用者自己定義的異常處理函式,也可以讓 malloc 享用與 new 相同的異常處理函式。
我一般是直接return 了
19.C++是不是型別安全的?
【參考答案】不是。兩個不同型別的指標之間可以強制轉換(用reinterpret cast)。
20. const 符號常量;
(1)const char *p
(2)char const *p (
3)char * const p
相關推薦
C++面試必備,概念解析
11.引用與指標有什麼區別?【參考答案】1) 引用必須被初始化,指標不必。2) 引用初始化以後不能被改變,指標可以改變所指的物件。 3) 不存在指向空值的引用,但是存在指向空值的指標。可以參考下 在 5 題中補充的內容12.C++中virtual與inline的含義分別是什麼?【參考答案】在基類成員函式的宣告
面試必備,java常見基礎面試題及答案整理!
大家好,今天為大家帶來了常見的面試題整理的分享。 1、面向物件的特徵有哪些方面 1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是
面試必備,java常見基礎面試題及答案
1、面向物件的特徵有哪些方面 1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。 2.繼承: 繼承是一種聯結類的層次模
2019校招面試必備,15個CNN關鍵回答集錦【必收藏】
關於利用卷積神經網路作為視覺系統的模型是否有生物學理論支援,目前仍然存在許多質疑之聲。本文作者通
Python/Java程序員面試必備常用問題解析與答案
分組 提取 隊列 off 中間人 新的 而不是 生死 轉義 轉自AI算法聯盟,理解python技術問題,以及一些常見的java面試中經常遇到的問題,這些面試問題分為四類: 是什麽(what) 如何做(how) 說區別/談優勢(differenc
MSCL超級工具類(C#),開發人員必備,開發利器
cnblogs 分頁 導入導出 sqlserve context public 簡單 pac dir MSCL超強工具類庫 是基於C#開發的超強工具類集合,涵蓋了日常B/S或C/S開發的諸多方面,包含上百個常用封裝類(數據庫操作類全面支持Mysql、Access、Oracl
軟體測試面試必備的一些基礎理論概念
測試是軟體生存週期中十分重要的一個過程,是產品釋出、提交給終端使用者前的穩定化階段。 一、 測試的分類: 從測試方法的角度可以分為手工測試和自動化測試。 手工測試:不使用任何測試工具,根據事先設計好的測試用例來執行系統,測試各功能模組。 自動化測試:利用測試工具
C++面試題目解析01
1,new malloc的實現區別, 【{ 0. 屬性 n
Python程式設計師面試必備常用問題答案及解析
在公佈《Python軌範員面試,這些問題你必需提早預備!》一文後,應泛博軌範員伴侶的強烈要求,小編就Python軌範員面試必備問題清算了一份參考謎底,希望能對預備換工作的軌範員伴侶有所輔佐。如對謎底有疑問,接待留言會談。 小編將這些面試問題大抵分為四類: 什麼(what)?若何做(how)?
面試必備:LinkedHashMap原始碼解析(JDK8)
概括的說,LinkedHashMap 是一個關聯陣列、雜湊表,它是執行緒不安全的,允許key為null,value為null。 它繼承自HashMap,實現了Map<K,V>介面。其內部還維護了一個雙向連結串列,在每次插入資料,或者訪問、修改資料時,會
C++面試常見題目4_記憶體管理,記憶體洩露
記憶體管理 定義:記憶體管理是指軟體執行時對計算機記憶體資源的分配和使用的技術。其最主要的目的是如何高效,快速的分配,並且在適當的時候釋放和回收記憶體資源。 在C++中記憶體分為5個區,分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。 堆:堆是
深度學習500問,面試必備寶典
隨著深度學習在計算機視覺、自然語言處理、語音處理的應用越來越廣泛,由於人才的供不應求,薪資水平也遠 遠高於其他行業,相對於其他行業要求也要高一些。 深度學習500問,是以一問一答的形式,內容也是非常的豐富,涵蓋了數學知識、機器學習、深度學習、計算機 視覺、自然語言處理等,非常適合面試前複習的資料。
面試必備:快取穿透,快取雪崩的四種解決方案
前言 設計一個快取系統,不得不要考慮的問題就是:快取穿透、快取擊穿與失效時的雪崩效應。 快取穿透 快取穿透是指查詢一個一定不存在的資料,由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取
C#Xml,json解析以及Socket傳輸問題
由於最近寫了一個C#小專案,特此來總結下c#的常見問題 1.xml解析 <span style="white-space:pre"> </span> XmlDocument xmlDoc = new XmlDocument();
C++面試常見題目5_面向物件的三大特性(封裝,繼承,多型)
面向物件的三大特性 封裝 定義:將資料和對該資料進行合法操作的函式封裝在一起作為一個類的定義,即用類進行資料抽象。 繼承 定義:用類派生從一個類繼承另一個類,派生類繼承基類的成員。 訪問控制與繼承 訪問方式
一個簡單的c語言版的DNS解析客戶端,能提供解析耗時
成功的做了一次搬運工,該部分程式碼基本來自於http://blog.csdn.net/jxfgh,不過,原作者沒有新增測試解析耗時的功能,其實我也不知道到時是不是原作者 作為第一次做與網路有關的東西,還是i挺有紀念意義的,所以發博文留念。有新增快取功能的慾望,可惜不知從何下
Android各種知識點最全總結,面試必備
FrameLayout(框架佈局) 此佈局是五中佈局中最簡單的佈局,Android中並沒有對child view的擺佈進行控制,這個佈局中所有的控制元件都會默認出現在檢視的左上角,我們可以使用
面試必備:HashMap原始碼解析(JDK8)
1 概述 本文將從幾個常用方法下手,來閱讀HashMap的原始碼。 按照從構造方法->常用API(增、刪、改、查)的順序來閱讀原始碼,並會講解閱讀方法中涉及的一些變數的意義。瞭解HashMap的特點、適用場景。 如果本文中有不正確的結論、說法
面試必備 | 深入解析Java垃圾回收機制
引入垃圾回收 程式計數器、 虛擬機器棧、 本地方法棧3個區域隨執行緒而生,隨執行緒而滅;棧中的棧幀隨著方法的進入和退出而有條不紊地執行著出棧和入棧操作。 每一個棧幀中分配多少記憶體基本上是在類結構確定下來時就已知的(儘管在執行期會由JIT編譯器 進行一些優化,但在本章基於概念模型的討論中,大體上可以認
徹底理解javascript中的this,面試必備(值得收藏)
(內容同步自小鄒的頭條號:滬漂程式設計師的生活史) this作為js裡面基礎而又重要的一個角色,一直以來都被面試官所倚重,根據小鄒自己的面試經歷和網上的一些調查,相信80%的面試官都會面試這個特殊的物件,今天小鄒總結了一下,讓大夥能夠一勞永逸,每次只要來翻看這篇文章就夠了。 一:全域性執行