嵌入式軟件類筆試面試小結(jié)概要_第1頁(yè)
嵌入式軟件類筆試面試小結(jié)概要_第2頁(yè)
嵌入式軟件類筆試面試小結(jié)概要_第3頁(yè)
嵌入式軟件類筆試面試小結(jié)概要_第4頁(yè)
嵌入式軟件類筆試面試小結(jié)概要_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、最近忙于找工作,筆試面試了一些公司,本人主要找工作的方向是:嵌入式軟件工程師。所以,針對(duì)嵌入式軟件開(kāi)發(fā)崗位的多次筆試與面試經(jīng)歷總結(jié)了一些??疾榈闹R(shí)點(diǎn),希望有利于學(xué)弟、學(xué)妹們找工作。C語(yǔ)言首先,對(duì)C的考查是必須的。既然打算從事嵌入式軟件開(kāi)發(fā)崗位,C語(yǔ)言是基礎(chǔ),關(guān)于C主要需要把C語(yǔ)言三劍客即C陷阱與缺陷C和指針C專家編程,還有C語(yǔ)言深度剖析。其中C和指針、C語(yǔ)言深度剖析這兩本書至少看2,3遍,從此對(duì)于C語(yǔ)言的基礎(chǔ)考查,就很難難倒你了,沒(méi)有捷徑這幾本書必須看的。1關(guān)鍵字考查volatile:防止編譯器優(yōu)化這個(gè)關(guān)鍵字是為了告訴你請(qǐng)不要做沒(méi)譜的優(yōu)化,這個(gè)值可能變掉。(筆試中考查過(guò))volatile使用

2、的幾個(gè)例子j并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)k一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量l多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量一個(gè)指針可以是volatile嗎可以,因?yàn)橹羔樅推胀ㄗ兞恳粯?,有時(shí)也有變化程序的不可控性。常見(jiàn)例:子中斷服務(wù)子程序修改一個(gè)指向一個(gè)buffer的指針時(shí),必須用volatile來(lái)修飾這個(gè)指針。說(shuō)明:指針是一種普通的變量,從訪問(wèn)上沒(méi)有什么不同于其他變量的特性。其保存的數(shù)組是個(gè)整形數(shù)據(jù),和整形變量不同的是,這個(gè)整形數(shù)據(jù)指向的是一段內(nèi)存地址。const:修飾的只讀變量(筆試中考查過(guò))const:這個(gè)關(guān)鍵字是告訴你:請(qǐng)作為常量使用,而并非放心吧,那肯定是常量const int *

3、p; /p可變,p指向的對(duì)象不可變int const *p; / p可變,p指向的對(duì)象不可變int * const p; /p不可變,p指向的對(duì)象可變const int * const p;/指針p和p指向的對(duì)象都不可變記憶方法說(shuō)明:先忽略類型名(編譯器解析的時(shí)候也是忽略類型名),我們看const離哪個(gè)近,“近水樓臺(tái)先得月”,離誰(shuí)近就修飾誰(shuí)。const int *p; /const修飾*p,p是指針,*p是指針指向的對(duì)象,不可變int const *p; / const修飾*p,p是指針,*p是指針指向的對(duì)象,不可變int * const p; /const修飾p,p不可變,p指向的對(duì)象可變c

4、onst int * const p;/前一個(gè)const修飾*p,后一個(gè)const修飾p,指針p和p指向的對(duì)象/都可不變int const a = 12;const修飾的a值是不是一定無(wú)法改變呢?非也,int *p = &a; *p = 5; 通過(guò)這兩步,即可改變a的值,此時(shí)a值為5.typedef與define(筆試中考查過(guò))把typedef看成是一種徹底的“封裝”類型-在聲明它之后不能再往里面增加別的東西??梢杂闷渌愋驼f(shuō)明符對(duì)宏類型名進(jìn)行擴(kuò)展,但對(duì)typedef所定義的類型名卻不能這樣做。    #define peach int    u

5、nsigned peach i;/*沒(méi)問(wèn)題*/    typedef int banana;    unsigned banana i;/*錯(cuò)誤!非法*/面試題:typedef和define有什么區(qū)別:j用法不同:typedef用來(lái)定義一種數(shù)據(jù)類型的別名,增強(qiáng)程序的可讀性。define主要用來(lái)定義常量,以及書寫復(fù)雜使用頻率的宏。k執(zhí)行時(shí)間不同:typedef是編譯過(guò)程的一部分,有類型檢查的功能。define是宏定義,是預(yù)編譯的部分,其發(fā)生在編譯之前,只是簡(jiǎn)單的進(jìn)行字符串的替換,不進(jìn)行類型的檢查。l作用域不同:typedef有作用域限制。define不受作

6、用域約束,只要是在define聲明后面的引用都是正確的。m對(duì)指針的操作不同:typedef和define定義的指針時(shí)有很大的區(qū)別。注意:typedef定義是語(yǔ)句,因此句尾要加上分號(hào)。而define不是語(yǔ)句,千萬(wàn)不能在句尾加分號(hào)。說(shuō)明:j#define PINT int * PINT a,b; / 定義結(jié)果是a的類型是int *, b的類型是int ktypedef int * PINT; PINT a,b; /a,b都為int * 類型static:是常考查的關(guān)鍵字,筆試面試中考查次數(shù)相當(dāng)多(筆試面試都有考查過(guò))static修飾的局部變量存儲(chǔ)于靜態(tài)區(qū),存儲(chǔ)于靜態(tài)區(qū)的變量有默認(rèn)初始值為0,這種變

7、量在程序執(zhí)行之前創(chuàng)建,并在程序的整個(gè)執(zhí)行期間一直存在,而不是每次在代碼塊開(kāi)始執(zhí)行時(shí)創(chuàng)建,在代碼塊執(zhí)行完畢后銷毀。普通變量存儲(chǔ)于棧中,沒(méi)有默認(rèn)初始值。變量的鏈接屬性和作用域不受影響,與普通局部變量一樣。static修飾函數(shù),使得函數(shù)成為靜態(tài)函數(shù)。指函數(shù)的作用域僅局限于本文件(所以又稱內(nèi)部函數(shù))。sizeof 和 strlen 的區(qū)別(他們的使用也是考查的重點(diǎn))sizeof 和 strlen 有以下區(qū)別:sizeof 是一個(gè)操作符,strlen 是庫(kù)函數(shù)。sizeof 的參數(shù)可以是數(shù)據(jù)的類型,也可以是變量,而 strlen 只能以結(jié)尾為 0的字符串作參數(shù)。編譯器在編譯時(shí)就計(jì)算出了 sizeof 的

8、結(jié)果。而 strlen 函數(shù)必須在運(yùn)行時(shí)才能計(jì)算出來(lái)。并且 sizeof計(jì)算的是數(shù)據(jù)類型占內(nèi)存的大小,而 strlen 計(jì)算的是字符串實(shí)際的長(zhǎng)度。數(shù)組做 sizeof 的參數(shù)不退化,傳遞給 strlen 就退化為指針了。sizeof(a = b+1)-并沒(méi)有向a賦值,返回a的長(zhǎng)度大小,并非b的union共用體(筆試考查過(guò))union 維護(hù)足夠的空間來(lái)置放多個(gè)數(shù)據(jù)成員中的“一種”,而不是為每一個(gè)數(shù)據(jù)成員配置空間,在union 中所有的數(shù)據(jù)成員共用一個(gè)空間,同一時(shí)間只能儲(chǔ)存其中一個(gè)數(shù)據(jù)成員,所有的數(shù)據(jù)成員具有相同的起始地址。對(duì)這個(gè)關(guān)鍵字的考查,經(jīng)常會(huì)考到判斷大小端。變量i 占4 個(gè)字節(jié),但只有一個(gè)

9、字節(jié)的值為1,另外三個(gè)字節(jié)的值都為0。如果取出低地址上的值為0,毫無(wú)疑問(wèn),這是大端模式;如果取出低地址上的值為1,毫無(wú)疑問(wèn),這是小端模式。既然如此,我們完全可以利用union 類型數(shù)據(jù)的特點(diǎn):所有成員的起始地址一致。(這個(gè)函數(shù)筆試考查過(guò),需要記?。﹊nt checkSystem() union check int i; char ch; c; c.i = 1; return(c.ch = 1);auto,好多人都沒(méi)有見(jiàn)過(guò)這個(gè)關(guān)鍵字,但是有些選擇題目中可能會(huì)有涉及。auto:在缺省情況下,編譯器默認(rèn)所有變量都是auto的。(筆試選擇題中出現(xiàn)過(guò),要知道它是C語(yǔ)言的關(guān)鍵字)還有其他關(guān)鍵字就不一一列舉

10、了,書中都有詳細(xì)介紹,我把??嫉降暮?jiǎn)單說(shuō)一些。2、關(guān)于C的其他常考查知識(shí)點(diǎn)設(shè)置地址為 0x67a9 的整型變量的值為 0xaa66(筆試中考查過(guò))int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa66;說(shuō)明:這道題就是強(qiáng)制類型轉(zhuǎn)換的典型例子,無(wú)論在什么平臺(tái)地址長(zhǎng)度和整型數(shù)據(jù)的長(zhǎng)度是一樣的,即一個(gè)整型數(shù)據(jù)可以強(qiáng)制轉(zhuǎn)換成地址指針類型,只要有意義即可。方法二: int *(int *)0x67a9 = 0xaa66;不使用庫(kù)函數(shù)寫出strcpy strcat strcmp strlen strstr memset memcpy 這些函數(shù)的實(shí)現(xiàn)?;蛘咧苯涌疾椋蛘唛g接考查

11、。首先要明白這幾個(gè)函數(shù)如何使用,然后需要自己寫出實(shí)現(xiàn)方式。我遇到過(guò)編寫函數(shù)實(shí)現(xiàn) strcpy 、strlen 的直接考查。對(duì)strstr的使用以及函數(shù)實(shí)現(xiàn)的編寫。strcpy 、strcmp、strlen編寫程序多次使用到。memset memcpy選擇填空中遇到過(guò)。(筆試中考查過(guò))鏈表和數(shù)組有什么區(qū)別(面試中考查過(guò))數(shù)組和鏈表有以下幾點(diǎn)不同:(1)存儲(chǔ)形式:數(shù)組是一塊連續(xù)的空間,聲明時(shí)就要確定長(zhǎng)度。鏈表是一塊可不連續(xù)的動(dòng)態(tài)空間,長(zhǎng)度可變,每個(gè)結(jié)點(diǎn)要保存相鄰結(jié)點(diǎn)指針。(2)數(shù)據(jù)查找:數(shù)組的線性查找速度快,查找操作直接使用偏移地址。鏈表需要按順序檢索結(jié)點(diǎn),效率低。(3)數(shù)據(jù)插入或刪除:鏈表可以快

12、速插入和刪除結(jié)點(diǎn),而數(shù)組則可能需要大量數(shù)據(jù)移動(dòng)。(4)越界問(wèn)題:鏈表不存在越界問(wèn)題,數(shù)組有越界問(wèn)題。說(shuō)明:在選擇數(shù)組或鏈表數(shù)據(jù)結(jié)構(gòu)時(shí),一定要根據(jù)實(shí)際需要進(jìn)行選擇。數(shù)組便于查詢,鏈表便于插入刪除。數(shù)組節(jié)省空間但是長(zhǎng)度固定,鏈表雖然變長(zhǎng)但是占了更多的存儲(chǔ)空間。關(guān)于布爾值(筆試中考查過(guò),要知道C中無(wú)布爾值)布爾值只有0和1C并不具備顯試的布爾類型,所以使用整數(shù)來(lái)代替。其規(guī)則是:零的假,任何非零值皆為真。短路求值&& |(在線筆試中有涉及)&&操作符的左操作數(shù)總是首先進(jìn)行求值,如果它的值為真,然后就緊接著對(duì)右操作數(shù)求值。如果操作數(shù)的值為假,那么右操作數(shù)便不再進(jìn)行求值,因

13、為整個(gè)表達(dá)式的值肯定是假的。 |操作數(shù)也是同理。當(dāng)左操作數(shù)的值為真,右操作數(shù)便不再求值。a0與a(這個(gè)是必須弄清楚的,多次考查過(guò))int a5;a0是一個(gè)元素,a是整個(gè)數(shù)組。sizeof(a) = 20; sizeof(&a0) = 4;/取元素a0的首地址sizeof(&a) = 4; /取數(shù)組a的首地址,在VC+6.0為20,Bug數(shù)組名的類型是“指向int的常量指針”a是數(shù)組首元素的首地址,也就是a0的首地址&a0表示數(shù)組首元素的地址;&a表示數(shù)組的首地址看法:在表示地址時(shí):a與&a0含義用法是一致的a作為右值時(shí)其意義與&a0是一樣,代表的

14、是數(shù)組首元素的首地址,而不是數(shù)組的首地址(用在表達(dá)式sizeof(a)中時(shí),a表示的數(shù)組名,此時(shí)a并沒(méi)有被用作右值)。但是注意,這僅僅是代表,并沒(méi)有一個(gè)地方(這只是簡(jiǎn)單的這么認(rèn)為,其具體實(shí)現(xiàn)細(xì)節(jié)不作過(guò)多討論)來(lái)存儲(chǔ)這個(gè)地址,也就是說(shuō)編譯器并沒(méi)有為數(shù)組a分配一塊內(nèi)存來(lái)存其地址,這一點(diǎn)就與指針有很大的差別。a不能作為左值!main() int a5=1,2,3,4,5; int *ptr=(int *)(&a+1); printf("%dn%dn",*(a+1),*(ptr-1);/此處把a(bǔ)換成&a0也是可以的&a + 1-取數(shù)組a 的首地址,該地址的值

15、加上sizeof(a) 的值,即&a + 5*sizeof(int),也就是下一個(gè)數(shù)組的首地址,顯然當(dāng)前指針已經(jīng)越過(guò)了數(shù)組的界限。(int *)(&a+1)-則是把上一步計(jì)算出來(lái)的地址,強(qiáng)制轉(zhuǎn)換為int * 類型,賦值給ptr。*(a+1)- a,&a的值是一樣的,但意思不一樣,a是數(shù)組首元素的首地址,也就是a0的首地址,&a是數(shù)組的首地址,a+1是數(shù)組下一元素的首地址,即a1的首地址,&a+1是下一個(gè)數(shù)組的首地址。所以輸出2*(ptr-1)-因?yàn)閜tr是指向a5,并且ptr是int * 類型,所以*(ptr-1)是指向a4,輸出5。大端存儲(chǔ)與小端存儲(chǔ)(

16、筆試中考查過(guò))小端: 較高 的有效字節(jié)存放在較高 的的存儲(chǔ)器地址,較低 的有效字節(jié)存放在較低 的存儲(chǔ)器地址。 大端: 較高 的有效字節(jié)存放在較低 的存儲(chǔ)器地址,較低 的有效字節(jié)存放在較高 的存儲(chǔ)器地址。我們常用的X86結(jié)構(gòu)是小端模式,而KEIL-C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬件來(lái)選擇是大端模式還是小端模式。內(nèi)存對(duì)齊(??疾橹R(shí)點(diǎn))字,雙字,和四字在自然邊界上不需要在內(nèi)存中對(duì)齊。(對(duì)字,雙字,和四字來(lái)說(shuō),自然邊界分別是偶數(shù)地址,可以被4整除的地址,和可以被8整除的地址。)無(wú)論如何,為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧)應(yīng)該盡可能地在自然邊界上對(duì)

17、齊。原因在于,為了訪問(wèn)未對(duì)齊的內(nèi)存,處理器需要作兩次內(nèi)存訪問(wèn);然而,對(duì)齊的內(nèi)存訪問(wèn)僅需要一次訪問(wèn)。struct Test char c1; short s; char c2; int i;a;sizeof(a) = 12;(s兩個(gè)字節(jié)為一個(gè)字,會(huì)在偶數(shù)地址對(duì)齊)缺省情況下,編譯器默認(rèn)將結(jié)構(gòu)、棧中的成員數(shù)據(jù)進(jìn)行內(nèi)存對(duì)齊。因此,上面的程序輸出就變成了:c1 00000000, s 00000002, c2 00000004, i 00000008。編譯器將未對(duì)齊的成員向后移,將每一個(gè)都成員對(duì)齊到自然邊界上,從而也導(dǎo)致了整個(gè)結(jié)構(gòu)的尺寸變大。盡管會(huì)犧牲一點(diǎn)空間(成員之間有部分內(nèi)存空閑),但提高了性能。

18、-struct Test char c1; char c2; short s; int i;a1;sizeof(a1) = 8;c1 00000000, c2 00000001, s 00000002, i 00000004-struct Test char c1; double e;a;sizeof(a) = 16;(這兒以8字節(jié)對(duì)齊)struct Test char c1; short e; char c2;a;sizeof(a) = 6;(這兒以2個(gè)字節(jié)對(duì)齊)關(guān)于內(nèi)存對(duì)齊,有時(shí)候還會(huì)涉及到知識(shí)點(diǎn) 柔性數(shù)組 和 位域 ,需要簡(jiǎn)單了解一下。冒泡排序、遞歸的使用也是有所考查。C語(yǔ)言是重點(diǎn),還有

19、其他知識(shí)點(diǎn)未有涉及,還需仔細(xì)看書。數(shù)據(jù)結(jié)構(gòu)與算法數(shù)據(jù)結(jié)構(gòu)與算法常考到的有 單鏈表、雙鏈表、二叉樹(shù)。對(duì)于單鏈表的考查,會(huì)考查到單鏈表的創(chuàng)建、插入、刪除,單鏈表逆序,判斷單鏈表是否有環(huán)的兩種方法。(創(chuàng)建、插入、刪除、逆序筆試中我都遇到過(guò),判斷是否有環(huán),往年的筆試題目中看到過(guò))雙鏈表的插入。(我筆試中遇到過(guò),也有同學(xué)面試中考查過(guò),現(xiàn)場(chǎng)寫程序)二叉樹(shù)的遍歷方式(前序遍歷、中序遍歷、后序遍歷)。(面試中考查過(guò),現(xiàn)場(chǎng)寫程序)棧與隊(duì)列的區(qū)別,如何用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列。(同學(xué)筆試、面試中考查過(guò))哈希表(同學(xué)面試中考查過(guò))二分法查找(筆試中考查過(guò))快速排序、桶排序、堆排序、分治法排序、冒泡排序他們的時(shí)間復(fù)雜度、

20、穩(wěn)定性。(選擇、填空有考查過(guò))部分知識(shí)點(diǎn)詳細(xì)說(shuō)明:判斷單鏈表中是否有環(huán)用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能入隊(duì)時(shí),將元素壓入s1。出隊(duì)時(shí),判斷s2是否為空,如不為空,則直接彈出頂元素;如為空,則將s1的元素逐個(gè)“倒入”s2,把最后一個(gè)元素彈出并出隊(duì)。計(jì)算機(jī)網(wǎng)絡(luò)主要考查TCP與UDP,他們?nèi)绾芜M(jìn)行通訊,TCP的三次握手四次揮手如何實(shí)現(xiàn)。他們都用到了哪些函數(shù)。(筆試面試都考查過(guò))在window系統(tǒng)下,htonl(),htons(),ntohl(),ntohs()都表示什么功能。(筆試考查過(guò))詳細(xì)說(shuō)明:TCP用到的函數(shù):創(chuàng)建套接字 socket綁定地址bind設(shè)置監(jiān)聽(tīng)端口listen等待連接accept發(fā)送數(shù)

21、據(jù)send接收數(shù)據(jù)recv關(guān)閉連接close連接服務(wù)器connectTCP協(xié)議中的三次握手和四次揮手建立TCP需要三次握手才能建立,而斷開(kāi)連接則需要四次握手。首先Client端發(fā)送連接請(qǐng)求報(bào)文,Server端接受連接后回復(fù)ACK報(bào)文,并為這次連接分配資源。Client端接收到ACK報(bào)文后也向Server端發(fā)送ACK報(bào)文,并分配資源,這樣TCP連接就建立了。-假設(shè)客戶端發(fā)起中斷連接請(qǐng)求,也就是發(fā)送FIN報(bào)文。服務(wù)器端收到FIN報(bào)文后,意思是說(shuō):“我客戶端沒(méi)有數(shù)據(jù)要發(fā)送給你了”,但是如果你還有數(shù)據(jù)沒(méi)有發(fā)送完成,則不必急著關(guān)閉socket,可以繼續(xù)發(fā)送數(shù)據(jù)。所以你發(fā)送ACK,“告訴客戶端,你的請(qǐng)求我

22、收到了,但是我還沒(méi)準(zhǔn)備好,請(qǐng)繼續(xù)你等我的消息”。這個(gè)時(shí)候客戶端進(jìn)入了FIN_WAIT狀態(tài),繼續(xù)等待服務(wù)器端的FIN報(bào)文。當(dāng)客戶端確定數(shù)據(jù)已發(fā)送完成,則向客戶端發(fā)送FIN報(bào)文,“告訴客戶端,好了,我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接了”??蛻舳耸盏紽IN報(bào)文后,“就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò),怕客戶端不知道要關(guān)閉,所以,發(fā)送ACK后進(jìn)入TIME_WAIT狀態(tài),如果客戶端沒(méi)有收到ACK則可以重傳”,客戶端收到ACK后,“就知道可以斷開(kāi)連接了”。客戶端等待了2msl后依然沒(méi)有收到回復(fù),則證明服務(wù)器端已正常關(guān)閉,那好,我客戶端也可以關(guān)閉連接了。OK,TCP連接就這樣關(guān)閉了!為什么連接的時(shí)候是

23、三次握手,關(guān)閉的時(shí)候卻是四次握手?因?yàn)榉?wù)器端收到客戶端的SYN連接請(qǐng)求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文。其中ACK報(bào)文是用來(lái)應(yīng)答的,SYN報(bào)文是用來(lái)同步的。但是關(guān)閉連接時(shí),當(dāng)服務(wù)器端收到FIN報(bào)文時(shí),很可能并不會(huì)立即關(guān)閉socket,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴客戶端,“你發(fā)的FIN報(bào)文我收到了”。只有等到我服務(wù)器端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文,因此不能一起發(fā)送。在window系統(tǒng)下,htonl(),htons(),ntohl(),ntohs()操作系統(tǒng)linux進(jìn)程與線程的區(qū)別,多進(jìn)程設(shè)計(jì)、多線程設(shè)計(jì)用到了哪些函數(shù)。(筆試面試都考查過(guò),內(nèi)容較多,詳細(xì)知識(shí)點(diǎn)就不列舉

24、了)Linux下的GDB調(diào)試如何使用,核心轉(zhuǎn)存(Core Dump)主要解決哪類問(wèn)題?core dump 主要來(lái)對(duì)付segment fault(段錯(cuò)誤)。何為段錯(cuò)誤?包括四個(gè)原因產(chǎn)生的錯(cuò)誤:數(shù)組訪問(wèn)越界、訪問(wèn)空指針、棧溢出、修改只讀內(nèi)存。(筆試考查過(guò),面試2家公司都考查過(guò))Linux進(jìn)程間通訊的主要方式有:無(wú)名管道(pipe)、有名管道(FIFO)、信號(hào)(signal)、消息隊(duì)列、共享內(nèi)存、信號(hào)量、套接字(socket)。(筆試多次考查,面試也考過(guò))OSI標(biāo)準(zhǔn)的七層(應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層)。(筆試、面試都有考查過(guò),必須背熟)Linux應(yīng)用程序地址布局在學(xué)習(xí)

25、Linux應(yīng)用程序開(kāi)發(fā)時(shí),經(jīng)常會(huì)遇到如下概念:代碼段、數(shù)據(jù)段、BSS段(Block Started by Symbol,又名:未初始化數(shù)據(jù)段) 、堆(heap)和棧(stack)。而這些部分也是構(gòu)成Linux應(yīng)用程序的重要組成部分。從低地址到高地址分別為:代碼段、數(shù)據(jù)段、BSS段、堆、棧堆向高內(nèi)存地址生長(zhǎng)棧向低內(nèi)存地址生長(zhǎng)數(shù)據(jù)存放1、代碼段:代碼,全局常量(const)、字符串常量2、數(shù)據(jù)段:全局變量(初始化以及未初始化)、靜態(tài)變量(全局的和局部的、初始化的以及未初始化的)3、堆:動(dòng)態(tài)分配的區(qū)域4、棧:局部變量(初始化以及未初始化的,但不包含靜態(tài)變量)、局部只讀變量(const)5、BSS段(

26、屬于數(shù)據(jù)段):用來(lái)存放程序中未初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域。特點(diǎn)是:可讀寫的,在程序執(zhí)行之前BSS段會(huì)自動(dòng)清0。所以,未初始的全局變量在程序執(zhí)行之前已經(jīng)成0了。操作系統(tǒng)方面的知識(shí)點(diǎn),也是筆試面試重點(diǎn)考查的地方。尤其是面試的時(shí)候。其他瑣碎知識(shí)點(diǎn)MMU的作用(筆試選擇填空)1. 將虛擬地址轉(zhuǎn)化為物理地址2. 訪問(wèn)權(quán)限管理cache的功能(筆試選擇填空)高速緩沖存儲(chǔ)器Cache是位于CPU與內(nèi)存之間的臨時(shí)存儲(chǔ)器,它的容量比內(nèi)存小但交換速度快。在cache中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時(shí)間內(nèi)CPU即將訪問(wèn)的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時(shí),就可避開(kāi)內(nèi)存直接從cache中調(diào)用,從而加快

27、讀取速度,由此可見(jiàn),在CPU中加入cache是一種高效的解決方案,這樣整個(gè)內(nèi)存儲(chǔ)器(cache+內(nèi)存)就變成了既有cache的高速度,也有內(nèi)存的大容量的存儲(chǔ)系統(tǒng)了。在Arm系統(tǒng)中函數(shù)調(diào)用的時(shí)候,參數(shù)是通過(guò)哪種方式傳遞的?(筆試簡(jiǎn)答題)當(dāng)參數(shù)小于等于4的時(shí)候通過(guò)r0r3來(lái)進(jìn)行傳遞的,當(dāng)參數(shù)大于4的時(shí)候是通過(guò)壓棧的方式傳遞。dup復(fù)制文件描述符lseek定位文件fork創(chuàng)建進(jìn)程。備注:以上知識(shí)點(diǎn)基本上都是我筆試面試遇到過(guò)的,也有少部分是身邊同學(xué)遇到過(guò)的。有些純軟件的公司會(huì)考查到C+與數(shù)據(jù)庫(kù),這類公司招聘的是軟件工程師。對(duì)于愛(ài)好做嵌入式的童鞋可能不太適合,對(duì)于我,也不太熟悉數(shù)據(jù)庫(kù)與C+,所以知識(shí)點(diǎn)未

28、能涉及這方面的內(nèi)容。對(duì)于想去純軟件類、互聯(lián)網(wǎng)類的公司的童鞋,還需要熟悉數(shù)據(jù)庫(kù)。HR面除了對(duì)專業(yè)課、知識(shí)點(diǎn)的考查外。面試的經(jīng)驗(yàn)也是很重要的。第一次面試的時(shí)候,面試很傻,技術(shù)面的時(shí)候沒(méi)想著把面試官引向自己熟悉的領(lǐng)域,反而老是暴漏自己的不足之處。二面綜合面,面試官老盯著我看,覺(jué)得有些尷尬就避免與面試官直視,這種看法是不正確的。應(yīng)該面帶微笑的與面試官進(jìn)行眼神的交流,盯著面試官看。后來(lái)的面試也是這么做的。當(dāng)面試官問(wèn)到你項(xiàng)目的事情時(shí),應(yīng)該滔滔不絕的講述,多與面試官說(shuō)項(xiàng)目的事情,畢竟自己做的項(xiàng)目還是比較熟悉的,但是面試官可能并不熟悉你的項(xiàng)目。面試的時(shí)候不要過(guò)于謙虛。關(guān)于HR面,有些問(wèn)題是常會(huì)被問(wèn)到的,我整理

29、了一下。公司看中的是你的學(xué)習(xí)能力、自信、團(tuán)隊(duì)精神,這是要盡量在面試中體現(xiàn)出來(lái)。請(qǐng)介紹一下你自己說(shuō)明:不要簡(jiǎn)單的說(shuō)自己叫什么,哪個(gè)學(xué)校,哪個(gè)專業(yè)就完了,太少例:我叫*,今年*歲,就讀于安徽大學(xué),集成電路工程專業(yè) 嵌入式系統(tǒng)方向,全日制在讀研究生。我喜歡寫代碼,我從大二開(kāi)始就積極參加各類編程項(xiàng)目中,雖然還沒(méi)有畢業(yè)但是在嵌入式軟件方向也算是有4。5年微薄的編程經(jīng)歷了。我對(duì)技術(shù)有濃厚的興趣,責(zé)任心強(qiáng),思路清晰,溝通能力好,精通C語(yǔ)言,熟悉linux系統(tǒng)。平常有時(shí)間看看博客,并也喜歡在技術(shù)論壇上寫技術(shù)類的文章,與網(wǎng)友一起討論。謝謝。(最后幾句多好,這逼還是要裝的。)你未來(lái)3-5年的職業(yè)規(guī)劃是怎樣的例:我希望從現(xiàn)在開(kāi)始,1-2年內(nèi)能夠在我目前申請(qǐng)的這個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論