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?