C++面試

C++方向

一配名、基礎(chǔ)知識(shí)

1、基本語(yǔ)言

1晋辆、說(shuō)一下static關(guān)鍵字的作用

2渠脉、說(shuō)一下C++和C的區(qū)別

3、說(shuō)一下C++中static關(guān)鍵字的作用

4瓶佳、請(qǐng)說(shuō)一下static的作用

5芋膘、說(shuō)一說(shuō)c++中四種cast轉(zhuǎn)換

6. 請(qǐng)說(shuō)一下C/C++ 中指針和引用的區(qū)別

7、給定三角形ABC和一點(diǎn)P(x,y,z)霸饲,判斷點(diǎn)P是否在ABC內(nèi)为朋,給出思路并手寫(xiě)代碼

8、怎么判斷一個(gè)數(shù)是二的倍數(shù)厚脉,怎么求一個(gè)數(shù)中有幾個(gè)1习寸,說(shuō)一下你的思路并手寫(xiě)代碼

9、請(qǐng)你說(shuō)一下你理解的c++中的smart pointer四個(gè)智能指針

10傻工、請(qǐng)回答一下數(shù)組和指針的區(qū)別

11融涣、請(qǐng)你回答一下野指針是什么

12童番、請(qǐng)你介紹一下C++中的智能指針

13、請(qǐng)你回答一下智能指針有沒(méi)有內(nèi)存泄露的情況

14威鹿、請(qǐng)你來(lái)說(shuō)一下智能指針的內(nèi)存泄漏如何解決

15剃斧、請(qǐng)你理解的c++中的引用和指針

16、請(qǐng)你來(lái)說(shuō)一下C++中的智能指針

17忽你、請(qǐng)你回答一下為什么析構(gòu)函數(shù)必須是虛函數(shù)幼东,為什么C++默認(rèn)的析構(gòu)函數(shù)不是虛函數(shù)

18、請(qǐng)你來(lái)說(shuō)一下函數(shù)指針

19科雳、請(qǐng)你來(lái)說(shuō)一下fork函數(shù)

20根蟹、請(qǐng)你來(lái)說(shuō)一下C++中析構(gòu)函數(shù)的作用

21、請(qǐng)你來(lái)說(shuō)一下靜態(tài)函數(shù)和虛函數(shù)的區(qū)別

22糟秘、請(qǐng)你來(lái)說(shuō)一說(shuō)重載和覆蓋

23简逮、請(qǐng)你來(lái)說(shuō)一說(shuō)static關(guān)鍵字

24.、請(qǐng)你說(shuō)一說(shuō)strcpy和strlen

25尿赚、請(qǐng)你說(shuō)一說(shuō)你理解的虛函數(shù)和多態(tài)

26、請(qǐng)你來(lái)回答一下++i 和 i++的區(qū)別

27凌净、請(qǐng)你來(lái)說(shuō)一說(shuō)++i 和 i++的實(shí)現(xiàn)

28须教、請(qǐng)你來(lái)寫(xiě)個(gè)函數(shù)在main函數(shù)執(zhí)行前先運(yùn)行

29轻腺、有段代碼寫(xiě)成了下邊這樣,如果在只修改一個(gè)字符的前提下,使代碼輸出20個(gè)hello

30尉桩、請(qǐng)你來(lái)說(shuō)一下智能指針shared_ptr的實(shí)現(xiàn)

31止邮、以下四行代碼的區(qū)別是什么

32埃唯、請(qǐng)你來(lái)說(shuō)一下C++里是怎么定義常量的?常量存放在內(nèi)存的哪個(gè)位置?

33、請(qǐng)你來(lái)回答一下const修飾成員函數(shù)的目的是什么?

34收叶、如果同時(shí)定義了兩個(gè)函數(shù)隅茎,一個(gè)帶const俏竞,一個(gè)不帶出嘹,會(huì)有問(wèn)題嗎垮斯?

35牺氨、請(qǐng)你來(lái)說(shuō)一說(shuō)隱式類(lèi)型轉(zhuǎn)換

36岭皂、說(shuō)說(shuō)你了解的類(lèi)型轉(zhuǎn)換

37、請(qǐng)你來(lái)說(shuō)一說(shuō)C++函數(shù)椆憾裕空間的最大值

38解幽、請(qǐng)你來(lái)說(shuō)一說(shuō)extern“C”

39霜定、請(qǐng)你回答一下new/delete與malloc/free的區(qū)別是什么

40黍图、請(qǐng)你說(shuō)說(shuō)你了解的RTTI

41、請(qǐng)你說(shuō)說(shuō)虛函數(shù)表具體是怎樣實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)的?

42、請(qǐng)你說(shuō)說(shuō)C語(yǔ)言是怎么進(jìn)行函數(shù)調(diào)用的炫刷?

43顾彰、請(qǐng)你說(shuō)說(shuō)C語(yǔ)言參數(shù)壓棧順序厕隧?

44、請(qǐng)你說(shuō)說(shuō)C++如何處理返回值?

45疗韵、請(qǐng)你回答一下C++中拷貝賦值函數(shù)的形參能否進(jìn)行值傳遞福澡?

46算利、請(qǐng)你回答一下malloc與new區(qū)別

47扒怖、請(qǐng)你說(shuō)一說(shuō)select

48盗痒、請(qǐng)你說(shuō)說(shuō)fork,wait,exec函數(shù)

49蚂蕴、請(qǐng)你回答一下靜態(tài)函數(shù)和虛函數(shù)的區(qū)別

50、請(qǐng)你說(shuō)一說(shuō)重載和覆蓋

51俯邓、請(qǐng)你說(shuō)一說(shuō)static關(guān)鍵字

52骡楼、請(qǐng)你說(shuō)一說(shuō)strcpy和strlen

2、容器和算法

1稽鞭、請(qǐng)你來(lái)說(shuō)一下map和set有什么區(qū)別鸟整,分別又是怎么實(shí)現(xiàn)的

2、請(qǐng)你來(lái)介紹一下STL的allocaotr

3朦蕴、請(qǐng)你來(lái)說(shuō)一說(shuō)STL迭代器刪除元素

4篮条、請(qǐng)你說(shuō)一說(shuō)STL中MAP數(shù)據(jù)存放形式

5、請(qǐng)你講講STL有什么基本組成

6吩抓、請(qǐng)你說(shuō)說(shuō)STL中map與unordered_map

7涉茧、請(qǐng)你說(shuō)一說(shuō)vector和list的區(qū)別,應(yīng)用疹娶,越詳細(xì)越好

8伴栓、請(qǐng)你來(lái)說(shuō)一下STL中迭代器的作用,有指針為何還要迭代器

9、請(qǐng)你說(shuō)一說(shuō)epoll原理

10钳垮、請(qǐng)你說(shuō)一說(shuō)STL迭代器是怎么刪除元素的呢

11除师、請(qǐng)你說(shuō)一說(shuō)STL中MAP數(shù)據(jù)存放形式

12、n個(gè)整數(shù)的無(wú)序數(shù)組扔枫,找到每個(gè)元素后面比它大的第一個(gè)數(shù)汛聚,要求時(shí)間復(fù)雜度為O(N)

13、請(qǐng)你回答一下STL里resize和reserve的區(qū)別

14短荐、請(qǐng)你說(shuō)一說(shuō)stl里面set和map怎么實(shí)現(xiàn)的

3倚舀、類(lèi)和數(shù)據(jù)抽象

1.請(qǐng)你來(lái)說(shuō)一下C++中類(lèi)成員的訪問(wèn)權(quán)限

2、請(qǐng)你來(lái)說(shuō)一下C++中struct和class的區(qū)別

3忍宋、請(qǐng)你回答一下C++類(lèi)內(nèi)可以定義引用數(shù)據(jù)成員嗎痕貌?

4、面向?qū)ο笈c泛型編程

1糠排、請(qǐng)你回答一下什么是右值引用舵稠,跟左值又有什么區(qū)別?

5入宦、編譯與底層

1哺徊、 請(qǐng)你來(lái)說(shuō)一下一個(gè)C++源文件從文本到可執(zhí)行文件經(jīng)歷的過(guò)程?

2乾闰、 請(qǐng)你來(lái)回答一下include頭文件的順序以及雙引號(hào)””和尖括號(hào)的區(qū)別落追?

3、 請(qǐng)你回答一下malloc的原理涯肩,另外brk系統(tǒng)調(diào)用和mmap系統(tǒng)調(diào)用的作用分別是什么轿钠?

4、 請(qǐng)你說(shuō)一說(shuō)C++的內(nèi)存管理是怎樣的病苗?

5疗垛、請(qǐng)你來(lái)說(shuō)一下C++/C的內(nèi)存分配

6、請(qǐng)你回答一下如何判斷內(nèi)存泄漏硫朦?

7.請(qǐng)你來(lái)說(shuō)一下什么時(shí)候會(huì)發(fā)生段錯(cuò)誤

8贷腕、請(qǐng)你來(lái)回答一下什么是memory leak,也就是內(nèi)存泄漏

9阵幸、請(qǐng)你來(lái)回答一下new和malloc的區(qū)別

10花履、請(qǐng)你來(lái)說(shuō)一下?共享內(nèi)存相關(guān)api

11、請(qǐng)你來(lái)說(shuō)一下reactor模型組成

12挚赊、請(qǐng)自己設(shè)計(jì)一下如何采用單線程的方式處理高并發(fā)

13、請(qǐng)你說(shuō)說(shuō)C++如何處理內(nèi)存泄漏济瓢?

14荠割、請(qǐng)你說(shuō)說(shuō)select,epoll的區(qū)別,原理蔑鹦,性能夺克,限制都說(shuō)一說(shuō)

15、請(qǐng)你說(shuō)一說(shuō)C++ STL 的內(nèi)存優(yōu)化

6嚎朽、C++11

1铺纽、請(qǐng)問(wèn)C++11有哪些新特性?

2哟忍、請(qǐng)你詳細(xì)介紹一下C++11中的可變參數(shù)模板狡门、右值引用和lambda這幾個(gè)新特性。

二锅很、操作系統(tǒng)

1其馏、請(qǐng)你說(shuō)一下進(jìn)程與線程的概念,以及為什么要有進(jìn)程線程爆安,其中有什么區(qū)別叛复,他們各自又是怎么同步的

答:

進(jìn)程是對(duì)運(yùn)行時(shí)程序的封裝,是系統(tǒng)進(jìn)行資源調(diào)度和分配的的基本單位扔仓,實(shí)現(xiàn)了操作系統(tǒng)的并發(fā)褐奥;

線程是進(jìn)程的子任務(wù),是CPU調(diào)度和分派的基本單位翘簇,用于保證程序的實(shí)時(shí)性抖僵,實(shí)現(xiàn)進(jìn)程內(nèi)部的并發(fā);線程是操作系統(tǒng)可識(shí)別的最小執(zhí)行和調(diào)度單位缘揪。每個(gè)線程都獨(dú)自占用一個(gè)虛擬處理器:獨(dú)自的寄存器組耍群,指令計(jì)數(shù)器和處理器狀態(tài)。每個(gè)線程完成不同的任務(wù)找筝,但是共享同一地址空間(也就是同樣的動(dòng)態(tài)內(nèi)存蹈垢,映射文件,目標(biāo)代碼等等)袖裕,打開(kāi)的文件隊(duì)列和其他內(nèi)核資源曹抬。


區(qū)別:

1.一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程急鳄,但至少有一個(gè)線程谤民。線程依賴(lài)于進(jìn)程而存在。

2.進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元疾宏,而多個(gè)線程共享進(jìn)程的內(nèi)存张足。(資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源坎藐。同一進(jìn)程中的多個(gè)線程共享代碼段(代碼和常量)为牍,數(shù)據(jù)段(全局變量和靜態(tài)變量)哼绑,擴(kuò)展段(堆存儲(chǔ))。但是每個(gè)線程擁有自己的棧段碉咆,棧段又叫運(yùn)行時(shí)段抖韩,用來(lái)存放所有局部變量和臨時(shí)變量。)

3.進(jìn)程是資源分配的最小單位疫铜,線程是CPU調(diào)度的最小單位茂浮;

4.系統(tǒng)開(kāi)銷(xiāo): 由于在創(chuàng)建或撤消進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源壳咕,如內(nèi)存空間席揽、I/o設(shè)備等。因此囱井,操作系統(tǒng)所付出的開(kāi)銷(xiāo)將顯著地大于在創(chuàng)建或撤消線程時(shí)的開(kāi)銷(xiāo)驹尼。類(lèi)似地,在進(jìn)行進(jìn)程切換時(shí)庞呕,涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存以及新被調(diào)度運(yùn)行的進(jìn)程的CPU環(huán)境的設(shè)置新翎。而線程切換只須保存和設(shè)置少量寄存器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作住练〉貑可見(jiàn),進(jìn)程切換的開(kāi)銷(xiāo)也遠(yuǎn)大于線程切換的開(kāi)銷(xiāo)讲逛。

5.通信:由于同一進(jìn)程中的多個(gè)線程具有相同的地址空間亏吝,致使它們之間的同步和通信的實(shí)現(xiàn),也變得比較容易盏混。進(jìn)程間通信IPC蔚鸥,線程間可以直接讀寫(xiě)進(jìn)程數(shù)據(jù)段(如全局變量)來(lái)進(jìn)行通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性许赃。在有的系統(tǒng)中止喷,線程的切換、同步和通信都無(wú)須操作系統(tǒng)內(nèi)核的干預(yù)

6.進(jìn)程編程調(diào)試簡(jiǎn)單可靠性高混聊,但是創(chuàng)建銷(xiāo)毀開(kāi)銷(xiāo)大弹谁;線程正相反,開(kāi)銷(xiāo)小句喜,切換速度快预愤,但是編程調(diào)試相對(duì)復(fù)雜。

7.進(jìn)程間不會(huì)相互影響 咳胃;線程一個(gè)線程掛掉將導(dǎo)致整個(gè)進(jìn)程掛掉

8.進(jìn)程適應(yīng)于多核植康、多機(jī)分布;線程適用于多核


進(jìn)程間通信的方式:

進(jìn)程間通信主要包括管道拙绊、系統(tǒng)IPC(包括消息隊(duì)列向图、信號(hào)量泳秀、信號(hào)标沪、共享內(nèi)存等)榄攀、以及套接字socket。

1.管道:

管道主要包括無(wú)名管道和命名管道:管道可用于具有親緣關(guān)系的父子進(jìn)程間的通信金句,有名管道除了具有管道所具有的功能外檩赢,它還允許無(wú)親緣關(guān)系進(jìn)程間的通信

1.1 普通管道PIPE:

1)它是半雙工的(即數(shù)據(jù)只能在一個(gè)方向上流動(dòng)),具有固定的讀端和寫(xiě)端

2)它只能用于具有親緣關(guān)系的進(jìn)程之間的通信(也是父子進(jìn)程或者兄弟進(jìn)程之間)

3)它可以看成是一種特殊的文件违寞,對(duì)于它的讀寫(xiě)也可以使用普通的read贞瞒、write等函數(shù)。但是它不是普通的文件趁曼,并不屬于其他任何文件系統(tǒng)军浆,并且只存在于內(nèi)存中。

1.2 命名管道FIFO:

1)FIFO可以在無(wú)關(guān)的進(jìn)程之間交換數(shù)據(jù)

2)FIFO有路徑名與之相關(guān)聯(lián)挡闰,它以一種特殊設(shè)備文件形式存在于文件系統(tǒng)中乒融。


2. 系統(tǒng)IPC:

2.1 消息隊(duì)列

消息隊(duì)列,是消息的鏈接表摄悯,存放在內(nèi)核中赞季。一個(gè)消息隊(duì)列由一個(gè)標(biāo)識(shí)符(即隊(duì)列ID)來(lái)標(biāo)記。 (消息隊(duì)列克服了信號(hào)傳遞信息少奢驯,管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等特點(diǎn))具有寫(xiě)權(quán)限得進(jìn)程可以按照一定得規(guī)則向消息隊(duì)列中添加新信息申钩;對(duì)消息隊(duì)列有讀權(quán)限得進(jìn)程則可以從消息隊(duì)列中讀取信息;

特點(diǎn):

1)消息隊(duì)列是面向記錄的瘪阁,其中的消息具有特定的格式以及特定的優(yōu)先級(jí)撒遣。

2)消息隊(duì)列獨(dú)立于發(fā)送與接收進(jìn)程。進(jìn)程終止時(shí)管跺,消息隊(duì)列及其內(nèi)容并不會(huì)被刪除义黎。

3)消息隊(duì)列可以實(shí)現(xiàn)消息的隨機(jī)查詢(xún),消息不一定要以先進(jìn)先出的次序讀取,也可以按消息的類(lèi)型讀取。


2.2 信號(hào)量semaphore

信號(hào)量(semaphore)與已經(jīng)介紹過(guò)的 IPC 結(jié)構(gòu)不同伙菜,它是一個(gè)計(jì)數(shù)器轩缤,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)。信號(hào)量用于實(shí)現(xiàn)進(jìn)程間的互斥與同步贩绕,而不是用于存儲(chǔ)進(jìn)程間通信數(shù)據(jù)火的。

特點(diǎn):

1)信號(hào)量用于進(jìn)程間同步,若要在進(jìn)程間傳遞數(shù)據(jù)需要結(jié)合共享內(nèi)存淑倾。

2)信號(hào)量基于操作系統(tǒng)的 PV 操作馏鹤,程序?qū)π盘?hào)量的操作都是原子操作。

3)每次對(duì)信號(hào)量的 PV 操作不僅限于對(duì)信號(hào)量值加 1 或減 1娇哆,而且可以加減任意正整數(shù)湃累。

4)支持信號(hào)量組勃救。


2.3 信號(hào)signal

信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生治力。


2.4 共享內(nèi)存(Shared Memory)

它使得多個(gè)進(jìn)程可以訪問(wèn)同一塊內(nèi)存空間蒙秒,不同進(jìn)程可以及時(shí)看到對(duì)方進(jìn)程中對(duì)共享內(nèi)存中數(shù)據(jù)得更新。這種方式需要依靠某種同步操作宵统,如互斥鎖和信號(hào)量等

特點(diǎn):

1)共享內(nèi)存是最快的一種IPC晕讲,因?yàn)檫M(jìn)程是直接對(duì)內(nèi)存進(jìn)行存取

2)因?yàn)槎鄠€(gè)進(jìn)程可以同時(shí)操作,所以需要進(jìn)行同步

3)信號(hào)量+共享內(nèi)存通常結(jié)合在一起使用马澈,信號(hào)量用來(lái)同步對(duì)共享內(nèi)存的訪問(wèn)


3.套接字SOCKET:

socket也是一種進(jìn)程間通信機(jī)制瓢省,與其他通信機(jī)制不同的是,它可用于不同主機(jī)之間的進(jìn)程通信痊班。


線程間通信的方式:

臨界區(qū):通過(guò)多線程的串行化來(lái)訪問(wèn)公共資源或一段代碼勤婚,速度快,適合控制數(shù)據(jù)訪問(wèn)涤伐;

互斥量Synchronized/Lock:采用互斥對(duì)象機(jī)制馒胆,只有擁有互斥對(duì)象的線程才有訪問(wèn)公共資源的權(quán)限。因?yàn)榛コ鈱?duì)象只有一個(gè)废亭,所以可以保證公共資源不會(huì)被多個(gè)線程同時(shí)訪問(wèn)

信號(hào)量Semphare:為控制具有有限數(shù)量的用戶(hù)資源而設(shè)計(jì)的国章,它允許多個(gè)線程在同一時(shí)刻去訪問(wèn)同一個(gè)資源,但一般需要限制同一時(shí)刻訪問(wèn)此資源的最大線程數(shù)目豆村。

事件(信號(hào))液兽,Wait/Notify:通過(guò)通知操作的方式來(lái)保持多線程同步,還可以方便的實(shí)現(xiàn)多線程優(yōu)先級(jí)的比較操作

2掌动、請(qǐng)你說(shuō)一說(shuō)Linux虛擬地址空間

答:為了防止不同進(jìn)程同一時(shí)刻在物理內(nèi)存中運(yùn)行而對(duì)物理內(nèi)存的爭(zhēng)奪和踐踏四啰,采用了虛擬內(nèi)存。

虛擬內(nèi)存技術(shù)使得不同進(jìn)程在運(yùn)行過(guò)程中粗恢,它所看到的是自己獨(dú)自占有了當(dāng)前系統(tǒng)的4G內(nèi)存柑晒。所有進(jìn)程共享同一物理內(nèi)存,每個(gè)進(jìn)程只把自己目前需要的虛擬內(nèi)存空間映射并存儲(chǔ)到物理內(nèi)存上眷射。 事實(shí)上匙赞,在每個(gè)進(jìn)程創(chuàng)建加載時(shí),內(nèi)核只是為進(jìn)程“創(chuàng)建”了虛擬內(nèi)存的布局妖碉,具體就是初始化進(jìn)程控制表中內(nèi)存相關(guān)的鏈表涌庭,實(shí)際上并不立即就把虛擬內(nèi)存對(duì)應(yīng)位置的程序數(shù)據(jù)和代碼(比如.text .data段)拷貝到物理內(nèi)存中,只是建立好虛擬內(nèi)存和磁盤(pán)文件之間的映射就好(叫做存儲(chǔ)器映射)欧宜,等到運(yùn)行到對(duì)應(yīng)的程序時(shí)坐榆,才會(huì)通過(guò)缺頁(yè)異常,來(lái)拷貝數(shù)據(jù)冗茸。還有進(jìn)程運(yùn)行過(guò)程中席镀,要?jiǎng)討B(tài)分配內(nèi)存匹中,比如malloc時(shí),也只是分配了虛擬內(nèi)存豪诲,即為這塊虛擬內(nèi)存對(duì)應(yīng)的頁(yè)表項(xiàng)做相應(yīng)設(shè)置顶捷,當(dāng)進(jìn)程真正訪問(wèn)到此數(shù)據(jù)時(shí),才引發(fā)缺頁(yè)異常跛溉。

請(qǐng)求分頁(yè)系統(tǒng)扮授、請(qǐng)求分段系統(tǒng)和請(qǐng)求段頁(yè)式系統(tǒng)都是針對(duì)虛擬內(nèi)存的芳室,通過(guò)請(qǐng)求實(shí)現(xiàn)內(nèi)存與外存的信息置換荔仁。


虛擬內(nèi)存的好處:

1.擴(kuò)大地址空間乏梁;

2.內(nèi)存保護(hù):每個(gè)進(jìn)程運(yùn)行在各自的虛擬內(nèi)存地址空間次洼,互相不能干擾對(duì)方。虛存還對(duì)特定的內(nèi)存地址提供寫(xiě)保護(hù)遇骑,可以防止代碼或數(shù)據(jù)被惡意篡改卖毁。

3.公平內(nèi)存分配。采用了虛存之后落萎,每個(gè)進(jìn)程都相當(dāng)于有同樣大小的虛存空間亥啦。

4.當(dāng)進(jìn)程通信時(shí),可采用虛存共享的方式實(shí)現(xiàn)练链。

5.當(dāng)不同的進(jìn)程使用同樣的代碼時(shí)翔脱,比如庫(kù)文件中的代碼,物理內(nèi)存中可以只存儲(chǔ)一份這樣的代碼媒鼓,不同的進(jìn)程只需要把自己的虛擬內(nèi)存映射過(guò)去就可以了届吁,節(jié)省內(nèi)存

6.虛擬內(nèi)存很適合在多道程序設(shè)計(jì)系統(tǒng)中使用,許多程序的片段同時(shí)保存在內(nèi)存中绿鸣。當(dāng)一個(gè)程序等待它的一部分讀入內(nèi)存時(shí)疚沐,可以把CPU交給另一個(gè)進(jìn)程使用。在內(nèi)存中可以保留多個(gè)進(jìn)程枚驻,系統(tǒng)并發(fā)度提高

7.在程序需要分配連續(xù)的內(nèi)存空間的時(shí)候濒旦,只需要在虛擬內(nèi)存空間分配連續(xù)空間,而不需要實(shí)際物理內(nèi)存的連續(xù)空間再登,可以利用碎片


虛擬內(nèi)存的代價(jià):

1.虛存的管理需要建立很多數(shù)據(jù)結(jié)構(gòu)尔邓,這些數(shù)據(jù)結(jié)構(gòu)要占用額外的內(nèi)存

2.虛擬地址到物理地址的轉(zhuǎn)換晾剖,增加了指令的執(zhí)行時(shí)間。

3.頁(yè)面的換入換出需要磁盤(pán)I/O梯嗽,這是很耗時(shí)的

4.如果一頁(yè)中只有一部分?jǐn)?shù)據(jù)齿尽,會(huì)浪費(fèi)內(nèi)存。


3灯节、請(qǐng)你說(shuō)一說(shuō)操作系統(tǒng)中的程序的內(nèi)存結(jié)構(gòu)

一個(gè)程序本質(zhì)上都是由BSS段循头、data段、text段三個(gè)組成的炎疆】睿可以看到一個(gè)可執(zhí)行程序在存儲(chǔ)(沒(méi)有調(diào)入內(nèi)存)時(shí)分為代碼段、數(shù)據(jù)區(qū)和未初始化數(shù)據(jù)區(qū)三部分形入。

BSS段(未初始化數(shù)據(jù)區(qū)):通常用來(lái)存放程序中未初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域全跨。BSS段屬于靜態(tài)分配,程序結(jié)束后靜態(tài)變量資源由系統(tǒng)自動(dòng)釋放亿遂。

數(shù)據(jù)段:存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域浓若。數(shù)據(jù)段也屬于靜態(tài)內(nèi)存分配

代碼段:存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這部分區(qū)域的大小在程序運(yùn)行前就已經(jīng)確定蛇数,并且內(nèi)存區(qū)域?qū)儆谥蛔x挪钓。在代碼段中,也有可能包含一些只讀的常數(shù)變量

text段和data段在編譯時(shí)已經(jīng)分配了空間耳舅,而B(niǎo)SS段并不占用可執(zhí)行文件的大小碌上,它是由鏈接器來(lái)獲取內(nèi)存的。

bss段(未進(jìn)行初始化的數(shù)據(jù))的內(nèi)容并不存放在磁盤(pán)上的程序文件中挽放。其原因是內(nèi)核在程序開(kāi)始運(yùn)行前將它們?cè)O(shè)置為0绍赛。需要存放在程序文件中的只有正文段和初始化數(shù)據(jù)段。

data段(已經(jīng)初始化的數(shù)據(jù))則為數(shù)據(jù)分配空間辑畦,數(shù)據(jù)保存到目標(biāo)文件中吗蚌。

數(shù)據(jù)段包含經(jīng)過(guò)初始化的全局變量以及它們的值。BSS段的大小從可執(zhí)行文件中得到纯出,然后鏈接器得到這個(gè)大小的內(nèi)存塊蚯妇,緊跟在數(shù)據(jù)段的后面。當(dāng)這個(gè)內(nèi)存進(jìn)入程序的地址空間后全部清零暂筝。包含數(shù)據(jù)段和BSS段的整個(gè)區(qū)段此時(shí)通常稱(chēng)為數(shù)據(jù)區(qū)箩言。

可執(zhí)行程序在運(yùn)行時(shí)又多出兩個(gè)區(qū)域:棧區(qū)和堆區(qū)。

棧區(qū):由編譯器自動(dòng)釋放焕襟,存放函數(shù)的參數(shù)值陨收、局部變量等。每當(dāng)一個(gè)函數(shù)被調(diào)用時(shí),該函數(shù)的返回類(lèi)型和一些調(diào)用的信息被存放到棧中务漩。然后這個(gè)被調(diào)用的函數(shù)再為他的自動(dòng)變量和臨時(shí)變量在棧上分配空間拄衰。每調(diào)用一個(gè)函數(shù)一個(gè)新的棧就會(huì)被使用。棧區(qū)是從高地址位向低地址位增長(zhǎng)的饵骨,是一塊連續(xù)的內(nèi)存區(qū)域翘悉,最大容量是由系統(tǒng)預(yù)先定義好的,申請(qǐng)的椌哟ィ空間超過(guò)這個(gè)界限時(shí)會(huì)提示溢出妖混,用戶(hù)能從棧中獲取的空間較小。

堆區(qū):用于動(dòng)態(tài)分配內(nèi)存轮洋,位于BSS和棧中間的地址區(qū)域制市。由程序員申請(qǐng)分配和釋放。堆是從低地址位向高地址位增長(zhǎng),采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)坞生。頻繁的malloc/free造成內(nèi)存空間的不連續(xù),產(chǎn)生碎片。當(dāng)申請(qǐng)堆空間時(shí)庫(kù)函數(shù)是按照一定的算法搜索可用的足夠大的空間矛洞。因此堆的效率比棧要低的多。

4飘庄、請(qǐng)你說(shuō)一說(shuō)操作系統(tǒng)中的缺頁(yè)中斷

5俘侠、請(qǐng)你回答一下fork和vfork的區(qū)別

6、請(qǐng)問(wèn)如何修改文件最大句柄數(shù)薇搁?

7斋扰、請(qǐng)你說(shuō)一說(shuō)并發(fā)(concurrency)和并行(parallelism)

8、請(qǐng)問(wèn)mysql的端口號(hào)是多少啃洋,如何修改這個(gè)端口號(hào)

9传货、請(qǐng)你說(shuō)一說(shuō)操作系統(tǒng)中的頁(yè)表尋址

10、請(qǐng)你說(shuō)一說(shuō)有了進(jìn)程宏娄,為什么還要有線程问裕?

11、請(qǐng)問(wèn)單核機(jī)器上寫(xiě)多線程程序孵坚,是否需要考慮加鎖粮宛,為什么?

12卖宠、請(qǐng)問(wèn)線程需要保存哪些上下文巍杈,SP、PC扛伍、EAX這些寄存器是干嘛用的

13筷畦、請(qǐng)你說(shuō)一說(shuō)線程間的同步方式,最好說(shuō)出具體的系統(tǒng)調(diào)用

14刺洒、請(qǐng)你說(shuō)一下多線程和多進(jìn)程的不同

15鳖宾、請(qǐng)你說(shuō)一說(shuō)進(jìn)程和線程的區(qū)別

16亚斋、游戲服務(wù)器應(yīng)該為每個(gè)用戶(hù)開(kāi)辟一個(gè)線程還是一個(gè)進(jìn)程,為什么攘滩?

17帅刊、請(qǐng)你說(shuō)一說(shuō)OS缺頁(yè)置換算法

18、請(qǐng)你說(shuō)一說(shuō)進(jìn)程和線程區(qū)別

19漂问、請(qǐng)你說(shuō)一下多進(jìn)程和多線程的使用場(chǎng)景

20赖瞒、請(qǐng)你說(shuō)一說(shuō)死鎖發(fā)生的條件以及如何解決死鎖

21、請(qǐng)問(wèn)虛擬內(nèi)存和物理內(nèi)存怎么對(duì)應(yīng)

22蚤假、請(qǐng)你說(shuō)一說(shuō)操作系統(tǒng)中的結(jié)構(gòu)體對(duì)齊栏饮,字節(jié)對(duì)齊

23、請(qǐng)問(wèn)進(jìn)程間怎么通信

24磷仰、請(qǐng)你說(shuō)一下虛擬內(nèi)存置換的方式

25袍嬉、請(qǐng)你說(shuō)一下多線程,線程同步的幾種方式

26灶平、請(qǐng)你講述一下互斥鎖(mutex)機(jī)制伺通,以及互斥鎖和讀寫(xiě)鎖的區(qū)別

27、請(qǐng)回答一下進(jìn)程和線程的區(qū)別

28逢享、請(qǐng)你說(shuō)一說(shuō)進(jìn)程狀態(tài)轉(zhuǎn)換圖罐监,動(dòng)態(tài)就緒,靜態(tài)就緒瞒爬,動(dòng)態(tài)阻塞弓柱,靜態(tài)阻塞

29?、A?a = new A; a->i = 10;在內(nèi)核中的內(nèi)存分配上發(fā)生了什么侧但?

30矢空、給你一個(gè)類(lèi),里面有static禀横,virtual屁药,之類(lèi)的,來(lái)說(shuō)一說(shuō)這個(gè)類(lèi)的內(nèi)存分布

31燕侠、請(qǐng)你回答一下軟鏈接和硬鏈接區(qū)別

32者祖、請(qǐng)問(wèn)什么是大端小端以及如何判斷大端小端

33、請(qǐng)你回答一下靜態(tài)變量什么時(shí)候初始化

34绢彤、請(qǐng)你說(shuō)一說(shuō)用戶(hù)態(tài)和內(nèi)核態(tài)區(qū)別

35七问、請(qǐng)問(wèn)如何設(shè)計(jì)server,使得能夠接收多個(gè)客戶(hù)端的請(qǐng)求

36茫舶、死循環(huán)+來(lái)連接時(shí)新建線程的方法效率有點(diǎn)低械巡,怎么改進(jìn)?

37、請(qǐng)問(wèn)怎么喚醒被阻塞的socket線程讥耗?

38有勾、請(qǐng)問(wèn)怎樣確定當(dāng)前線程是繁忙還是阻塞?

39古程、空閑的進(jìn)程和阻塞的進(jìn)程狀態(tài)會(huì)不會(huì)在喚醒的時(shí)候誤判蔼卡?

40、請(qǐng)問(wèn)就緒狀態(tài)的進(jìn)程在等待什么挣磨?

41雇逞、請(qǐng)你說(shuō)一說(shuō)多線程的同步,鎖的機(jī)制

42茁裙、兩個(gè)進(jìn)程訪問(wèn)臨界區(qū)資源塘砸,會(huì)不會(huì)出現(xiàn)都獲得自旋鎖的情況?

43晤锥、假設(shè)臨界區(qū)資源釋放掉蔬,如何保證只讓一個(gè)線程獲得臨界區(qū)資源而不是都獲得?

44矾瘾、windows消息機(jī)制知道嗎女轿,請(qǐng)說(shuō)一說(shuō)

45、C++的鎖你知道幾種?

46霜威、說(shuō)一說(shuō)你用到的鎖

47谈喳、請(qǐng)你說(shuō)一說(shuō)死鎖產(chǎn)生的必要條件?

48戈泼、請(qǐng)你說(shuō)一說(shuō)什么是線程和進(jìn)程,多線程和多進(jìn)程通信方式

49赏僧、請(qǐng)你說(shuō)一說(shuō)內(nèi)存溢出和內(nèi)存泄漏

50大猛、進(jìn)程和線程的區(qū)別,你都使用什么線程模型

51淀零、請(qǐng)你來(lái)說(shuō)一說(shuō)協(xié)程

52挽绩、系統(tǒng)調(diào)用是什么,你用過(guò)哪些系統(tǒng)調(diào)用

53驾中、請(qǐng)你來(lái)手寫(xiě)一下fork調(diào)用示例

54唉堪、請(qǐng)你來(lái)說(shuō)一說(shuō)用戶(hù)態(tài)到內(nèi)核態(tài)的轉(zhuǎn)化原理

55、請(qǐng)你說(shuō)一下源碼到可執(zhí)行文件的過(guò)程

56肩民、請(qǐng)你來(lái)說(shuō)一下微內(nèi)核與宏內(nèi)核

57唠亚、請(qǐng)你說(shuō)一下僵尸進(jìn)程

58、請(qǐng)問(wèn)GDB調(diào)試用過(guò)嗎持痰,什么是條件斷點(diǎn)

59灶搜、請(qǐng)你來(lái)介紹一下5種IO模型

60、請(qǐng)你說(shuō)一說(shuō)異步編程的事件循環(huán)

61、請(qǐng)你回答一下操作系統(tǒng)為什么要分內(nèi)核態(tài)和用戶(hù)態(tài)

62割卖、請(qǐng)你回答一下為什么要有page cache前酿,操作系統(tǒng)怎么設(shè)計(jì)的page cache

63、server端監(jiān)聽(tīng)端口鹏溯,但還沒(méi)有客戶(hù)端連接進(jìn)來(lái)罢维,此時(shí)進(jìn)程處于什么狀態(tài)?

64丙挽、請(qǐng)問(wèn)如何設(shè)計(jì)server肺孵,使得能夠接收多個(gè)客戶(hù)端的請(qǐng)求

65、死循環(huán)+來(lái)連接時(shí)新建線程的方法效率有點(diǎn)低取试,怎么改進(jìn)悬槽?

66、就緒狀態(tài)的進(jìn)程在等待什么瞬浓?

67初婆、請(qǐng)你說(shuō)一下多線程的同步,鎖的機(jī)制

68猿棉、兩個(gè)進(jìn)程訪問(wèn)臨界區(qū)資源磅叛,會(huì)不會(huì)出現(xiàn)都獲得自旋鎖的情況?

69萨赁、假設(shè)臨界區(qū)資源釋放弊琴,如何保證只讓一個(gè)線程獲得臨界區(qū)資源而不是都獲得?

70杖爽、請(qǐng)問(wèn)怎么實(shí)現(xiàn)線程池

71敲董、Linux下怎么得到一個(gè)文件的100到200行

72、請(qǐng)你來(lái)說(shuō)一下awk的使用

73慰安、請(qǐng)你來(lái)說(shuō)一下linux內(nèi)核中的Timer 定時(shí)器機(jī)制

8腋寨、請(qǐng)介紹一下操作系統(tǒng)中的中斷

三、計(jì)算機(jī)網(wǎng)絡(luò)

1化焕、你的研究方向是無(wú)線傳感器網(wǎng)絡(luò)萄窜,請(qǐng)問(wèn)怎么確保節(jié)點(diǎn)傳輸存儲(chǔ)的可靠性

2、請(qǐng)你說(shuō)一下TCP怎么保證可靠性撒桨,并且簡(jiǎn)述一下TCP建立連接和斷開(kāi)連接的過(guò)程

3查刻、請(qǐng)你說(shuō)一說(shuō)TCP的模型,狀態(tài)轉(zhuǎn)移

4凤类、請(qǐng)回答一下HTTP和HTTPS的區(qū)別穗泵,以及HTTPS有什么缺點(diǎn)?

5踱蠢、請(qǐng)你說(shuō)一說(shuō)HTTP和HTTPS的不同

6火欧、請(qǐng)你說(shuō)一說(shuō)HTTP返回碼

7棋电、請(qǐng)你說(shuō)一說(shuō)IP地址作用,以及MAC地址作用

9苇侵、請(qǐng)回答OSI七層模型和TCP/IP四層模型赶盔,每層列舉2個(gè)協(xié)議

10、請(qǐng)你說(shuō)一說(shuō)TCP的三次握手和四次揮手的過(guò)程及原因

11榆浓、搜索baidu于未,會(huì)用到計(jì)算機(jī)網(wǎng)絡(luò)中的什么層?每層是干什么的

12陡鹃、請(qǐng)你說(shuō)一說(shuō)TCP擁塞控制烘浦?以及達(dá)到什么情況的時(shí)候開(kāi)始減慢增長(zhǎng)的速度?

13萍鲸、請(qǐng)問(wèn)TCP用了哪些措施保證其可靠性

14闷叉、請(qǐng)你說(shuō)說(shuō)TCP/IP數(shù)據(jù)鏈路層的交互過(guò)程

15、請(qǐng)你說(shuō)說(shuō)傳遞到IP層怎么知道報(bào)文該給哪個(gè)應(yīng)用程序脊阴,它怎么區(qū)分UDP報(bào)文還是TCP報(bào)文

16握侧、請(qǐng)問(wèn)你有沒(méi)有基于做過(guò)socket的開(kāi)發(fā)?具體網(wǎng)絡(luò)層的操作該怎么做嘿期?(其實(shí)就是網(wǎng)絡(luò)編程的基本步驟)

17品擎、請(qǐng)問(wèn)server端監(jiān)聽(tīng)端口,但還沒(méi)有客戶(hù)端連接進(jìn)來(lái)备徐,此時(shí)進(jìn)程處于什么狀態(tài)萄传?

18、請(qǐng)問(wèn)TCP三次握手是怎樣的蜜猾?

19秀菱、請(qǐng)問(wèn)tcp握手為什么兩次不可以?為什么不用四次蹭睡?

22答朋、請(qǐng)你來(lái)說(shuō)一下TCP擁塞控制?

20棠笑、TCP和UDP的區(qū)別和各自適用的場(chǎng)景

21、請(qǐng)你來(lái)說(shuō)一下TCP三次握手四次揮手的過(guò)程禽绪,為什么tcp連接握手需要三次, time_wait狀態(tài)

22蓖救、請(qǐng)你來(lái)說(shuō)一說(shuō)http協(xié)議

23、請(qǐng)你來(lái)說(shuō)一下GET和POST的區(qū)別

24印屁、請(qǐng)你來(lái)說(shuō)一下socket編程中服務(wù)器端和客戶(hù)端主要用到哪些函數(shù)

25循捺、請(qǐng)你來(lái)說(shuō)一下數(shù)字證書(shū)是什么,里面都包含那些內(nèi)容

26雄人、請(qǐng)你來(lái)介紹一下UDP的connect函數(shù)

27从橘、請(qǐng)你講述一下TCP三次握手念赶,四次揮手,以及為什么用三次握手恰力?

28叉谜、請(qǐng)你說(shuō)一下阻塞,非阻塞踩萎,同步停局,異步

29、請(qǐng)你講述一下Socket編程的send() recv() accept() socket()函數(shù)香府?

30董栽、請(qǐng)你說(shuō)一下http協(xié)議會(huì)話結(jié)束標(biāo)志怎么截出來(lái)?

31企孩、請(qǐng)你說(shuō)一說(shuō)三次握手

32锭碳、請(qǐng)你說(shuō)一說(shuō)四次揮手

33、請(qǐng)你說(shuō)一說(shuō)TCP/IP數(shù)據(jù)鏈路層的交互過(guò)程

四勿璃、數(shù)據(jù)庫(kù)

1擒抛、數(shù)據(jù)庫(kù)基礎(chǔ)

1、請(qǐng)你說(shuō)一下數(shù)據(jù)庫(kù)事務(wù)以及四個(gè)特性

2蝗柔、請(qǐng)你說(shuō)一說(shuō)數(shù)據(jù)庫(kù)的三大范式

3闻葵、請(qǐng)你介紹一下數(shù)據(jù)庫(kù)的ACID特

4、請(qǐng)你說(shuō)一說(shuō)數(shù)據(jù)庫(kù)索引

5癣丧、請(qǐng)你說(shuō)一說(shuō)數(shù)據(jù)庫(kù)事務(wù)

6槽畔、請(qǐng)你說(shuō)一說(shuō)數(shù)據(jù)庫(kù)事務(wù)隔離

7、請(qǐng)你說(shuō)一說(shuō)inner join和left join

8胁编、請(qǐng)你聊一聊數(shù)據(jù)庫(kù)事物的一致性

9厢钧、請(qǐng)你說(shuō)說(shuō)索引是什么,多加索引一定會(huì)好嗎

10嬉橙、k-v存儲(chǔ)中早直,key有哪些要求?

11市框、介紹數(shù)據(jù)庫(kù)中的WAL技術(shù)

2霞扬、Mysql

1、請(qǐng)你說(shuō)一說(shuō)MYSQL的四種隔離狀態(tài)

2枫振、請(qǐng)你介紹一下mysql的MVCC機(jī)制

3喻圃、請(qǐng)問(wèn)SQL優(yōu)化方法有哪些

4、請(qǐng)你說(shuō)一下MySQL引擎和區(qū)別

3粪滤、Redis

1斧拍、請(qǐng)你回答一下MongoDB和redis的區(qū)別

2、請(qǐng)你說(shuō)一下mysql引擎以及其區(qū)別

3杖小、請(qǐng)你來(lái)說(shuō)一說(shuō)Redis的定時(shí)機(jī)制怎么實(shí)現(xiàn)的

4肆汹、請(qǐng)你來(lái)說(shuō)一說(shuō)Redis是單線程的愚墓,但是為什么這么高效呢?

5、請(qǐng)問(wèn)Redis的數(shù)據(jù)類(lèi)型有哪些昂勉,底層怎么實(shí)現(xiàn)?

6浪册、請(qǐng)問(wèn)Redis的rehash怎么做的,為什么要漸進(jìn)rehash硼啤,漸進(jìn)rehash又是怎么實(shí)現(xiàn)的?

7议经、請(qǐng)你來(lái)說(shuō)一下Redis和memcached的區(qū)別

8、請(qǐng)問(wèn)Redis怎么實(shí)現(xiàn)的定期刪除功能

9谴返、請(qǐng)你說(shuō)一說(shuō)Redis對(duì)應(yīng)的命令和數(shù)據(jù)類(lèi)型...

五煞肾、算法與數(shù)據(jù)結(jié)構(gòu)

1、樹(shù)

1嗓袱、請(qǐng)你來(lái)說(shuō)一說(shuō)紅黑樹(shù)和AVL樹(shù)的定義籍救,特點(diǎn),以及二者區(qū)別

2渠抹、請(qǐng)你聊一聊哈夫曼編碼

3蝙昙、請(qǐng)你回答一下map底層為什么用紅黑樹(shù)實(shí)現(xiàn)

4、請(qǐng)你介紹一下B+樹(shù)

5梧却、請(qǐng)你說(shuō)一說(shuō)map和unordered_map的底層實(shí)現(xiàn)

6奇颠、請(qǐng)你回答一下map和unordered_map優(yōu)點(diǎn)和缺點(diǎn)

7、請(qǐng)你回答一下epoll怎么實(shí)現(xiàn)的

8放航、請(qǐng)你說(shuō)一說(shuō)C++兩種map

9烈拒、請(qǐng)問(wèn)紅黑樹(shù)了解嗎

10、請(qǐng)你說(shuō)一說(shuō)紅黑樹(shù)的性質(zhì)還有左右旋轉(zhuǎn)

11广鳍、請(qǐng)你說(shuō)一說(shuō)紅黑樹(shù)的原理以及erase以后迭代器的具體分布情況荆几?

12、請(qǐng)你實(shí)現(xiàn)二叉樹(shù)的層序遍歷并輸出

13赊时、手寫(xiě)代碼:二叉樹(shù)序列化反序列化

2吨铸、堆與棧

1、請(qǐng)說(shuō)一說(shuō)你理解的stack overflow祖秒,并舉個(gè)簡(jiǎn)單例子導(dǎo)致棧溢出

2诞吱、請(qǐng)你回答一下棧和堆的區(qū)別,以及為什么棧要快

3竭缝、手寫(xiě)代碼:兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列

4狐胎、請(qǐng)你來(lái)說(shuō)一下堆和棧的區(qū)別

5、請(qǐng)你說(shuō)一說(shuō)小根堆特點(diǎn)

3歌馍、數(shù)組

1、請(qǐng)你回答一下Array&List晕鹊, 數(shù)組和鏈表的區(qū)別

2.一個(gè)長(zhǎng)度為N的整形數(shù)組松却,數(shù)組中每個(gè)元素的取值范圍是[0,n-1],判斷該數(shù)組否有重復(fù)的數(shù)暴浦,請(qǐng)說(shuō)一下你的思路并手寫(xiě)代碼

4、排序

1晓锻、請(qǐng)你來(lái)手寫(xiě)一下快排的代碼

2歌焦、請(qǐng)問(wèn)求第k大的數(shù)的方法以及各自的復(fù)雜度是怎樣的,另外追問(wèn)一下砚哆,當(dāng)有相同元素時(shí)独撇,還可以使用什么不同的方法求第k大的元素

3、請(qǐng)你來(lái)介紹一下各種排序算法及時(shí)間復(fù)雜度

4躁锁、請(qǐng)你說(shuō)一說(shuō)你知道的排序算法及其復(fù)雜度

5纷铣、請(qǐng)問(wèn)海量數(shù)據(jù)如何去取最大的k個(gè)

6、請(qǐng)你說(shuō)一說(shuō)Top(K)問(wèn)題

7战转、請(qǐng)問(wèn)快排的時(shí)間復(fù)雜度最差是多少搜立?什么時(shí)候時(shí)間最差

8、請(qǐng)問(wèn)穩(wěn)定排序哪幾種槐秧?

9啄踊、請(qǐng)你介紹一下快排算法;以及什么是穩(wěn)定性排序刁标,快排是穩(wěn)定性的嗎颠通;快排算法最差情況推導(dǎo)公式

5、哈希

1膀懈、請(qǐng)你來(lái)說(shuō)一說(shuō)hash表的實(shí)現(xiàn)顿锰,包括STL中的哈希桶長(zhǎng)度常數(shù)。

2吏砂、請(qǐng)你回答一下hash表如何rehash撵儿,以及怎么處理其中保存的資源

3、請(qǐng)你說(shuō)一下哈希表的桶個(gè)數(shù)為什么是質(zhì)數(shù)狐血,合數(shù)有何不妥淀歇?

4、請(qǐng)你說(shuō)一下解決hash沖突的方法

5匈织、請(qǐng)你說(shuō)一說(shuō)哈希沖突的解決方法

6浪默、動(dòng)態(tài)規(guī)劃

1、請(qǐng)你手寫(xiě)代碼:最長(zhǎng)公共連續(xù)子序列

2缀匕、手寫(xiě)代碼:求一個(gè)字符串最長(zhǎng)回文子串

3纳决、手寫(xiě)代碼:查找最長(zhǎng)回文子串

7、鏈表

1.請(qǐng)你手寫(xiě)代碼乡小,如何合并兩個(gè)有序鏈表

2阔加、手寫(xiě)代碼:反轉(zhuǎn)鏈表

3、判斷一個(gè)鏈表是否為回文鏈表满钟,說(shuō)出你的思路并手寫(xiě)代碼

4胜榔、請(qǐng)你手寫(xiě)鏈表反轉(zhuǎn)

5胳喷、什么是單向鏈表,如何判斷兩個(gè)單向鏈表是否相交

7夭织、高級(jí)算法

1吭露、如果讓你做自然語(yǔ)言理解(NLU),在處理語(yǔ)言規(guī)則的時(shí)候大概會(huì)用到什么算法

2尊惰、請(qǐng)問(wèn)加密方法都有哪些

3讲竿、什么是LRU緩存

4、請(qǐng)你說(shuō)一說(shuō)洗牌算法

8弄屡、字符串

1题禀、給你一個(gè)字符串,找出第一個(gè)不重復(fù)的字符琢岩,如“abbbabcd”投剥,則第一個(gè)不重復(fù)就是c

六、項(xiàng)目相關(guān)

1担孔、請(qǐng)你回答一下git中Merge和rebase區(qū)別

七江锨、設(shè)計(jì)模式

1、請(qǐng)問(wèn)你用過(guò)哪些設(shè)計(jì)模式糕篇,介紹一下單例模式的多線程安全問(wèn)題

2啄育、請(qǐng)問(wèn)你了解哪些設(shè)計(jì)模式?

3拌消、請(qǐng)問(wèn)如何保證單例模式只有唯一實(shí)例挑豌?你知道的都有哪些方法?

4墩崩、請(qǐng)你說(shuō)一說(shuō)OOP的設(shè)計(jì)模式的五項(xiàng)原則

5氓英、請(qǐng)你說(shuō)說(shuō)工廠模式的優(yōu)點(diǎn)?

6鹦筹、請(qǐng)你說(shuō)一下觀察者模式

7铝阐、請(qǐng)你介紹一下單例模式

8、單例模式中的懶漢加載铐拐,如果并發(fā)訪問(wèn)該怎么做徘键?

9、裝飾器模式和單例模式遍蟋,使用單例模式應(yīng)該注意什么

八吹害、場(chǎng)景題

1、給你兩個(gè)球虚青,100層樓它呀,每個(gè)球在一定高度扔下去會(huì)碎,怎么用最少的次數(shù)給判斷是幾層樓能把求摔碎?

九钟些、分布式與架構(gòu)

1烟号、分布式緩存和分布式存儲(chǔ)的設(shè)計(jì)

C++考點(diǎn)部分的考點(diǎn)答案看這里:

附C++知識(shí)點(diǎn)思維導(dǎo)圖和答案~

機(jī)器學(xué)習(xí)/算法校招面試考點(diǎn)匯總(附面試題和答案)【持續(xù)更新】_筆經(jīng)面經(jīng)_牛客網(wǎng)?www.nowcoder.com?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末政恍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子达传,更是在濱河造成了極大的恐慌篙耗,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宪赶,死亡現(xiàn)場(chǎng)離奇詭異宗弯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)搂妻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)蒙保,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人欲主,你說(shuō)我怎么就攤上這事邓厕。” “怎么了扁瓢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵详恼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我引几,道長(zhǎng)昧互,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任伟桅,我火速辦了婚禮敞掘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楣铁。我一直安慰自己玖雁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布民褂。 她就那樣靜靜地躺著茄菊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赊堪。 梳的紋絲不亂的頭發(fā)上面殖,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音哭廉,去河邊找鬼脊僚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辽幌。 我是一名探鬼主播增淹,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乌企!你這毒婦竟也來(lái)了虑润?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤加酵,失蹤者是張志新(化名)和其女友劉穎拳喻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猪腕,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冗澈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陋葡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚亲。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腐缤,靈堂內(nèi)的尸體忽然破棺而出捌归,到底是詐尸還是另有隱情,我是刑警寧澤柴梆,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布陨溅,位于F島的核電站,受9級(jí)特大地震影響绍在,放射性物質(zhì)發(fā)生泄漏门扇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一偿渡、第九天 我趴在偏房一處隱蔽的房頂上張望臼寄。 院中可真熱鬧,春花似錦溜宽、人聲如沸吉拳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)留攒。三九已至,卻和暖如春嫉嘀,著一層夾襖步出監(jiān)牢的瞬間炼邀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工剪侮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拭宁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杰标,于是被迫代替她去往敵國(guó)和親兵怯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容