1. 程式人生 > >2020秋招嵌入式面經——地平線、小米、CVTE、大華、綠米,內附程式碼

2020秋招嵌入式面經——地平線、小米、CVTE、大華、綠米,內附程式碼

地平線提前批 一面涼:

投遞簡歷過程:官網投遞9月份之前投的都是提前批,投了北京、上海、南京地區的嵌入式軟體研發崗,北京和上海的都被篩掉了,南京的撈了我,hr小姐姐打電話邀約面試。

一面涼:

電話面試,第一次收到面試通知十分痛苦,面試AI晶片獨角獸,完全沒有一點點準備,知識也沒有撿起來,十分緊張,面試官很好,不停開導。

1、自我介紹

2、解釋一下register關鍵字

3、位元組對齊

4、資料庫查詢左連線和右連線的區別(跪了,資料庫我全忘了)

5、static關鍵字在函式中、原始檔中、標頭檔案中有什麼區別(涼)

6、資料結構和演算法瞭解不,分治法、貪心法(涼)

7、專案介紹

8、你還有什麼要問的

總結:面試表現太差,17分鐘結束,自己太菜,面試基礎很重要,牛客上說地平線嵌入式的面試考的很廣。

小米提前批 二面涼:

投遞簡歷過程:官網投遞9月份之前投的都是提前批,投了嵌入式工程師,地平線面試完晚上突然接到小米公司的電話,面試官邀約面試。

一面 27min:

牛客網視訊面試,心想又完了,還沒複習又來面試,而且是世界五百強公司的面試,作為米粉異常痛苦(對自己恨鐵不成鋼),好在小米的面試官也十分和善。

1、自我介紹

2、專案介紹

3、專案中的匯流排解釋一下

4、執行緒同步

5、程式設計題:氣泡排序、連結串列逆置(面試官說,我考一下你的程式設計能力吧,要簡單的題目還是要難的題目?答:簡單的)

6、談談你對小米的瞭解

7、你還有什麼想問的

8、工作地點選一個(深圳,選完面試官解釋北京負責小米系列,南京負責MIUI,深圳負責紅米系列)

一面 30min:

小米深圳的面試官打電話邀約面試

1、C/C++程式 記憶體分佈情況 常量所在的區(沒回答好)

2、STM32 GPIO介紹(沒有認真複習,細節全記錯了)

3、深挖專案(沒回答好,自己的專案也必須好好複習)

總結:小米基本會給很多人面試的機會,只怪自己太菜,無準備之戰,必敗無疑。

廣州視源(CVTE)一面涼:

投遞簡歷過程:官網投遞,選擇筆試場次(20多道選擇題,2道程式設計題),筆試通過後選擇面試場次。

一面 60+min:

去面試酒店掃碼排隊,酒店人超多,一定要提前去

1、自我介紹

2、專案介紹,畫出硬體拓撲圖

3、解釋一下中斷 中斷處理時間過長(中斷下半部) 中斷觸發方式 中斷處理函式注意事項(有引數和返回值嗎,為什麼)

4、程式設計題 1)給出暫存器的地址和位寬,讀寫暫存器 2)字串處理,大小寫轉換

5、對嵌入式的瞭解

6、我們是996,對加班的看法

7、有什麼職業規劃,什麼原因會讓你離開公司(巨坑)

總結:面試官的暗語是一面和二面面試官都是我,回去等涼了的訊息吧。

浙江大華 一面涼 20min:

網申投遞,通過篩選後筆試,筆試通過,面試官發簡訊讓我當天選擇時間,感覺自己是被隨便撈起來看看,面完第二天收到辭謝信。

1、專案介紹,IIC匯流排說一下。

2、C語言分哪幾區,static修飾的區域性變數在哪裡?

3、Linux有用過哪些,幹了什麼事?(我說Debian系列、Centos都用過)

4、Nor Flash 和 Nand Flash 檔案系統(忘了,讓我補充了一下非嵌入式的檔案系統)

5、Linux使用者態如何進入核心態?

6、看看你的筆試題,解釋一下棧的特點。

7、有什麼想問我的?(問了一下 視訊會議C嵌入式的工作內容,面試官說有ARM微控制器的,也有Linux的驅動開發,也有我做過的伺服器和資料庫的部署,感覺超級符合)

8、什麼時候能夠實習,畢設怎麼辦?

總結:面試表現最好的一次,我說我在學習《Linux裝置驅動程式》和《UNIX環境高階程式設計》,面試官說這兩本書要好好看,我想我還是表現太平庸了,大華投的人很多,優秀的人都不缺。

綠米聯創 三面 offer溝通中:

網申後,宣講會筆試,筆試內容非常基礎,考察對C/C++的基礎,C++的全忘了,筆試完當天晚上收到面試邀請。

技術面 約50min:

面試官比較nice,十分和善。

1、覆盤筆試題

  1)高內聚低耦合什麼意思,為什麼要這麼做

  2)寫一個“標準”的巨集,比較兩個數的大小(有什麼需要改進的,為什麼這麼改,如果是i++怎麼做,不知道,面試官告訴我應該用臨時變數)

  3)反轉連結串列的程式設計題寫錯了

2、IIC匯流排時序

3、寫出計算機網路 五層模型 每一層對應的協議 解釋ICMP DHCP

4、HTTP 從瀏覽器輸入域名的全過程

5、專案架構畫一下,專案中的無線模組是怎麼回事 因為我投的無線組,問的比較深

6、寫個程式判斷CPU位元組序,寫對了(小米的面試官也問過,當時不記得了,巨難受)

7、專案中的難題

8、你知道哪些加密方式,非對稱加密?

9、進入Linux核心態,為什麼要分為使用者態和核心態

10、想搞哪個方向?(我作死,說想搞Linux,後面有了leader加面,因為這個方向是閘道器組的,當時沒意識到面試官是無線組的leader)

11、深圳壓力很大,為什麼想來深圳?

12、有什麼要問的,問了一下綠米產品的IoT安全。

hr面:

0、比較考察個人綜合素質,考察你對行業的認識,對公司的瞭解,臨場反應能力等,hr素質可以,沒有給人壓力。

leader加面 30min:
1、IIC匯流排

2、專案中類似於IFTTT的解釋了一下

3、給我一個硬體工程師做好的人體感應模組,如何用zigbee對接閘道器(答的不好)

4、C++多型

5、自動控制原理中的PID

總結:我感覺我什麼的可以說一下,但是回答的可能不是很讓面試官滿意,無論是對知識的理解正確度上、深度上,都差那麼一口氣,還是要多學,學精學專一點。

秋招總結:

1、基礎!!!基礎!!!基礎!!!

2、不要盲目自信,自己的專案也要通透,能夠對答如流。

3、問一答十,準確且全面,不要擠牙膏,不會的問題一定要找個相似的問題,面試官想看到你知識體系,深度和廣度。

4、心態一定要調整好,瘋狂投遞刷題筆試面試,有機會就上,失敗了就多多覆盤。

5、一定要好好準備,看面經啥的,可惜了提前批(學霸批)大廠獨角獸的面試機會,不過對於我一個菜鳥大廠只能是幻想。

附面試程式碼:

1、位元組對齊與大小端

 1 //
 2 //  Deepc.cpp
 3 //  Study  -- C的深入
 4 //
 5 //  Created by Admin-X on 2019/10/6.
 6 //  Copyright © 2019年 Admin-X. All rights reserved.
 7 //
 8 
 9 #include "Deepc.hpp"
10 #include <iostream>
11 using namespace std;
12 #pragma pack(4) //改變對齊字長
13 
14 void byteSize(){    //          4-byte                   8-byte
15     struct fun{         //  Address   offset         Address   offset
16         int a;          //  0x6EFE7C    +0           0x6EFE78    +0
17         double b;       //  0x6EFE80    +4           0x6EFE80    +8
18         char c;         //  0x6EFE88    +8           0x6EFE88    +8
19         char d;         //  0x6EFE89    +1           0x6EFE89    +1
20         int e;          //  0x6EFE8C    +3           0x6EFE8C    +3
21     }F;
22     cout << sizeof(F) << endl;
23     //printf("0x%X\n0x%X\n0x%X\n0x%X\n0x%X\n",&F.a,&F.b,&F.c,&F.d,&F.e);
24     //printf("0x%X\n",&F.k);
25 }
26 
27 void checkCPU()    //檢測CPU大小端位元組序,小端位元組序:低位的地址儲存低位的位元組 ,大端反之
28 {
29     union w                 //                        Big-endian/Little-endian
30     {                       //(Address)     0x00 0x01 0x02 0x03 // 0x00 0x01 0x02 0x03
31         unsigned int a ;    //(Data)        0x87 0x65 0x43 0x21 // 0x21 0x43 0x65 0x87
32         char b;
33     }c;
34     c.a = 0x87654321;
35     if(c.b == 0x21){
36         printf("little-endian\n");
37     }else{
38         printf("big-endian\n");
39     }
40 }
View Code

&n