嵌入式面經(jīng)_嵌入式面試題_嵌入式軟件開發(fā)面經(jīng)C++面經(jīng)111道面試題答案解析
本人2020年本碩畢業(yè)于廣東工業(yè)大學(xué):嵌入式許喬丹,牛客高級專欄作者,??痛髮W(xué)講師,在2020屆秋招共拿到珠海格力,云從科技,CVTE,小米,美的,華為的嵌入式offer,簽約CVTE嵌入式崗位,整理??蜕洗罅看髲S嵌入式面經(jīng),并逐一查閱文獻(xiàn),誕生出本面經(jīng)筆記(目錄往下看),C/C++軟件開發(fā)也可以參考。
鏈接:https://blog.nowcoder.net/zhuanlan/3m2ONj
第一章 進(jìn)程線程
1.1 進(jìn)程線程的基本概念
1.1.1 什么是進(jìn)程,線程,彼此有什么區(qū)別?????
1.1.2多進(jìn)程、多線程的優(yōu)缺點(diǎn)????
1.1.3什么時(shí)候用進(jìn)程,什么時(shí)候用線程???
1.1.4多進(jìn)程、多線程同步(通訊)的方法?????
1.1.5進(jìn)程的空間模型????
1.1.6進(jìn)程線程的狀態(tài)轉(zhuǎn)換圖 什么時(shí)候阻塞,什么時(shí)候就緒???
1.1.7父進(jìn)程、子進(jìn)程的關(guān)系以及區(qū)別????
1.1.8什么是進(jìn)程上下文、中斷上下文??
1.1.9一個(gè)進(jìn)程可以創(chuàng)建多少線程,和什么有關(guān)??
1.2 并發(fā),同步,異步,互斥,阻塞,非阻塞的理解
1.2.1什么是線程同步和互斥?????
1.2.2線程同步與阻塞的關(guān)系?同步一定阻塞嗎?阻塞一定同步嗎?????
1.2.3并發(fā),同步,異步,互斥,阻塞,非阻塞的理解?????
1.3 孤兒進(jìn)程、僵尸進(jìn)程、守護(hù)進(jìn)程的概念
1.3.1基本概念?????
1.3.2如何創(chuàng)建守護(hù)進(jìn)程:??
1.3.3正確處理僵尸進(jìn)程的方法????
第二章 C/C++高頻面試題
2.1 c和c++區(qū)別、概念相關(guān)面試題
2.1.1 new和malloc的區(qū)別?????
2.1.2 malloc的底層實(shí)現(xiàn)????
2.1.3在1G內(nèi)存的計(jì)算機(jī)中能否malloc(1.2G)?為什么???
2.1.4指針與引用的相同和區(qū)別;如何相互轉(zhuǎn)換??????
2.1.5 C語言檢索內(nèi)存情況 內(nèi)存分配的方式???
2.1.6 extern”C” 的作用???
2.1.7頭文件聲明時(shí)加extern定義時(shí)不要加 因?yàn)閑xtern可以多次聲明,但只有一個(gè)定義????
2.1.8函數(shù)參數(shù)壓棧順序,即關(guān)于__stdcall和__cdecl調(diào)用方式的理解???
2.1.9重寫memcpy()函數(shù)需要注意哪些問題??
2.1.10數(shù)組到底存放在哪里???
2.1.11 struct和class的區(qū)別 ?????
2.1.12 char和int之間的轉(zhuǎn)換;???
2.1.13 static的用法(定義和用途)?????
2.1.14 static的用法(定義和用途)?????
2.1.15const常量和#define的區(qū)別(編譯階段、安全性、內(nèi)存占用等) ????
2.1.16 volatile作用和用法 ?????
2.1.17有常量指針 指針常量 常量引用 沒有 引用常量???
2.1.18沒有指向引用的指針,因?yàn)橐檬菦]有地址的,但是有指針的引用???
2.1.19c/c++中變量的作用域?????
2.1.20 c++中類型轉(zhuǎn)換機(jī)制?各適用什么環(huán)境?dynamic_cast轉(zhuǎn)換失敗時(shí),會出現(xiàn)什么情況????
2.2 繼承、多態(tài)相關(guān)面試題 ?????
2.2.1繼承和虛繼承 ?????
2.2.2多態(tài)的類,內(nèi)存布局是怎么樣的 ?????
2.2.3被隱藏的基類函數(shù)如何調(diào)用或者子類調(diào)用父類的同名函數(shù)和父類成員變量 ?????
2.2.4多態(tài)實(shí)現(xiàn)的三個(gè)條件、實(shí)現(xiàn)的原理 ?????
2.2.5對拷貝構(gòu)造函數(shù) 深淺拷貝 的理解 拷貝構(gòu)造函數(shù)作用及用途?什么時(shí)候需要自定義拷貝構(gòu)造函數(shù)????
2.2.6析構(gòu)函數(shù)可以拋出異常嗎?為什么不能拋出異常?除了資源泄露,還有其他需考慮的因素嗎????
2.2.7什么情況下會調(diào)用拷貝構(gòu)造函數(shù)(三種情況)???
2.2.8析構(gòu)函數(shù)一般寫成虛函數(shù)的原因?????
2.2.9構(gòu)造函數(shù)為什么一般不定義為虛函數(shù)?????
2.2.10什么是純虛函數(shù)?????
2.2.11靜態(tài)綁定和動態(tài)綁定的介紹????
2.2.12 C++所有的構(gòu)造函數(shù) ???
2.2.13重寫、重載、覆蓋的區(qū)別?????
2.2.14成員初始化列表的概念,為什么用成員初始化列表會快一些(性能優(yōu)勢)?????
2.2.15如何避免編譯器進(jìn)行的隱式類型轉(zhuǎn)換;(explicit)????
第三章 網(wǎng)絡(luò)編程
3.1 TCP UDP
3.1.1 TCP、UDP的區(qū)別 ?????
3.1.2 TCP、UDP的優(yōu)缺點(diǎn)???
3.1.3 TCP UDP適用場景???
3.1.4 TCP為什么是可靠連接????
3.1.5典型網(wǎng)絡(luò)模型,簡單說說有哪些;???
3.1.6 Http1.1和Http1.0的區(qū)別???
3.1.7 URI(統(tǒng)一資源標(biāo)識符)和URL(統(tǒng)一資源定位符)之間的區(qū)別??
3.2 三次握手、四次揮手
3.2.1什么是三次握手?????
3.2.2為什么三次握手中客戶端還要發(fā)送一次確認(rèn)呢?可以二次握手嗎?????
3.2.3為什么服務(wù)端易受到SYN攻擊?????
3.2.4什么是四次揮手?????
3.2.5為什么客戶端最后還要等待2MSL?????
3.2.6為什么建立連接是三次握手,關(guān)閉連接確是四次揮手呢?????
第四章 常見算法
4.1 排序算法
4.1.1各種排序算法的時(shí)間空間復(fù)雜度、穩(wěn)定性?????
4.1.2各種排序算法什么時(shí)候有最好情況、最壞情況(尤其是快排) ????
4.1.3冒泡排序????
4.1.4選擇排序????
4.1.5插入排序????
4.1.6希爾排序????
4.1.7歸并排序????
4.1.8快速排序?????
4.1.9快排的partition函數(shù)與歸并的Merge函數(shù)???
4.2 STL庫相關(guān)
4.2.1 vector list異同?????
4.2.2 vector內(nèi)存是怎么增長的vector的底層實(shí)現(xiàn)????
4.2.3 vector和deque的比較????
4.2.4為什么stl里面有sort函數(shù)list里面還要再定義一個(gè)sort???
4.2.5 STL底層數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)????
4.2.6利用迭代器刪除元素會發(fā)生什么?????
4.2.7 map是如何實(shí)現(xiàn)的,查找效率是多少?????
4.2.8幾種模板插入的時(shí)間復(fù)雜度 ?????
第五章 Linux操作系統(tǒng)常見面試題
5.1 Linux內(nèi)核相關(guān)
5.1.1 Linux內(nèi)核的組成??
5.1.2用戶空間與內(nèi)核通信方式有哪些??????
5.1.3系統(tǒng)調(diào)用read()/write(),內(nèi)核具體做了哪些事情??
5.1.4系統(tǒng)調(diào)用的作用?????
5.1.5內(nèi)核態(tài),用戶態(tài)的區(qū)別?????
5.1.6 bootloader內(nèi)核 根文件的關(guān)系????
5.1.7 Bootloader多數(shù)有兩個(gè)階段的啟動過程:???
5.1.8 linux的內(nèi)核是由bootloader裝載到內(nèi)存中的????
5.1.9為什么需要BootLoader????
5.1.10 Linux內(nèi)核同步方式總結(jié)????
5.1.11為什么自旋鎖不能睡眠 而在擁有信號量時(shí)就可以?????
5.1.12 linux下檢查內(nèi)存狀態(tài)的命令???
5.2 其他操作系統(tǒng)常見面試題
5.2.1大小端的區(qū)別以及各自的優(yōu)點(diǎn),哪種時(shí)候用?????
5.2.2 一個(gè)程序從開始運(yùn)行到結(jié)束的完整過程(四個(gè)過程)?????
5.2.3什么是堆,棧,內(nèi)存泄漏和內(nèi)存溢出?????
5.2.4堆和棧的區(qū)別?????
5.2.5死鎖的原因、條件 創(chuàng)建一個(gè)死鎖,以及如何預(yù)防?????
5.2.6硬鏈接與軟鏈接的區(qū)別;?????
5.2.7虛擬內(nèi)存,虛擬地址與物理地址的轉(zhuǎn)換????
5.2.8計(jì)算機(jī)中,32bit與64bit有什么區(qū)別???
5.2.9中斷和異常的區(qū)別?????
5.2.10中斷怎么發(fā)生,中斷處理大概流程????
5.2.11 Linux 操作系統(tǒng)掛起、休眠、關(guān)機(jī)相關(guān)命令??
5.2.12數(shù)據(jù)庫為什么要建立索引,以及索引的缺點(diǎn)??
第六章 單片機(jī)常見面試題
6.1 CPU 內(nèi)存 虛擬內(nèi)存 磁盤/硬盤 的關(guān)系???
6.2 CPU內(nèi)部結(jié)構(gòu)????
6.3 ARM結(jié)構(gòu)處理器簡析 ??
6.4波特率是什么,為什么雙方波特率要相同,高低波特率有什么區(qū)別;????
6.5arm和dsp有什么區(qū)別??
6.6 ROM RAM的概念淺析???
6.7 IO口工作方式:上拉輸入 下拉輸入 推挽輸出 開漏輸出????
6.8扇區(qū) 塊 頁 簇的概念????
6.9簡述處理器在讀內(nèi)存的過程中,CPU核、cache、MMU如何協(xié)同工作?畫出CPU核、cache、MMU、內(nèi)存之間的關(guān)系示意圖加以說明??
6.10請說明總線接口USRT、I2C、USB的異同點(diǎn)(串/并、速度、全/半雙工、總線拓?fù)涞龋?????
6.11什么是異步串口和同步串口?????
6.12 I2C時(shí)序圖?????