首先一些經驗與教訓,也算是給將要開始找工作的娃娃一點多餘的提醒吧。
一定要重基礎哦!這裏的“基礎”對比大學裏面的“皮毛”知識,多的是一點深度和延伸。所以看似企業在招懂基礎的人,其實是招一個對於專業知識理解有一定深度的人,而這樣的人往往不只是基礎好。趁校招還沒開始的時候個自己充電,主要補充的知識是:
①C語言(包括底層實現,如堆棧如何分配,數據的大小端方式,分析問題的時候也要考慮計算機位數的影響......)重點有 幾個必考關鍵字(volatile,const,static,extern),位操作,結構體,指針,動態地址分配、預處理,宏定義......(ps:另外要注意嵌入式C語言的特性哦)
這裏是一個前輩總結的經典題,可以參考:https://blog.csdn.net/mao_hui_fei/article/details/82710536
②Linux操作系統(遠不是課程上的通用操作系統的內容,具體可以去看專門教材)重點有 文件,Linux網絡編程,多線程,Linux常用指令......(ps:關於這個部分,網上的面試題比較零碎,也有一些相對有點偏,注意自己總結,也可能是因爲我沒仔細找)
③計算機網絡(和前面Linux網絡編程會有綜合)重點爲 TCP/IP協議(這裏不會問很細緻)TCP的三次握手、四次揮手......
④單片機 關於單片機的知識主要就是基礎的C語言,在第一點中提到,另外就是自己項目涉及到的知識,公司的研究方向涉及的單片機知識(不是重點)。
ps:除了直白的知識點提問,題目往往會繞彎彎,知識點雜糅(C語言的題目中比較常出現),千萬注意審題!(包括筆試)。
嵌入式的知識涉及比較廣,一般畢業生很難做到廣泛而深入(比如我),這時候“積累”就顯得尤爲重要了,要知道必會的知識點就那麼些。積累的方式①蒐集經典題目,徹底理解②蒐集公司筆試、面試題,拓寬知識面,查漏補缺③一定要多去參加筆試面試,實踐是檢驗真理的唯一標準。
重點說一說實戰經驗的重要性。相同類型的公司,相同的崗位,需求一般差別不大,所以問的題目也會有相似。如果第一次面試什麼都答不上來,非常受挫,正常。總結好本次面試的題目,還可以進行一定的知識延伸。第二次面試不出意外就會有你總結的題,這時候你會回答的比上一次好一些......其實不用我來說,在開始了你的求職面試之後自然就會發現。
寫的有點粗糙,0.51 有點困了zzz 好吧,其實還是因爲我在試水,也沒有認真準備,嗚嗚。
兩次技術面試的提問,回憶整理了一部分。
1.結構體對齊原則
例題:
struct node{
char c1;
short int s;
char c2;
int n;
char *p;
char c3;
}
問:sizeof(struct node) = ?
(ps:結構體的對齊原則是怎樣的?)
2.指針變量佔多少字節?在32和64位機中不同的原因是什麼?
3.指針存放在堆區還是棧區
4.宏定義的作用
5.動態內存分配
例題1:
char * func(char *p)
{
free(p);
p = NULL;
return p;
}
char *p1 = malloc(s1);
char *p2 = func(p1);
①這段代碼執行後p1,p2的值分別是什麼?”
②在後面添加“p1[0] = 10;”是否合法?
例題2:
char *p1 = malloc(s1);
char *p2 = realloc(p1,s2);
①這兩個語句有什麼區別?
6.指針&數據存儲
int n = 0x1234;
short int *p = &n;
① *p = ?
7.文件描述符
①有效的文件描述符最小取值是多少?
8.Linux網絡編程
①Linux網絡編程select的返回時機?
9.關鍵字
①介紹static,extern,volatile
10.(簡歷中有提到C語言和Java)題目:C語言和Java有什麼不同?
不給答案,哈。注意舉一反三喲! 加油哇!一切順利!