嵌入式求職面試1

2021-06-29 08:13:48 字數 3323 閱讀 3021

今天下午到網路通電子面試嵌入式驅動開發一職,至於面試機會是怎麼樣來的,就得看自己的努力和技巧了,在這就不扯這個問題了,還是說說面試過程吧;前往公司面試一路也算是有點小波折吧,在面試通知裡邊可知學院和上社兩個brt站都能去,我就選擇上社下車,一邊開導航,一邊找,一路走呀走呀,一不小心走錯路口,從上社走到學院,鬱悶,然後往回走,總算到公司了;

上去見到前台mm,我說來面試的,她說是不是面試驅動開發一職,然後我就遞交我的簡歷,她也從電腦上列印乙份試題,然後拿給我,讓我做;內容是c和linux驅動的一些知識;先說c吧,趁熱打鐵,把我能想起來的都拿出來說說;

一,選擇題部分,題目不分次序;

1 . for(i=0,k=-1;k=1;i++,k++)

printf("*");

迴圈一次、不迴圈、無限迴圈;   答案是無線迴圈;這個考察的是對for的熟悉程度,還有逗號表示式;  實際for判斷的是k=1;k賦值為1,肯定可以,當然為真了;為了保證正確性,我又想了如果if(k=1)呢,或許你看不出,如果是if(k==1),有印象了吧,為什麼初學者建議寫成if(1==k)的形式,就是避免出現if(k=1)的bug然後除錯不出來;  

2. 若變數已正確定義並賦值,表示式______不符合c語言語法。

a、a*b/c; b、3.14%2  c、2, b  d、a/b/c

咋一看,覺得都可以,是不是這樣覺得c呢?剛開始我也覺得疑惑,但是但是答案往往會誘導你,c一看確實覺得是不合法的,仔細想想面試一般不可能給這麼簡單的題吧?所以c瞬間就是正確的,不信你可以看看c語言中不是還有個逗號表示式嗎?a=2,b; 最後不就是a=b嗎!!!但a,d不用看就知道是對的,所以只剩下b了,我就選擇b了,感覺%應該不能是浮點型的;面試回來之後,一查確實是:%只能針對整數。

3.語句「if(a>b) k=0; else k=1;」和______等價

a 、k=a>b?1:0  bk=a<=b?0:1   c、k=a<=b  d、k=a>b 

這道題看起來不難吧?但是不經意間,你就會腦袋紊亂而選錯,答案是c為什麼呢?想想0是假,真一般是1,有些編譯器是-1,我再想想bool型別,然後就果斷選c了;

4. 已知int a[4];問下邊表示式是不允許的?

a 、*a   b、a[0]   c、a++  d、a

是不是驚呆了,我也是,感覺好像似乎都對,沒錯啊,深深懷疑出題人,但是覺得沒理由,一定有錯的;我們對這些變數的思維常用於賦值語句的右邊,當想想放在左邊的時候,答案就出來了 ,a=xx;可以嗎?顯然不行了,因為a是陣列不是指標,這道題考的不是別的就是陣列與指標的區別;

5. int i,char j; float z,x;  若變數已正確定義並賦值,則i*j+z/x 是什麼型別?

a 、int   b、char   c、float  d、double

是不是有種想馬上翻書的感覺了?或者是上機除錯?這裡考察的是不同型別的資料運算的時候的型別轉換;如果乙個運算子兩邊的運算數型別不同,先要將其轉換為相同的型別,即較低型別轉換為較高型別,然後再參加運算;有些編譯器是轉成float,有些是double;具體還得看平台;

double ←── float 高

↑long

↑unsigned

↑int ←── char,short 低

6. c = "adef\0abc"  ;   char *p = c;  printf("%c", p+4);  列印什麼值?

a 、adef  b、abc   c、0  d、a

這個不用說,一眼就能排除a,b,不要問我為什麼,自己看;答案是c;這個地方考察的是轉意符的使用;

剩下的4道選擇題,感覺沒什麼,而且我印象也不深了,也不打算講了;

接下來說說簡答和**題的。

二,簡答題

1. 函式 int sum (int a. int b)  定義乙個函式指標p,並讓p指向sum;

int (*p)(int , int) = sum;

2.把a的bit3置1,不改變其他位;a的bit3置0不改變其他位;

a |= 1<<3;

a &= ~(1<<3);

3.有乙個陣列table,用乙個巨集計算陣列大小;

#define array_size  ((sizeof(a))/sizeof(*a))

4.檢視核心列印資訊用什麼指令;怎樣檢視系統裡的字元裝置;怎樣檢視系統已用的中斷號;

dmesg

ls -l /dev

cat  /proc/interrupts

5.核心中斷上半部分和下半部分關係和原因,大概就是這個意思;

產生中斷時硬體相關的處理要求快, 而有些驅動在中斷處理程式中又需要完成大量工作,這構成矛盾,所以linux中斷的上半部分和下半部分,上半部分處理急且重要的工作,下半部分處理不急但重要的工作;.

linux 的底半機制主要有tasklet 和worl\k queue以及 softirq,可以理解成一種工作的延遲。所以實際使用時跟timer機制基本上乙個意思。linux的底半處理實際上是建立在核心的軟中斷機制上的.

6.copy_to_user()和copy_from_user()功能和作用;主要用在

file_operations中的那些函式? 不解釋了,網上資料大把;

7.寫乙個結構體封裝乙個人的資訊,性別,身高,名字;輸入 男1 ,178cm,tonmy;

8.實現

char *strcpy(char* dest, const char *src); 函式;

筆試部分完結;

接下來面試部分

面試官是乙個看起來很年輕的青年,估計也就25左右;整個過程沒有說筆試部分上的問題,一開始基本都是自我介紹;所以這次也是不例外,自我介紹的時候面試官會藉此機會一邊聽一邊看簡歷,所以整個過程要把握好,剛好他看得差不多就可以停,這是個技巧;網上學的;我就廢話不多說,直切正題;

問題1. 如果我有個檔案想加入核心源**,要怎樣做?。。。。。。都忘得差不多了,只能說個大概

問題2. usb驅動,是核心自帶的然後選上還是自己移植的? 。。。。。。正中要害,雖然是直接選上,但有時用不了,原因是usb那塊的時鐘沒設定好,需要修改,圓滑過渡了,這是我移植的時候出現的問題;

問題3. i2c驅動你做過吧?能簡單說下是怎樣編寫的嗎?

問題4. 那簡單說說i2c裝置的位址有哪些位?

問題5. 網路程式設計tcp的伺服器怎樣設定?

問題6. 寫過多執行緒程式設計嗎?

問題7. 你簡歷裡的按鍵驅動是怎樣設計的?

還有一些問題,我也忘記了,印象深的就這些了,由於我沒準備好,有些回答得很差,而且沒重點,具體怎樣還是等通知,該幹嘛還是得幹嘛去。

對了,還問到 source insight的快捷鍵還有vi快捷鍵,想檢視你用這些工具的熟用程度;

總結了下i2c、usb、socket 被問到的概率很高,還是需要整裝備戰,準備好了,繼續戰鬥!!!

ls -l /dev

嵌入式面試

的別人,還不錯 預處理器 preprocessor 1.用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 我在這想看到幾件事情 1 define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 2 懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是如何計算...

嵌入式萌新的求職經歷

要開始找工作了,這一文章記錄一下求職中的事情吧 最近忙完畢設的相關,準備答辯,同時也要開始尋找工作了。有好幾個小夥伴都去上海了,我打算也去上海去找找,在各大求職渠道,完善自己的簡歷並且投遞。也會一直更新的,敬請期待哇,面試中問到了,五大io模型 直接給鏈結吧,並茂的 五大io 4.29今天面試有乙個...

嵌入式學習1

嵌入式學習第一天 linux檔案處理命令 1.mkdir 作用是建立名稱為dirname的子目錄 使用許可權是所以使用者 格式mkdir options 目錄名 options 主要引數 m mode 模式 設定許可權 模式 與chmod類似 p parents 需要是建立上層目錄 如果目錄早已存在...