面試題2

來源:互聯網
上載者:User

1 int a = -1;

unsigned int b = a;

cout<<b;

有符號類型和無符號類型進行運算的時候,都會轉換為無符號類型,-1在記憶體中以補碼形式表示是全1,那麼變為無符號類型也就是2^32-1.

很多陷阱都是設定在有符號無符號類型轉換中,包括賦值運演算法,關係運算子等等。

拓展:最大的正數加1變為最小的負數,最小的負數減1變為最大的正數。

 

補碼減法

補碼的減法就是這個數的相反數的加法。

比如 7 - 6, 就等於7 + (-6).

7的補碼為000001116的補碼為00000110

6的相反數11111010連同符號位各位取反加一,和7相加等於00000001

2 為什麼要進行記憶體對齊

1、平台原因(移植原因):不是所有的硬體平台都能訪問任意地址上的任意資料的;某些硬體平台只能在某些地址處取某些特定類型的資料,否則拋出硬體異常。

2、效能原因:資料結構(尤其是棧)應該儘可能地在常態範圍上對齊。原因在於,為了訪問未對齊的記憶體,處理器需要作兩次記憶體訪問;而對齊的記憶體訪問僅需要一次訪問。

每個特定平台上的編譯器都有自己的預設“對齊係數”(也叫對齊模數)。程式員可以通過先行編譯命令#pragma pack(n),n=1,2,4,8,16來改變這一係數,其中的n就是你要指定的“對齊係數”。

3 C++通過new 和delete進行記憶體管理,如果new一個對象,這個對象中成員變數還是對象的話,那麼當delete這個對象的時候,還需要對成員對象進行操作嗎

答:不需要,因為每個類都會有析構方法,如果類中包含其他的類對象,在當前對象析構之前,就會調用成員的析構方法。構造的時候也是要調用成員構造方法。

 4 資料庫索引http://baike.baidu.com/view/2079871.htm

對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速存取資料庫表中的特定資訊。

索引分為聚簇索引非聚簇索引兩種,聚簇索引 是按照資料存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。

下層所用的資料結構是B樹http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html

B樹 即二叉搜尋樹:

       1.所有非葉子結點至多擁有兩個兒子(Left和Right);

       2.所有結點儲存一個關鍵字;

       3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹;

B-樹

       是一種多路搜尋樹(並不是二叉的):

       1.定義任意非葉子結點最多隻有M個兒子;且M>2;

       2.根結點的兒子數為[2, M];

       3.除根結點以外的非葉子結點的兒子數為[M/2, M];

       4.每個結點存放至少M/2-1(取上整)和至多M-1個關鍵字;(至少2個關鍵字)

       5.非葉子結點的關鍵字個數=指向兒子的指標個數-1;

       6.非葉子結點的關鍵字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];

       7.非葉子結點的指標:P[1], P[2], …, P[M];其中P[1]指向關鍵字小於K[1]的

子樹,P[M]指向關鍵字大於K[M-1]的子樹,其它P[i]指向關鍵字屬於(K[i-1], K[i])的子樹;

       8.所有葉子結點位於同一層;

B-樹的特性:

       1.關鍵字集合分布在整顆樹中;

       2.任何一個關鍵字出現且只出現在一個結點中;

       3.搜尋有可能在非葉子結點結束;

       4.其搜尋效能等價於在關鍵字全集內做一次二分尋找;

       5.自動層次控制;

 

B+樹

       B+樹是B-樹的變體,也是一種多路搜尋樹:

       1.其定義基本與B-樹同,除了:

       2.非葉子結點的子樹指標與關鍵字個數相同;

       3.非葉子結點的子樹指標P[i],指向關鍵字值屬於[K[i], K[i+1])的子樹

(B-樹是開區間);

       5.為所有葉子結點增加一個鏈指標;

       6.所有關鍵字都在葉子結點出現;

B+的特性:

       1.所有關鍵字都出現在葉子結點的鏈表中(稠密索引),且鏈表中的關鍵字恰好

是有序的;

       2.不可能在非葉子結點命中;

       3.非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存

(關鍵字)資料的資料層;

       4.更適合檔案索引系統;

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.