• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 創業指南 > 職場 > 面試題 > 常用c/c++的面試題有些呢

    常用c/c++的面試題有些呢

    時間: 朝瑩801 分享

    常用c/c++的面試題有些呢

      隨著經濟社會的不斷發展,傳統面試出現了許多弊端,已經不能夠滿足現代社會需求。那關于常用c/c++的一些面試題是什么呢?下面是學習啦小編為你整理的常用c/c++的一些面試題,希望對你有幫助。

      關于常用c/c++的面試題

      1. C中static有什么作用

      (1)隱藏。 當我們同時編譯多個文件時,所有未加static前綴的全局變量和函數都具有全局可見性,故使用static在不同的文件中定義同名函數和同名變量,而不必擔心命名沖突。

      (2)static的第二個作用是保持變量內容的持久。存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是唯一的一次初始化。共有兩種變量存儲在靜態存儲區:全局變量和static變量。

      (3)static的第三個作用是默認初始化為0.其實全局變量也具備這一屬性,因為全局變量也存儲在靜態數據區。在靜態數據區,內存中所有的字節默認值都是0×00,某些時候這一特點可以減少程序員的工作量。

      2.C++中const有什么用?

      不要一聽到const就說是常量,這樣給考官一種在和一個外行交談的感覺。應該說const修飾的內容不可改變就行了, 定義常量只是一種使用方式而已,還有const數據成員,const參數, const返回值, const成員函數等, 被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性。

      3. C與C++各自是如何定義常量的?有什么不同?

      C中是使用宏#define定義, C++使用更好的const來定義。

      區別:

      1)const是有數據類型的常量,而宏常量沒有,編譯器可以對前者進行靜態類型安全檢查,對后者僅是字符替換,沒有類型安全檢查,而且在字符替換時可能會產生意料不到的錯誤(邊際效應)。

      2)有些編譯器可以對const常量進行調試, 不能對宏調試。

      4. 既然C++中有更好的const為什么還要使用宏?

      const無法代替宏作為衛哨來防止文件的重復包含。

      5. C++中引用和指針的區別?

      引用是對象的別名, 操作引用就是操作這個對象, 必須在創建的同時有效得初始化(引用一個有效的對象, 不可為NULL), 初始化完畢就再也不可改變, 引用具有指針的效率, 又具有變量使用的方便性和直觀性, 在語言層面上引用和對象的用法一樣, 在二進制層面上引用一般都是通過指針來實現的, 只是編譯器幫我們完成了轉換。 之所以使用引用是為了用適當的工具做恰如其分的事, 體現了最小特權原則。

      6. 說一說C與C++的內存分配方式?

      1)從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在,如全局變量,static變量。

      2)在棧上創建。在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置于處理器的指令集中,效率很高,但是分配的內存容量有限。

      3)從堆上分配(動態內存分配)程序在運行的時候用malloc或new申請任意多少的內存,程序員負責在何時用free或delete釋放內存。動態內存的生存期自己決定,使用非常靈活。

      7. new/delete 與 malloc()/free() 的區別?

      malloc() 與 free() 是C語言的標準庫函數, new/delete 是C++的運算符, 他們都可以用來申請和釋放內存, malloc()和free()不在編譯器控制權限之內, 不能把構造函數和析構函數的任務強加給他們。

      8. #include和#include"a.h" 有什么區別?

      答:對于#include ,編譯器從標準庫路徑開始搜索 a.h對于#include "a.h" ,編譯器從用戶的工作路徑開始搜索 a.h

      9. 在C++ 程序中調用被 C編譯器編譯后的函數,為什么要加 extern "C"?

      C++語言支持函數重載,C語言不支持函數重載。函數被C++編譯后在庫中的名字與C語言的不同。假設某個函數的原型為: void foo(int x, int y);該函數被C編譯器編譯后在庫中的名字為_foo,而C++編譯器則會產生像_foo_int_int之類的名字。C++提供了C連接交換指定符號extern"C"來解決名字匹配問題。

      10. C++中的什么是多態性? 是如何實現的?

      多態性是面向對象程序設計語言繼數據抽象和繼承之后的第三個基本特征。它是在運行時出現的多態性通過派生類和虛函數實現?;惡团缮愔惺褂猛瑯拥暮瘮得?, 完成不同的操作具體實現相隔離的另一類接口,即把" w h a t"從"h o w"分離開來。多態性提高了代碼的組織性和可讀性,虛函數則根據類型的不同來進行不同的隔離。

      11. 什么是動態特性?

      在絕大多數情況下, 程序的功能是在編譯的時候就確定下來的, 我們稱之為靜態特性。 反之, 如果程序的功能是在運行時刻才能確定下來的, 則稱之為動態特性。C++中, 虛函數,抽象基類, 動態綁定和多態構成了出色的動態特性。

      12.什么是封裝?C++中是如何實現的?

      封裝來源于信息隱藏的設計理念, 是通過特性和行為的組合來創建新數據類型讓接口與具體實現相隔離。C++中是通過類來實現的, 為了盡量避免某個模塊的行為干擾同一系統中的其它模塊,應該讓模塊僅僅公開必須讓外界知道的接口。

      13. 什么是RTTI?

      RTTI事指運行時類型識別(Run-time type identification)在只有一個指向基類的指針或引用時確定一個對象的準確類型。

      14. 什么是拷貝構造函數?

      它是單個參數的構造函數,其參數是與它同屬一類的對象的(常)引用;類定義中,如果未提供自己的拷貝構造函數,C++提供一個默認拷貝構造函數,該默認拷貝構造函數完成一個成員到一個成員的拷貝

      15. 什么是深淺拷貝?

      淺拷貝是創建了一個對象用一個現成的對象初始化它的時候只是復制了成員(簡單賦值)而沒有拷貝分配給成員的資源(如給其指針變量成員分配了動態內存); 深拷貝是當一個對象創建時,如果分配了資源,就需要定義自己的拷貝構造函數,使之不但拷貝成員也拷貝分配給它的資源。

      16.面向對象程序設計的優點?

      開發時間短, 效率高, 可靠性高。面向對象編程的編碼具有高可重用性,可以在應用程序中大量采用成熟的類庫(如STL),從而雖短了開發時間,軟件易于維護和升級。


      看過“常用c/c++的面試題有些呢”的人還看了:

    1.C#面試題大全

    2.c程序員筆試題

    3.C#習題大全

    4.c語言考試學習的記憶方法

    熱門文章

    986031 主站蜘蛛池模板: 欧美韩国日本在线观看| 大胸喷奶水的www的视频网站 | 亚洲精品无码专区在线| yellow字幕网在线zmzz91| 精品无码成人久久久久久| 成人毛片免费观看视频在线| 国产AV午夜精品一区二区三区| 久久99亚洲网美利坚合众国| 跳d放在里面逛超市的视频 | 亚洲六月丁香六月婷婷蜜芽| 18禁止午夜福利体验区| 欧美成人免费一区二区| 国产精品久久国产精品99| 亚洲乱码一区二区三区在线观看| 日本色图在线观看| 日韩免费三级电影| 国产偷国产偷亚洲高清人| 久久久久亚洲精品无码蜜桃| 被合租粗糙室友到哭| 成年午夜性视频| 再深点灬舒服灬在快点视频| china同性基友gay勾外卖| 洗澡与老太风流69小说| 国产精品欧美激情在线播放| 亚洲AV无码AV吞精久久| 韩国三级黄色片| 搞av.com| 偷拍区小说区图片区另类呻吟 | 成人精品免费视频大全app| 卡通动漫第一页综合专区| chinese国产xxxx实拍| 波多野结衣紧身裙女教师| 国产精品林美惠子在线播放| 乱小说欧美综合| 色一情一乱一伦一视频免费看| 巨大挺进湿润黑人粗大视频| 亚洲视频在线看| 浮力影院亚洲国产第一页| 日韩a级毛片免费观看| 啊~怎么又加了一根手指| jizz中国免费|