這篇文章主要介紹了百度面試的20道C++面試題以及參考答案 ,但願對你們有所幫助。程序員
正確答案: 面試
這問題對區分一個正常的夥計和一個書呆子是頗有用的。只有書呆子纔會讀C語言課本的附錄去找出象這種 問題的答案。固然若是你不是在找一個書呆子,那麼應試者最好但願本身不要知道答案。數據庫
正確答案: 編程
終於最後一題了,容易麼……若是這個測試是一個關於嵌入式的,那麼這道題很是重要!!從詞面上講,volatile的意思是易變的,也就是說,在程序運行過程當中,有一些變量可能會被莫名其妙的改變,而優化器爲了節約時間,有時候不會重讀這個變量的真實值,而是去讀在寄存器的備份,這樣的話,這個變量的真實值反而被優化器給「優化」掉了,用時髦的詞說就是被「和諧」了。若是使用了這個修飾詞,就是通知編譯器別犯懶,老老實實去從新讀一遍!可能我說的太「通俗」了,那麼我引用一下「大師」的標準解釋: volatile的本意是「易變的」 。 因爲訪問寄存器的速度要快過RAM,因此編譯器通常都會做減小存取外部RAM的優化,但有可能會讀髒數據。當要求使用volatile 聲明的變量的值的時候,系統老是從新從它所在的內存讀取數據,即便它前面的指令剛剛從該處讀取過數據。並且讀取的數據馬上被保存。 精確地說就是,優化器在用到這個變量時必須每次都當心地從新讀取這個變量的值,而不是使用保存在寄存器裏的備份。 下面是volatile變量的幾個例子: 1). 並行設備的硬件寄存器(如:狀態寄存器) 2). 一箇中斷服務子程序中會訪問到的非自動變量(Non-automatic variables) 3). 多線程應用中被幾個任務共享的變量 嵌入式系統程序員常常同硬件、中斷、RTOS等等打交道,所用這些都要求volatile變量。不懂得volatile內容將會帶來災難。設計模式
正確答案: 數組
不是,其它數據類型轉換到CString可使用CString的成員函數Format來轉換安全
正確答案: 多線程
內聯函數是在編譯的時候已經作好將對應的函數代碼替換嵌入到對應的位置,適用於代碼較少的函數。 宏定義是簡單的替換變量,若是定義的是有參數的函數形式,參數不作類型校驗。函數
正確答案: 工具
棧: 存放局部變量,函數調用參數,函數返回值,函數返回地址。由系統管理 堆: 程序運行時動態申請,new 和 malloc申請的內存就在堆上
正確答案:
原子性,一致性,隔離性,持久性 就答對一個:一致性,
正確答案:
首先明確一個概念,就是指向數組的指針,和存放指針的數組。 指向數組的指針:char (*array)[5];含義是一個指向存放5個字符的數組的指針。 存放指針的數組:char *array[5];含義是一個數組中存放了5個指向字符型數據的指針。 按照題意,我理解爲初始化一個存放指針的數組,char *array[2]={「China」,」Beijing」};其含義是初始化了一個有兩個指向字符型數據的指針的數組,這兩個指針分別指向字符串」China」和」Beijing」。
正確答案:
至關於 i=j=4;i=k=8;i=l=16;i=m=32; 故最後i=32;
正確答案:
這個問題看似很簡單,可是咱們要將最簡單的問題用最嚴謹的態度來對待。關鍵的地方:初始化、字符型、數組。最簡單的方法是char array[];。這個問題看似解決了,可是在初始化上好像還欠缺點什麼,我的認爲:char array[5]={’1′,’2′,’3′,’4′,’5′};或者char array[5]={「12345″};或者char array[2][10]={「China」,」Beijing」};也許更符合「初始化」的意思。
正確答案:
傳值,傳指針或者引用
正確答案:
這裏「零值」能夠是0, 0.0 , FALSE或者「空指針」。例如 int 變量 n 與「零值」比較的 if 語句爲:
if ( n == 0 )
if ( n != 0 )
正確答案:
多態的基礎是繼承,須要虛函數的支持,簡單的多態是很簡單的。 子類繼承父類大部分的資源,不能繼承的有構造函數,析構函數,拷貝構造函數,operator=函數,友元函數等等
正確答案:
引用就是某個目標變量的「別名」(alias),對應用的操做與對變量直接操做效果徹底相同。申明一個引用的時候,切記要對其進行初始化。引 用聲明完畢後,至關於目標變量名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名做爲其餘變量名的別名。聲明一個引用,不是新定義了一個變量,它只 表示該引用名是目標變量名的一個別名,它自己不是一種數據類型,所以引用自己不佔存儲單元,系統也不給引用分配存儲單元。不能創建數組的引用。
正確答案:
觸發器主要是經過事件進行觸發而被執行的,當對某一表進行諸如UPDATE、 INSERT、 DELETE 這些操做時,數據庫就會自動執行觸發器所定義的SQL 語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規則。
正確答案:
並不只僅是這樣的。 OOD,OOP從根本上改變了程序設計模式和設計思想,具有重大和深遠的意義。 類的三大最基本的特徵:封裝,繼承,多態.
正確答案:
同步多個線程對一個數據類的同時訪問
正確答案:
引用是對象的別名, 操做引用就是操做這個對象, 必須在建立的同時有效得初始化(引用一個有效的對象, 不可爲NULL), 初始化完畢就不再可改變, 引用具備指針的效率, 又具備變量使用的方便性和直觀性, 在語言層面上引用和對象的用法同樣, 在二進制層面上引用通常都是經過指針來實現的, 只是編譯器幫咱們完成了轉換。 之因此使用引用是爲了用適當的工具作恰如其分的事, 體現了最小特權原則。
正確答案:
C中是使用宏#define定義, C++使用更好的const來定義。 區別: 1)const是有數據類型的常量,而宏常量沒有,編譯器能夠對前者進行靜態類型安全檢查,對後者僅是字符替換,沒有類型安全檢查,並且在字符替換時可能會產生意料不到的錯誤(邊際效應)。 2)有些編譯器能夠對const常量進行調試, 不能對宏調試。
正確答案:
C++函數的三種傳遞方式爲:值傳遞、指針傳遞和引用傳遞。
正確答案:
只能執行查詢等讀操做,不能執行更改,備份等寫操做,緣由是任何寫操做都要記錄日誌。也就是說基本上處於不能使用的狀態。
感謝閱讀,但願能幫助到你們,有什麼問題歡迎評論區留言。
若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!
【C語言C++學習企鵝圈子】,分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
編程學習書籍:
編程學習視頻: