蔣豆芽的秋招打怪之旅——面試題專欄總結(jié)開啟!P苎省!
歡迎大家指正批評!!!
詳情請戳網(wǎng)址:
https://blog.nowcoder.net/zhuanlan/v0E5P0
來和蔣豆芽一起春秋招打怪吧B胀堋;っ痢!
私聊我送學(xué)習(xí)資料哦粗截,提供求職解疑M锇摇!熊昌!
本專欄介紹
本專欄適合于C/C++已經(jīng)入門的學(xué)生或人士绽榛,有一定的編程基礎(chǔ)。
本專欄適合于互聯(lián)網(wǎng)C++軟件開發(fā)婿屹、嵌入式軟件求職的學(xué)生或人士灭美。
適合基礎(chǔ)比較好的同學(xué),本專欄針對面試題答案進行了優(yōu)化昂利,盡量做到好記届腐、言簡意賅。
針對于非科班和基礎(chǔ)不太好的同學(xué)蜂奸,建議學(xué)習(xí)本人尷缢眨刊文章《蔣豆芽的秋招打怪之旅》,該尷┧刊文章對每一個知識點進行了詳細解析围详。本專刊采用講故事的形式為大家串聯(lián)祖屏、呈現(xiàn)每一個知識點助赞,做到有趣有干貨、通俗易懂袁勺,春秋招本是痛苦難捱的過程嫉拐,我希望通過自己講故事能緩解大家的壓力與焦慮,并將知識輕松學(xué)到手魁兼。網(wǎng)址:https://www.nowcoder.com/tutorial/10078/index
本專欄特點:
本專欄囊括了C語言婉徘、C++漠嵌、操作系統(tǒng)、計算機網(wǎng)絡(luò)盖呼、嵌入式儒鹿、算法與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫等一系列知識點几晤,總結(jié)出了高頻面試考點(附有答案)共計291道约炎,事半功倍,為大家春秋招助力蟹瘾。
本專欄內(nèi)容分為七章:共計291道高頻面試題(附有答案)
蔣豆芽的秋招打怪之旅——啊C啊C我愛你
蔣豆芽的秋招打怪之旅——C++說愛你不容易
蔣豆芽的秋招打怪之旅——操作系統(tǒng)圾浅,揭開鋼琴的蓋子
蔣豆芽的秋招打怪之旅——說說計算機網(wǎng)絡(luò)的那些事
蔣豆芽的秋招打怪之旅——嵌入式基礎(chǔ)知識(僅適合嵌入式求職的同學(xué))
蔣豆芽的秋招打怪之旅——算法與數(shù)據(jù)結(jié)構(gòu)
蔣豆芽的秋招打怪之旅——數(shù)據(jù)庫(僅適合C++軟件開發(fā)求職的同學(xué))
如專欄內(nèi)容有錯漏,歡迎在評論區(qū)指出或私聊我更改憾朴,一起學(xué)習(xí)狸捕,共同進步。
請尊重我的知識產(chǎn)權(quán)众雷,未經(jīng)允許嚴(yán)禁各類機構(gòu)和個人轉(zhuǎn)載灸拍、傳閱本專欄的內(nèi)容。
快走入蔣豆芽的世界來吧砾省,和蔣豆芽一起開啟春秋招打怪之旅<Ω凇!编兄!
作者介紹
湖南大學(xué)(985)碩士研究生(1%保研)轩性,國家獎學(xué)金、省優(yōu)秀研究生稱號獲得者狠鸳。校招面試過數(shù)十家公司炮姨,經(jīng)驗豐富,獲得過華為碰煌、京東舒岸、順豐科技等公司offer。個人面試經(jīng)歷寫作為屄刊文章蛾派,目前為牛客網(wǎng)尭錾伲刊作者洪乍。擅長機器學(xué)習(xí)、C++后臺開發(fā)夜焦、嵌入式軟件開發(fā)壳澳。非科班研究生,立志進入互聯(lián)網(wǎng)領(lǐng)域茫经,最后通過自己的努力拿到大公司的offer巷波,將自己的經(jīng)歷寫入了《蔣豆芽的秋招打怪之旅》故事中萎津,和大家分享春秋招的酸甜苦辣。
部分題目展示
說說數(shù)組和指針的區(qū)別
概念:
(1)數(shù)組:數(shù)組是用于儲存多個相同類型數(shù)據(jù)的集合抹镊。?數(shù)組名是首元素的地址锉屈。
(2)指針:指針相當(dāng)于一個變量,但是它和不同變量不一樣垮耳,它存放的是其它變量在內(nèi)存中的地址颈渊。指針名指向了內(nèi)存的首地址。
區(qū)別:
(1)賦值:同類型指針變量可以相互賦值终佛;數(shù)組不行俊嗽,只能一個一個元素的賦值或拷貝
(2)存儲方式:
數(shù)組:數(shù)組在內(nèi)存中是連續(xù)存放的,開辟一塊連續(xù)的內(nèi)存空間铃彰。數(shù)組是根據(jù)數(shù)組的下進行訪問的绍豁,數(shù)組的存儲空間,不是在靜態(tài)區(qū)就是在棧上豌研。
指針:指針很靈活妹田,它可以指向任意類型的數(shù)據(jù)唬党。指針的類型說明了它所指向地址空間的內(nèi)存鹃共。由于指針本身就是一個變量,再加上它所存放的也是變量驶拱,所以指針的存儲空間不能確定霜浴。
(3)求sizeof:
數(shù)組所占存儲空間的內(nèi)存大小:sizeof(數(shù)組名)/sizeof(數(shù)據(jù)類型)
在32位平臺下蓝纲,無論指針的類型是什么阴孟,sizeof(指針名)都是4,在64位平臺下税迷,無論指針的類型是什么永丝,sizeof(指針名)都是8。
(4)初始化:
數(shù)組指針與指針數(shù)組的區(qū)別
數(shù)組指針是一個指針變量箭养,指向了一個二維數(shù)組慕嚷;指針數(shù)組是一個數(shù)組,只不過數(shù)組的元素存儲的是指針變量毕泌。
指針函數(shù)與函數(shù)指針的區(qū)別
(1)定義不同指針函數(shù)本質(zhì)是一個函數(shù)喝检,其返回值為指針。?函數(shù)指針本質(zhì)是一個指針撼泛,其指向一個函數(shù)挠说。
(2)寫法不同
指針函數(shù):int *fun(int x,int y); 函數(shù)指針:int (*fun)(int x,int y);
(3)用法不同
指針函數(shù)返回一個指針。?函數(shù)指針使用過程中指向一個函數(shù)愿题。通常用于函數(shù)回調(diào)的應(yīng)用場景
請說說內(nèi)存分布模型
從低地址到高地址损俭,一個程序由代碼段蛙奖、數(shù)據(jù)段、BSS段組成撩炊。
數(shù)據(jù)段:存放程序中已初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域外永。
代碼段:存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。只讀拧咳,代碼段的頭部還會包含一些只讀的常數(shù)變量伯顶。
BSS?段:存放程序中未初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域。
可執(zhí)行程序在運行時又會多出兩個區(qū)域:堆區(qū)和棧區(qū)骆膝。
堆區(qū):動態(tài)申請內(nèi)存用祭衩。堆從低地址向高地址增長。
棧區(qū):存儲局部變量阅签、函數(shù)參數(shù)值掐暮。棧從高地址向低地址增長。是一塊連續(xù)的空間政钟。
最后還有一個文件映射區(qū)路克,位于堆和棧之間。
堆和棧的區(qū)別
堆椦唬空間分配不同精算。棧由操作系統(tǒng)自動分配釋放 ,存放函數(shù)的參數(shù)值碎连,局部變量的值等灰羽,棧有著很高的效率;堆一般由程序員分配釋放鱼辙,堆的效率比棧要低的多廉嚼。
堆棧緩存方式不同。棧使用的是一級緩存倒戏, 它們通常都是被調(diào)用時處于存儲空間中怠噪,調(diào)用完畢立即釋放;堆則是存放在二級緩存中杜跷,速度要慢些傍念。
堆棧數(shù)據(jù)結(jié)構(gòu)不同。堆類似數(shù)組結(jié)構(gòu)葱椭;棧類似棧結(jié)構(gòu)捂寿,先進后出。
空間大蟹踉恕:?棧的空間大小并不大秦陋,一般最多為2M,超過之后會報Overflow錯誤治笨。堆的空間非常大驳概,最大可到達4G赤嚼,可操作的空間非常大。
能否產(chǎn)生碎片:?棧的操作與數(shù)據(jù)結(jié)構(gòu)中的棧用法是類似的顺又「洌‘后進先出’的原則,以至于不可能有一個空的內(nèi)存塊從棧被彈出稚照。因為在它彈出之前蹂空,在它上面的后進棧的數(shù)據(jù)已經(jīng)被彈出。它是嚴(yán)格按照棧的規(guī)則來執(zhí)行果录。但是堆是通過new/malloc隨機申請的空間上枕,頻繁的調(diào)用它們,則會產(chǎn)生大量的內(nèi)存碎片弱恒。這是不可避免地辨萍。
請你說說野指針
野指針就是指針指向的位置是不可知的(隨機的、不正確的返弹、沒有明確限制的)
野指針不同于空指針锈玉,空指針是指一個指針的值為null,而野指針的值并不為null义起,野指針會指向一段實際的內(nèi)存拉背,只是它指向哪里我們并不知情,或者是它所指向的內(nèi)存空間已經(jīng)被釋放并扇,所以在實際使用的過程中去团,我們并不能通過指針判空去識別一個指針是否為野指針抡诞。
請你說說內(nèi)存泄露
簡單地說就是申請了一塊內(nèi)存空間穷蛹,使用完畢后沒有釋放掉。
(1)new和malloc申請資源使用后昼汗,沒有用delete和free釋放肴熏;
(2)子類繼承父類時,父類析構(gòu)函數(shù)不是虛函數(shù)顷窒。
(3)Windows句柄資源使用后沒有釋放蛙吏。
有以下幾種避免方法:
第一:良好的編碼習(xí)慣,使用了內(nèi)存分配的函數(shù)鞋吉,一旦使用完畢,要記得使用其相應(yīng)的函數(shù)釋放掉鸦做。
第二:將分配的內(nèi)存的指針以鏈表的形式自行管理,使用完畢之后從鏈表中刪除谓着,程序結(jié)束時可檢查改鏈表泼诱。
第三:使用智能指針。
第四:一些常見的工具插件赊锚,如ccmalloc治筒、Dmalloc屉栓、Leaky、Valgrind等等耸袜。
堆內(nèi)存申請需要注意什么友多?
(1)不要錯誤地返回指向“棧內(nèi)存”的指針,因為該內(nèi)存在函數(shù)結(jié)束時自動消亡堤框。
(2)不要返回了常量區(qū)的內(nèi)存空間域滥。因為常量字符串,存放在代碼段的常量區(qū)蜈抓,生命期內(nèi)恒定不變骗绕,只讀不可修改。
(3)通過傳入一級指針不能解決资昧,因為函數(shù)內(nèi)部的指針將指向新的內(nèi)存地址酬土。
解決辦法:
(1)使用二級指針
(2)通過指針函數(shù)解決,返回新申請的內(nèi)存空間的地址格带。
請你說說內(nèi)存碎片
內(nèi)存碎片通常分為內(nèi)部碎片和外部碎片:
(1)內(nèi)部碎片是由于采用固定大小的內(nèi)存分區(qū)撤缴,當(dāng)一個進程不能完全使用分給它的固定內(nèi)存區(qū)域時就產(chǎn)生了內(nèi)部碎片,通常內(nèi)部碎片難以完全避免叽唱;
(2)外部碎片是由于某些未分配的連續(xù)內(nèi)存區(qū)域太小屈呕,以至于不能滿足任意進程的內(nèi)存分配請求,從而不能被進程利用的內(nèi)存區(qū)域棺亭。再比如堆內(nèi)存的頻繁申請釋放虎眨,也容易產(chǎn)生外部碎片。
解決方法:
(1)段頁式管理
(2)內(nèi)存池
請你說說malloc內(nèi)存管理原理
當(dāng)開辟的空間小于 128K 時镶摘,調(diào)用 brk()函數(shù)嗽桩;
當(dāng)開辟的空間大于 128K 時,調(diào)用mmap()凄敢。
malloc采用的是內(nèi)存池的管理方式碌冶,以減少內(nèi)存碎片。先申請大塊內(nèi)存作為堆區(qū)涝缝,然后將堆區(qū)分為多個內(nèi)存塊扑庞。當(dāng)用戶申請內(nèi)存時,直接從堆區(qū)分配一塊合適的空閑快拒逮。采用隱式鏈表將所有空閑塊罐氨,每一個空閑塊記錄了一個未分配的、連續(xù)的內(nèi)存地址滩援。
什么是內(nèi)存池
內(nèi)存池也是一種對象池栅隐,我們在使用內(nèi)存對象之前,先申請分配一定數(shù)量的內(nèi)存塊留作備用。當(dāng)有新的內(nèi)存需求時约啊,就從內(nèi)存池中分出一部分內(nèi)存塊邑遏,若內(nèi)存塊不夠再繼續(xù)申請新的內(nèi)存。當(dāng)不需要此內(nèi)存時恰矩,重新將此內(nèi)存放入預(yù)分配的內(nèi)存塊中记盒,以待下次利用。這樣合理的分配回收內(nèi)存使得內(nèi)存分配效率得到提升外傅。
說說new和malloc的區(qū)別纪吮,各自底層實現(xiàn)原理
new是操作符,而malloc是函數(shù)萎胰。
new在調(diào)用的時候先分配內(nèi)存碾盟,在調(diào)用構(gòu)造函數(shù),釋放的時候調(diào)用析構(gòu)函數(shù)技竟;而malloc沒有構(gòu)造函數(shù)和析構(gòu)函數(shù)冰肴。
malloc需要給定申請內(nèi)存的大小,返回的指針需要強轉(zhuǎn)榔组;new會調(diào)用構(gòu)造函數(shù)熙尉,不用指定內(nèi)存的大小,返回指針不用強轉(zhuǎn)搓扯。检痰、
new可以被重載;malloc不行
new分配內(nèi)存更直接和安全锨推。
new發(fā)生錯誤拋出異常铅歼,malloc返回null
說說使用指針需要注意什么?
定義指針時换可,先初始化為NULL椎椰。
用malloc或new申請內(nèi)存之后,應(yīng)該立即檢查指針值是否為NULL锦担。防止使用指針值為NULL的內(nèi)存俭识。
不要忘記為數(shù)組和動態(tài)內(nèi)存賦初值慨削。防止將未被初始化的內(nèi)存作為右值使用洞渔。
避免數(shù)字或指針的下標(biāo)越界,特別要當(dāng)心發(fā)生“多1”或者“少1”操作
動態(tài)內(nèi)存的申請與釋放必須配對缚态,防止內(nèi)存泄漏
用free或delete釋放了內(nèi)存之后磁椒,立即將指針設(shè)置為NULL,防止“野指針”
初始化為0的全局變量在bss還是data
BSS段通常是指用來存放程序中未初始化的或者初始化為0的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域玫芦。特點是可讀寫的浆熔,在程序執(zhí)行之前BSS段會自動清0。
大綱
蔣豆芽的秋招打怪之旅——啊C啊C我愛你
1.1 int main(int argc, char ** argv)函數(shù)中桥帆,參數(shù)argc和argv分別代表什么意思医增?????
1.2 結(jié)構(gòu)體和共用體的區(qū)別慎皱?????
1.3 簡述C++有幾種傳值方式,之間的區(qū)別是什么叶骨?????
1.4 全局變量和局部變量的區(qū)別????
1.5 請說說原碼茫多、反碼、補碼????
1.6 說說數(shù)組和指針的區(qū)別?????
1.7 數(shù)組指針與指針數(shù)組的區(qū)別?????
1.8 指針函數(shù)與函數(shù)指針的區(qū)別?????
1.9 請說說內(nèi)存分布模型?????
1.10 堆和棧的區(qū)別?????
1.11 請你說說野指針?????
1.12 請你說說內(nèi)存泄露?????
1.13 堆內(nèi)存申請需要注意什么忽刽??????
1.14 請你說說內(nèi)存碎片?????
1.15 請你說說malloc內(nèi)存管理原理?????
1.16 什么是內(nèi)存池????
1.17 說說new和malloc的區(qū)別天揖,各自底層實現(xiàn)原理?????
1.18 說說使用指針需要注意什么??????
1.19 初始化為0的全局變量在bss還是data????
蔣豆芽的秋招打怪之旅——C++說愛你不容易
1.1 你怎么理解C語言和C++的區(qū)別跪帝??????
1.2 簡述下C++語言的特點????
1.3 簡述C++從代碼到可執(zhí)行二進制文件的過程?????
1.4 說說include頭文件的順序以及雙引號""和尖括號<>的區(qū)別???
1.5 知道動態(tài)鏈接與靜態(tài)鏈接嗎今膊?兩者有什么區(qū)別????
1.6 導(dǎo)入C函數(shù)的關(guān)鍵字是什么,C++編譯時和C有什么不同伞剑?????
1.7 請你說說什么是宏斑唬??????
1.8 為什么要少使用宏?C++有什么解決方案黎泣??????
1.9 請你說說內(nèi)聯(lián)函數(shù)赖钞,為什么使用內(nèi)聯(lián)函數(shù)?需要注意什么聘裁??????
1.10 說說內(nèi)聯(lián)函數(shù)和宏函數(shù)的區(qū)別?????
1.11 什么是字節(jié)對齊雪营?為什么要字節(jié)對齊??????
1.12 結(jié)構(gòu)體和共用體的區(qū)別????
1.13 說說內(nèi)聯(lián)函數(shù)和函數(shù)的區(qū)別衡便,內(nèi)聯(lián)函數(shù)的作用献起。?????
1.14 說說const和define的區(qū)別?????
1.15 說說const的作用?????
1.16 const修飾函數(shù)的三個位置?????
1.17 說說const int *a,?int const *a,?const int a,?int *const a,?const int *const a分別是什么,有什么特點镣陕。?????
1.18 說說靜態(tài)局部變量谴餐,全局變量,局部變量的特點呆抑,以及使用場景????
1.19 說說靜態(tài)變量什么時候初始化岂嗓????
1.20 說說 static關(guān)鍵字的作用?????
1.21 為什么靜態(tài)成員函數(shù)不能訪問非靜態(tài)成員?????
1.22 靜態(tài)成員函數(shù)與普通成員函數(shù)的區(qū)別?????
1.23 說說volatile和mutable?????
1.24 說說volatile的應(yīng)用?????
1.25 說說原子操作????
1.26 說說引用和指針的區(qū)別?????
1.27 說說左值和右值????
1.28 說說右值引用的作用?????
1.29 說說移動語義的原理?????
1.30 多線程編程修改全局變量需要注意什么?????
1.31 說說類的訪問權(quán)限有幾種?????
1.32 對象是值傳遞還是引用傳遞?????
1.33 拷貝構(gòu)造函數(shù)的參數(shù)類型為什么必須是引用?????
1.34 判斷構(gòu)造次數(shù)和析構(gòu)次數(shù)?????
1.35 說說初始化列表的使用場景?????
1.36 下面這個例題,Student1有幾個受保護的成員鹊碍??????
1.37 深拷貝與淺拷貝的區(qū)別?????
1.38 實現(xiàn)一個string類?????
1.39 說說this指針?????
1.40 說說 C++中 struct 和 class 的區(qū)別?????
1.41 說說C++結(jié)構(gòu)體和C結(jié)構(gòu)體的區(qū)別?????
1.42 nullptr調(diào)用成員函數(shù)可以嗎厌殉?為什么??????
1.43 析構(gòu)函數(shù)必須為虛函數(shù)嗎侈咕?構(gòu)造函數(shù)可以為虛函數(shù)嗎公罕??????
1.44 構(gòu)造與析構(gòu)的順序?????
1.45 請說說你對多態(tài)的理解?????
1.46 重載和重寫的區(qū)別?????
1.47 請你說說虛函數(shù)的工作機制?????
1.48 虛函數(shù)表在什么時候創(chuàng)建?每個對象都有一份虛函數(shù)表嗎耀销??????
1.49 函數(shù)重載是怎么實現(xiàn)的楼眷??????
1.50 純虛函數(shù)了解嗎?什么情況下使用??????
1.51 請說說操作符重載?????
1.52 哪些操作符不能重載罐柳????
1.53 請說說多重繼承的二義性?????
1.54 迭代器和指針有什么區(qū)別掌腰?有了指針干嘛還要迭代器??????
1.55 前置 ++i 與后置 i++ 的區(qū)別?????
1.56 請你說說STL????
1.57 vector如何正確刪除重復(fù)元素?????
1.58 迭代器刪除的問題?????
1.59 請你說說函數(shù)模板與模板函數(shù)?????
1.60 請你說說智能指針张吉,智能指針為什么不用手動釋放內(nèi)存了辅斟??????
1.61 auto_ptr有什么樣的問題?????
1.62 unique_ptr指針實現(xiàn)原理?????
1.63 shared_ptr實現(xiàn)原理,來手撕一下?????
1.64 shared_ptr會不會出現(xiàn)內(nèi)存泄露芦拿?怎么解決士飒??????
1.65 說一說cast類型轉(zhuǎn)換?????
1.66 說一說lambda?????
蔣芽的秋招打怪之旅——操作系統(tǒng),揭開鋼琴的蓋子
1.1 操作系統(tǒng)的功能???
1.2 請你說說CPU工作原理?????
1.3 請你說說CPU流水線????
1.4 內(nèi)核態(tài)與用戶態(tài)的區(qū)別?????
1.5 什么是系統(tǒng)調(diào)用?????
1.6 請你說說并發(fā)和并行?????
1.7 請你說說物理內(nèi)存層次???
1.8 說說存儲類型?????
1.9 Linux中查看進程運行狀態(tài)的指令蔗崎、查看內(nèi)存使用情況的指令酵幕、tar解壓文件的參數(shù)。???
1.10 文件權(quán)限怎么修改???
1.11 說說常用的Linux命令???
1.12 說說如何以root權(quán)限運行某個程序缓苛。???
1.13 說說常見信號有哪些芳撒,表示什么含義????
1.14 Linux里如何查看一個想知道的進程未桥????
1.15 Linux里如何查看帶有關(guān)鍵字的日志文件笔刹????
1.16 說說你對grep命令的了解????
1.17 Linux修改主機名的命令是什么冬耿????
1.18 Linux開機自動執(zhí)行命令如何實現(xiàn)舌菜????
1.19 Linux中,如何通過端口查進程亦镶,如何通過進程查端口日月????
1.20 請你說說ping命令????
1.21 進程有哪五種狀態(tài)缤骨,如何轉(zhuǎn)換爱咬??????
1.22 請你說說Linux的fork的作用?????
1.23 說說寫時復(fù)制?????
1.24 說說什么是守護進程,如何創(chuàng)建绊起?????
1.25 說說孤兒進程與僵尸進程精拟,如何解決僵尸進程?????
1.26 說說進程通信的方式有哪些??????
1.27 說說進程同步的方式虱歪??????
1.28 進程通信中的管道實現(xiàn)原理是什么蜂绎??????
1.29 說說什么是信號量,有什么作用实蔽??????
1.30 多進程內(nèi)存共享可能存在什么問題荡碾?如何處理??????
1.31 一個線程占多大內(nèi)存局装????
1.32 32位系統(tǒng)能訪問4GB以上的內(nèi)存嗎????
1.33 說說進程、線程铐尚、協(xié)程是什么拨脉,區(qū)別是什么??????
1.34 互斥量能不能在進程中使用宣增??????
1.35 協(xié)程是輕量級線程玫膀,輕量級表現(xiàn)在哪里??????
1.36 說說線程間通信的方式有哪些爹脾??????
1.37 說說線程同步方式有哪些帖旨??????
1.38 有了進程,為什么還要有線程灵妨??????
1.39 單核機器上寫多線程程序解阅,是否要考慮加鎖,為什么泌霍??????
1.40 說說多線程和多進程的不同货抄??????
1.41 簡述互斥鎖的機制,互斥鎖與讀寫的區(qū)別朱转??????
1.42 說說線程池的設(shè)計思路蟹地,線程池中線程的數(shù)量由什么確定????
1.43 進程和線程相比藤为,為什么慢怪与??????
1.44 簡述GDB常見的調(diào)試命令,什么是條件斷點缅疟,多進程下如何調(diào)試琼梆。????
1.45 說說進程調(diào)度算法有哪些??????
1.46 簡述LRU算法及其實現(xiàn)方式窿吩。?????
1.47 什么是頁表茎杂,為什么要有??????
1.48 簡述操作系統(tǒng)中的缺頁中斷纫雁。?????
1.49 簡述一下虛擬內(nèi)存和物理內(nèi)存煌往,為什么要用虛擬內(nèi)存,好處是什么轧邪??????
1.50 虛擬地址到物理地址怎么映射的刽脖??????
1.51 說說什么是死鎖,產(chǎn)生的條件忌愚,如何解決曲管??????
1.52 簡述互斥鎖的機制,互斥鎖與讀寫的區(qū)別硕糊??????
1.53 簡述自旋鎖和互斥鎖的使用場景?????
1.54 說說sleep和wait的區(qū)別院水????
1.55 簡述epoll和select的區(qū)別腊徙,epoll為什么高效?????
1.56 說說多路IO復(fù)用技術(shù)有哪些檬某,區(qū)別是什么撬腾??????
1.57 epoll水平觸發(fā)與邊緣觸發(fā)的區(qū)別??????
1.58 簡述同步與異步的區(qū)別恢恼,阻塞與非阻塞的區(qū)別民傻??????
1.59 BIO、NIO有什么區(qū)別场斑??????
1.60 請介紹一下5種IO模型?????
1.61 公平鎖與非公平鎖?????
1.62 死鎖與活鎖?????
蔣豆芽的秋招打怪之旅——說說計算機網(wǎng)絡(luò)的那些事
1.1 說說計算機網(wǎng)絡(luò)有哪兩種通信方式漓踢????
1.2 什么是分組交換?優(yōu)缺點漏隐????
1.3 子網(wǎng)掩碼的作用???
1.4 請說說OSI七層協(xié)議模型喧半?????
1.5 請說說TCP/IP四層分層模型?????
1.6 請說說TCP/IP四層分層模型锁保,每個分層說兩個協(xié)議薯酝。?????
1.7 TCP與UDP的區(qū)別??????
1.8 TCP頭部包含哪些內(nèi)容爽柒??????
1.9 TCP為什么要三次握手吴菠,能兩次嗎??????
1.10 TCP為什么要四次揮手浩村,能三次嗎做葵??????
1.11 說說TCP三次握手的過程。?????
1.12 說說TCP四次揮手的過程心墅。?????
1.13 為什么第四次揮手后酿矢,客戶端需要等待2MSL? ?????
1.14 什么是洪泛攻擊怎燥?怎么避免瘫筐??????
1.15 如何應(yīng)對短連接、高并發(fā)的場景铐姚??????
1.16 說說TCP的可靠機制策肝。?????
1.17 請說說TCP的ACK機制,有什么好處隐绵?????
1.18 如何讓UDP也變得可靠之众??????
1.19 什么是負載均衡??????
1.20 Session和cookie的區(qū)別依许??????
1.21 網(wǎng)絡(luò)調(diào)試的工具棺禾??????
1.22 請說說socket網(wǎng)絡(luò)編程的步驟。????
1.23 請說說socket網(wǎng)絡(luò)編程的接口峭跳。????
1.24 什么是TCP粘包現(xiàn)象膘婶??????
1.25 為什么會出現(xiàn)粘包現(xiàn)象缺前?如何解決??????
1.26 簡述一下Nagle算法?????
1.27 為什么UDP不粘包?????
1.28 什么是封包和解包竣付??????
1.29 請說說HTTP的工作原理诡延。?????
1.30 在瀏覽器地址欄鍵入URL滞欠,按下回車之后會經(jīng)歷哪些流程古胆??????
1.31 請你說說HTTP請求包含哪些內(nèi)容??????
1.32 請說說有哪些請求方法筛璧??????
1.33 get和post的區(qū)別是什么逸绎??????
1.34 請你說說HTTP狀態(tài)碼?????
1.35 請說說HTTP響應(yīng)頭有哪些內(nèi)容??????
1.36 請說說HTTP協(xié)議的特點?????
1.37 HTTP的無連接是什么意思夭谤?????
1.38 HTTP的無狀態(tài)是什么意思棺牧?????
1.39 HTTP1.0、HTTP1.1的區(qū)別????
1.40 什么是長連接朗儒??????
1.41 HTTP2.0有哪些改動颊乘????
1.42 HTTPS的加密原理?????
1.43 什么是對稱加密?什么是非對稱加密醉锄?兩者區(qū)別乏悄??????
1.44 對稱加密有哪些?非對稱加密有哪些恳不?????
1.45 數(shù)字證書用來干嘛的檩小??????
1.46 HTTPS為什么比HTTP更安全?????
1.47 HTTPS和HTTP的區(qū)別?????
1.48 HTTPS的通信建立過程?????
蔣豆芽的秋招打怪之旅——嵌入式基礎(chǔ)知識(僅適合嵌入式求職的同學(xué))
1.1 請說說你對嵌入式的理解。???
1.2 精簡指令集和復(fù)雜指令集的區(qū)別???
1.3 請說說CPU的內(nèi)部架構(gòu)和工作原理?????
1.4 請說說CPU的內(nèi)核態(tài)與用戶態(tài)?????
1.5 請說說CPU的流水線工作原理?????
1.6 嵌入式流水線工作有什么不同烟勋??????
1.7 什么是超流水線规求,為什么??????
1.8 什么是亂序執(zhí)行卵惦??????
1.9 請說說CPU的兩種體系結(jié)構(gòu)阻肿,有什么區(qū)別?????
1.10 說說ROM和RAM的區(qū)別?????
1.11 說說你了解有哪些存儲器類型?????
1.12 說說你了解有哪些嵌入式操作系統(tǒng),各自有什么特點沮尿??????
1.13 什么是DMA?????
1.14 FreeRTOS丛塌、uCOS的區(qū)別?????
1.15 說說Linux proc下面有什么文件???
1.16 請說說ARM微處理器的特點。?????
1.17 請說說你了解哪些ARM系列,都應(yīng)用在什么地方缺脉????
1.18 SecurCore系列和Cortex系列各自有什么優(yōu)勢谷异????
1.19 ARM處理器模式有哪幾種?簡要介紹一下乍楚。???
1.20 說說ARM處理器幾種模式切換的過程?????
1.21 特權(quán)模式有哪些?異常模式有哪些届慈??????
1.22 中斷和異常的區(qū)別是什么徒溪??????
1.23 請你說說大端模式和小端模式?????
1.24 ARM是大端模式還是小端模式忿偷?51單片機呢??????
1.25 什么是MMU臊泌?工作原理是什么鲤桥??????
1.26 說說TLB?????
1.27 說說DSP?????
1.28 說說DSP和ARM有什么區(qū)別??????
1.29 說說STM32???
1.30 說說51單片機???
1.31 說一說BootLoader的啟動流程?????
1.32 BootLoader的啟動有哪兩個階段渠概??????
1.33 說一說你熟悉的BootLoader???
1.34 說一說BootLoader的兩種模式???
1.35 說一說什么是驅(qū)動程序?????
1.36 說一說設(shè)備的種類茶凳,各自有什么特點。?????
1.37 什么是交叉編譯?為何要有交叉編譯?????
1.38 說一說I2C的時序圖播揪,如何傳輸數(shù)據(jù)?????
1.39 說一說SPI總線?????
1.40 說一說CAN總線的仲裁機制?????
1.41 說一說CAN總線的優(yōu)點?????
1.42 說一說UART和USART的區(qū)別?????
1.43 說一說RS232和RS485的區(qū)別?????
1.44 說一說串行和并行的區(qū)別?????
1.45 說一說同步和異步的區(qū)別?????
蔣豆芽的秋招打怪之旅——算法與數(shù)據(jù)結(jié)構(gòu)
1.1 實現(xiàn)一個vector?????
1.2 分析一下push_back() 的時間復(fù)雜度?????
1.3 總結(jié)一下數(shù)組與鏈表的區(qū)別?????
1.4 棧和隊列的區(qū)別?????
1.5 說說二叉堆?????
1.6 說說哈希表?????
1.7 說說堆排序的時間復(fù)雜度贮喧,建堆的時間復(fù)雜度?????
1.8 哈希表如何解決哈希沖突?????
1.9 哈希表的初始數(shù)組容量一般為多少,為什么猪狈??????
1.10 哈希表的負載因子為什么是0.75箱沦??????
1.11 說說紅黑樹?????
1.12 說說什么是穩(wěn)定的排序??????
1.13 說說動態(tài)規(guī)劃算法?????
1.14 手撕歸并排序?????
1.15 手撕快速排序?????
1.16 手撕插入排序?????
1.17 手撕堆排序?????
1.18 手撕二分查找?????
1.19 快排最差時間復(fù)雜度雇庙,堆排最差時間復(fù)雜度谓形??????
1.20 說說各排序算法的時間復(fù)雜度??????
蔣豆芽的秋招打怪之旅——數(shù)據(jù)庫(僅適合C++軟件開發(fā)求職的同學(xué))
1.1 數(shù)據(jù)庫事務(wù)以及四個特性?????
1.2 數(shù)據(jù)庫三大范式?????
1.3 事務(wù)的隔離級別?????
1.4 什么是數(shù)據(jù)庫索引?????
1.5 索引類型與索引模型?????
1.6 什么情況下數(shù)據(jù)庫索引會失效?????
1.7 引起慢查詢的常見原因及一些解決方案?????
1.8 聚簇索引與非聚簇索引?????
1.9 數(shù)據(jù)庫主鍵和外鍵?????
1.10 mysql知道哪些存儲引擎疆前,它們的區(qū)別?????
1.11 關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的區(qū)別?????
1.12 數(shù)據(jù)庫垂直與水平拆分怎么做?????
1.13 什么是內(nèi)聯(lián)接寒跳、左聯(lián)接、右聯(lián)接?????
1.14 樂觀鎖與悲觀鎖?????
1.15 MVCC原理?????
1.16 B樹與B+樹的區(qū)別?????
1.17 mysql的四種日志???
1.18 mysql主從復(fù)制?????
1.19 怎么優(yōu)化查詢?????
1.20 mysql如何建立和刪除索引?????
1.21 group by和where?????
1.22 數(shù)據(jù)庫笛卡爾乘積?????
1.23 什么是Redis?????
1.24 Redis怎么實現(xiàn)高效緩存?????
1.25 Redis持久化有哪幾種方式峡继,怎么選?????
1.26 Redis對于過期鍵的清除策略?????
1.27 Redis單線程為什么快?????
1.28 Redis如何實現(xiàn)高可用?????
1.29 Redis緩存穿透冯袍、緩存擊穿、緩存雪崩?????
1.30 Redis漸進式rehash?????
1.31 Redis相比memcached有哪些優(yōu)勢?????