三個多月的秋招戰線,嵌入式秋招面經總結

2020-10-25 07:00:49


從秋招7月份的提前批,到8月份的為正式秋招做的準備,再轉入9,10月份的正式批的無硝煙戰場,其中的酸甜苦辣都嚐盡了,真真正正體會到沒有一件事是容易的。
遂位於武漢的小出租房中,記錄一下三個多月的秋招歷程。

提前批

提前批直投了兩個:一個樂鑫、一個諾瓦科技,皆卒

  • 樂鑫
    樂鑫沒有好記錄的,7月16做的筆試(筆試掛),三道演演算法題(內心對演演算法是抗拒的),也是在此看到了演演算法的重要性,也是後續複習演演算法的動力來源。
  • 諾瓦科技(一面過,二面涼涼)
    到現在為止,我依舊認為諾瓦科技是我面試公司中問的最全面的一家公司
    1、筆試
    筆試和其他公司筆試比較相同了,嵌入式選擇題(C,C++,linux,嵌入式基礎),可以在牛客網上刷一下,原題挺多,一道程式設計:連結串列,結構體相關的操作,兩道問答題。
    2、一面(52min)
    (1)自我介紹:我是xxx,就讀於xxx,…
    (2)通訊協定了解過嗎(SPI,I2C,UART)?選一個你熟悉的說一下,我選的是I2C協定(必須要真的懂時序)。
    (3)I2C協定你是用到哪裡的,程式碼怎麼實現的?
    (4)Linux下I2C驅動程式設計:I2C核心層、I2C匯流排層、I2C驅動層
    (5)platform 與 裝置樹的區別
    (6)linux 下怎麼獲取到裝置樹中硬體(板級)的資訊
    (7)TCP,UDP的不同之處,socket通訊端程式設計瞭解嗎,TCP伺服器端的程式設計步驟,UDP和TCP socket程式設計哪裡不同
    (8)I/O複用,select、epoll,poll的區別
    (9)linux字元裝置驅動程式的設計流程,file_operations 中read write,應用程式怎麼讀取到字元裝置中的資料;
    (10)系統呼叫的過程?platform 匯流排驅動的設計?mmap函數?
    (11)UART串列埠有時鐘線嗎,他是怎麼保證資料發完之後對方知道你發完的,UART怎麼保證資料的準確性;
    (12)多個程序存取同一個檔案時,檔案描述符是一樣的嗎?
    (13)uboot的啟動流程瞭解嗎;stage1 和 stage2 。uboot原始碼看過嗎,其中的陣列?(uboot程式碼必須理解)
    (14)新增過uboot中的命令嗎?linux檔案系統的格式.
    (15)多執行緒通訊
    (16)共用記憶體,程序間通訊方式, 共用記憶體如果發生洩漏,怎麼檢視?ipcs -m?
    (17)建立的裝置檔案 /dev/下的,讀取時檔案描述符一樣嗎?
    (18)演演算法相關:反轉連結串列,連結串列的頭插和尾插法;
    (19)畫過原理圖嗎,用什麼軟體畫的,AD? 那在AD軟體中在如果根據原理圖上的器件快速選中PCB圖上的器件
    (20)瞭解Makefile嗎,Makefile語法格式?
    (21)struct結構體的大小,位元組對齊、陣列 sizeof()大小;
    3、二面(22min,涼涼)
    全程聊專案和職業規劃,扣專案細節部分

正式批

  • 物聯安全開科技(技術面+HR面)
    (1)自我介紹
    (2)問專案,還是那些專案,但是由於技術官對微控制器瞭解不多,因此問的不夠深入
    (3)然後問用過linux嗎
    (4)TCP協定、UDP協定,TCP三次握手四次分手,TCP與UDP的區別
    (5)利用UDP的優點,加強UDP的可靠性怎麼改進
    (6)I/O複用瞭解嗎(poll、select、epoll區別以及用法)
    (7)然後面試官介紹公司做的東西:偏linux應用層程式設計,驅動層和核心層用的不多
    (8)對應用層感興趣嗎,知道程序間通訊嗎,方法,共用記憶體瞭解嗎
    然後HR問的幾個問題:
    (9)大學/研究生期間做的比較好的決定是什麼?(加入工作室。。。。。。。。)
    (10)我看你寫過部落格,還挺多的,我也去看了一下,都是你自己寫的嗎?
    (11)什麼時間可以實習?實驗室規定,不可以,,,,,,,,

  • 國光電器
    1、一面(群面)
    (1)常規的自我介紹
    (2)大學裡面學的比較好的課程?
    (3)你所理解的裝置驅動程式的設計流程是什麼?
    (4)I2C協定介紹一下;
    還有幾個不是技術的問題,家庭情況,為什麼想來廣州,之類的
    1、二面(技術面)
    (1)給定一個字元陣列,求它的 sizeof 的大小,位元組對齊之類的;
    (2)linux核心原始碼看過嗎?linux核心啟動流程,敘述一下;
    (3)uboot原始碼看過嗎?uboot的載入引導過程;
    (4)linux核心移植做過嗎,當時做的是哪一塊的移植?
    (5)linux檔案系統有哪些?
    (6)linux核心目錄結構,linux檢視記憶體的命令。
    (7)自旋鎖和互斥量的區別;
    (8)還有一些比較簡單的C語言知識,氣泡排序之類的
    (9)在linux核心裡怎麼分配動態記憶體(kmalloc,核心中怎麼建立執行緒:kthread_create)

  • 大華
    1、一面
    (1)自我介紹時候提到了linux下字元裝置驅動程式的編寫,然後面試官第一個問題就是字元裝置驅動程式的程式設計流程,裡面重要的 file_operations 結構;
    (2)程序間和執行緒間的通訊方式;
    (3)TCP/UDP協定了解嗎?介紹一下兩者區別(然後就背起來了),linux下的TCP程式設計實現過嗎?(然後就接著介紹socket程式設計);
    (4)平時開發用的是C還是C++呢?寫的程式碼量有多少行?(這個我哪裡記得,粗略說了一下)
    (5)大學時候學的比較好的課程是什麼呢?數學好嗎?
    (6)平時有看過什麼專業的書籍沒有?(有啊,巴拉巴拉巴拉…)
    (7)然後我這麼問的差不多了,你那邊還有什麼問題嗎?
    得到面試官認可,面試官也很nice
    1、二面
    (1)自我介紹
    (2)我看你簡歷裡有學過自動控制原理,講一下自控學的主要內容(我真是全部記得了,都還給老師了,就把還有點影響的PID控制講了一下),然後面試官追著問:如果給你一個溫度控制系統,怎麼控制溫度在變化不大呢,怎麼降低超調量呢?還有動態響應什麼的。然後還有其他大學和研究生課程的問題(內心:一度懷疑自己是不是投錯簡歷了)
    (3)跟面試官說,我主要學的是C/C++,linux系統之類的,C語言終於開問了:陣列連結串列的區別,陣列連結串列插入的時間複雜度;
    (4)結構體和字元陣列的sizeof;
    (4)uboot移植做過嗎?介紹一下你做的吧
    (5)多執行緒程式設計會嗎?(瞭解的比較少)
    本來以為涼涼,大概一週之後接到HR面談薪資

  • 中科曙光
    技術面:
    (1)linux核心空間和使用者空間的通訊;
    (2)linux程序間通訊方式:共用記憶體自己實現過嗎;
    (3)串列埠協定懂嗎,我說我瞭解,但是用的比較多的還是I2C協定,然後把I2C協定講了一下,還有linux下I2C程式設計介紹了一下;
    (4)uboot的相關知識,uboot流程(stage1和stage2),uboot移植做了哪些測試,除了字元裝置驅動程式,你還做過什麼驅動程式:塊裝置,網路卡裝置
    (5)然後問專案:mqtt協定介紹一下,你在專案中負責什麼,你都做了什麼工作,專案中的難點問題;
    (6)c語言中動態分配記憶體,怎麼避免記憶體漏失呢?
    (7)然後針對研究生期間的論文問了一些,介紹一下K-Means演演算法,你都是怎麼進行演演算法改進的呢?
    (8)你有什麼問題問我們嗎?
    後來在兩天之後,收到HR面的訊息,談薪資待遇;

  • 博觀智慧
    筆試做完之後,三輪面試,(一輪技術面,兩輪HR面吧,三天時間,效率很快),拿到offer,在濟南,薪資待遇還可以,因為個人原因拒了
    1、一面
    (1)萬年不變的自我介紹
    (2)C語言中記憶體分配幾種方式(區域性、全域性、靜態、動態?)
    (3)棧和佇列
    (4)給定一個結構體,求 sizeof (考慮位元組對齊);
    (5)大端小端通過程式判斷(聯合體,指標)
    (6)C++學過嗎,智慧指標的作用並且介紹一下;
    (7)STL瞭解過嗎,vector容器和list容器的優缺點;
    (8)linux系統瞭解嗎,介紹一下你知道的命令(把我能想到的全都說了),後來面試官問了一個網路命令,不記得了,尷尬
    (9)uboot命令介紹一下
    2、二面和三面都是HR面,基本都是容易回答的HR問題,還有就是談薪資

  • 天融信
    1、一面(技術面)
    (1)自我介紹
    (2)linux核心啟動流程(start_kernel 函數裡面的內容)
    (3)在linux系統中查詢檔案主要有什麼命令(find,whereis,whichis,locate,grep等)
    (4)TCP/UDP協定會嗎?兩者區別,linux下的 tcp 程式設計實踐過嗎(簡單的介紹了下socket 程式設計:建立socket,bind,listen等之類的),然後有問使用者端連線伺服器,三次握手發生在什麼函數中。I/O 多路復ni用瞭解嗎?(poll,epoll和select)
    (5)演演算法:怎麼判斷連結串列中有環,並且計算出中間環的個數(劍指offer原題):我按劍指offer上的思路說了一下:快慢指標,面試官說有沒有時間複雜度更小的計算方法,思考了一下回答:還是兩個指標,只要有指向同樣的地址說明是有環的,然後面試官把這個思路也告訴了我一下,就是指向同樣的地址空間。
    (6)單向連結串列會嗎,那寫一個雙向連結串列和迴圈連結串列的資料結構;
    (7)gdb用過嗎,用過(真的只是用過,列舉了一些gdb偵錯命令),然後面試官問:怎麼偵錯多執行緒呢? (對不起,這個我真的不記得了)
    (8)你有什麼問題問我?(工作內容。。。。)
    2、二面(技術面)
    二面全程圍繞專案:mqtt 協定解釋一下吧,你是怎麼用 C 實現的,你在專案中有遇到過最大的困難是什麼?怎麼解決的?
    我看你研究生期間做的是演演算法,那你解釋一下這個K-Means是怎麼實現文字聚類的呢?你的論文是基於什麼專案呢?還有如果給你一堆協定,你怎麼通過機器學習演演算法去識別出哪個是mqtt協定的資料包文呢?
    給我的感覺就是天融信二面就是深挖專案,看你是不是真的懂你做的東西,所以呢,寫在簡歷上的東西是一定要負責任的!
    3、三面(HR)
    聊工作地點,薪資情況

  • 六方雲科技
    1、一面(技術面)
    (1)常規性自我介紹
    (2)我看你專案做的嵌入式微控制器的比較多,linux下的程式設計瞭解嗎?瞭解
    (3)linux 下TCP程式設計說一下吧(這個問題真的遇到好多次)
    (4)linux閘道器設定怎麼操作呢(可以用命令,也可以在組態檔中寫)
    (5)還問了linux下的其他命令,時間太久記不得了
    (6)繼續問第一個專案中 mqtt 協定(我發現只要問專案,第一個問的一定是這個問題:mqtt 協定)
    (6)C語言功底怎麼樣?答:還行(內心祈禱,別問演演算法),然後問了一下一道 struct 結構體(成員變數包含位域)的 sizeof 是多少,還好當時有複習到。
    (7)我看你之前用過BP神經網路,現在有這樣一個問題:你不是懂 mqtt 協定嗎,現在有別的協定的封包和 mqtt 協定包混在一起,你怎麼用BP神經網路進行區分呢?還有在好多好多資料包文中,你怎麼找到包含攻擊型別的網路報文呢?可以用你懂的別的機器學習演演算法做。(然後我就按BP神經網路的原理去做分類了,開放性的題目,有合理的理由就行)
    (8)你有什麼問題要問我的嗎?(工作內容。。。)
    2、二面(HR面)
    (1)為什麼要來北京?(真的是北漂情懷驅使的我)
    (2)家庭情況
    (3)大學/研究生期間最有意義的一件事,最後悔的一件事。
    (4)自己的優缺點是什麼

9月經歷的事情很多,大概自己十一之前面試了這麼幾家公司,也做的其他公司的筆試,十一之前的一週很忙,基本上每天都有筆試、面試(當時真真正正的體會到原來筆試面試多了也會那麼煩躁),當時自己也一直在思考還要不要去武漢,但是後來也算是不讓自己後悔吧,算是給自己一個交代吧,毅然決然在10月6號,帶著要坐一次南湖大道的538到終點站南湖大道茶山劉的願望(但是在寫這篇秋招記錄部落格之前,依舊還是沒有去坐538,原來實現自己文藝的願望還真是難啊)坐上了去武漢的飛機,來到了自己心心念唸的英雄武漢

正式批的線下(武漢—武漢理工校招)

武漢—
在武漢的正式秋招,應該是8號或者9號正式開始的,全部是在武漢理工的校招

  • 拓邦股份
    1、一面(技術面,群面)
    一共6個人,不同的崗位
    (1)常規性的自我介紹
    (2)linux核心啟動流程知道嗎(總是相似的問題)
    (3)linux下的字元裝置驅動程式程式設計(申請裝置號,註冊,實現 file_operation 結構體(read,write,open,ioctl等))
    (4)函數指標和指標函數
    (5)c語言熟練嗎?知道string庫函數裡的部分函數嗎,字串拼接函數,字串查詢函數,字串拷貝函數之類的
    (6)在C語言中,動態分配記憶體用的是malloc函數,釋放記憶體用free,一般在使用時候釋放完記憶體還應該做什麼?(我回答的是把指標指向為空,為了防止出現野指標)
    (7)其他人有面試JAVA開發的,就記得兩個問題:協程和執行緒池
    2、二面(HR,群面)
    (1)家庭情況
    (2)為什麼要來深圳
    (3)自己的優缺點
    (4)大學期間做過比較滿意的事情
    (5)導師時怎麼評價你的(優點和缺點)
    (6)手裡的offer情況
    還有一些常規性的HR問題,都比較容易回答,總體面試體驗

  • 深圳奮達科技(就一面技術面)
    當時就隨便去聽了一下宣講會,莫名其妙就去面試了,面的是軟體開發,我還是想做驅動
    (1)沒有自我介紹
    (2)你程式設計用的C多還是C++多呢,回答C。那用C語言實現一個把一個暫存器的bit3位置1,算是比較容易
    (3)開始問專案,氣象檢測板,mqtt 協定,I2C協定之類的
    (4)成績咋樣,四六級過了嗎?

  • 武漢恆為科技
    這個面試完真的是自我感覺都涼涼了,後來很快就收到感謝信了,我是去的他們公司,現場做筆試然後直接面試
    (1)自我介紹
    (2)針對筆試題,使用者空間和核心空間的通訊
    (3)資料庫會嗎(瞭解過,不深入,確實沒學過)
    (4)計算機網路咋樣(我只是有點基礎),TCP報文是怎麼組成的?
    (5)linux系統懂嗎(還行),那怎麼判斷一個linux系統是32位元還是64位元的呢

   檢視linux系統是64位的還是32系統:
   getconf LONG_BIT
   uname -a
   cat /proc/cpuinfo
   c語言編寫函數,輸出指標大小,為4則是32位,為8則是64

這是面試完百度的,當時只想到一種方法
(6)給定一個超大的文字檔案,有很多行,怎麼用C語言實現把這個檔案按行倒序輸出呢?(當時想的是棧,後來被面試官否定)
(7)給定四張撲克牌,怎麼通過四則運算得到值24呢,判斷可以不可以,然後輸出任意一個結果(當時想的是用回溯,但是還是沒有做出來)
(8)你還有什麼問題問我的嗎?

  • 湖南神鋒電子
    (1)自我介紹
    (2)瞭解大小端嗎?講一下原理,然後怎麼判斷一個機器是大端還是小端呢?(聯合體或者指標)
    (3)然後聊專案,幾個專案都講了一邊,主要問的還是mqtt協定和自己寫的論文,相關的機器學習演演算法;
    (4)I2C協定,SPI協定懂嗎?介紹
    (5)還有C語言中的一些 字元陣列 strlen 和 sizeof 的大小長度,還有 strlen 和 sizeof 分別是在程式執行的哪個期間計算值的?
    (6)然後問了一個演演算法:給定兩個遞增排序好的陣列,然後把陣列合併成一個也是遞增的陣列(我說的是用遞迴)
    (7)然後問了一個非程式設計題:給定一個天平,10瓶藥,但是10瓶藥中有兩瓶一個90g一個110g,其他的都是10g,怎麼一次就可以找到這兩瓶不同的藥呢?(當時想了比較久,沒答出來)
    (8)然後面試官開始介紹公司,他那邊給的是一個客戶技術支援的崗位。

  • 傑發科技
    1、一面(技術面)
    (1)自我介紹
    (2)介紹一下你的專案,氣象檢測板,mqtt 協定,板子是怎麼和阿里雲平臺進行通訊的,你在專案過程中遇到的什麼困難,怎麼解決的,一面主要問的就是專案的問題,這是我遇到的對專案挖的最細的一個公司吧。
    (3)然後另一個女生面試官問:TCP,UDP協定的區別,三次握手和四次分手的過程;linux下的TCP以及UDP程式設計;TCP使用者端和伺服器傳資料用到的什麼函數(read,write);
    (4)你有什麼要問我們的,一面主要問的是專案,微控制器型別以及微控制器最小系統這塊的。

1、二面(技術面,也算是+HR面)
(1)自我介紹
(2)用到的程式語言是C嗎,那C++瞭解嗎(瞭解一點),然後開始問C++的一些基礎知識;
(3)C++中類和結構體的區別
(4)動態繫結是什麼?
(5)virtual關鍵字的作用是什麼?(我開始聽錯了,聽成volatile了,英語不好的尷尬)
(6)虛擬函式定義以及作用?
(7)vector容器和list容器優缺點?
(8)我看你的專案上基本上都是裸機開發的,你用過作業系統嗎?用的什麼開發板?
(9)另一個面試官:你能講一下K-Means演演算法嗎,你是怎麼對他進行優化的呢,文字聚類是怎麼實現的呢,感覺這個面試官比較對論文感興趣。
(10)還有一些HR常問的問題:家庭情況,抗壓能力,自己的優缺點,愛好,期望薪資之類的。

  • 深圳開立醫療
    三輪面試一共1個半小時左右
    1、一面(技術面)
    (1)自我介紹
    (2)面試官直接說我會針對你的以下幾個方面進行問問題:C語言,資料結構,作業系統,計算機網路,沒問題吧?(內心慌得一批,強顏歡笑:沒問題)
    (3)C語言各種 sizeof 求值(陣列,結構體),包括位域,位元組對齊相關
    (4)瞭解排序演演算法嗎?講一下或者給你筆寫一下氣泡排序和快速排序的程式碼吧(還好我之前都自己實現過)
    (5)C語言中動態分配應該注意什麼(記憶體漏失什麼的)
    (5)陣列和連結串列的區別,單連結串列?雙向連結串列?迴圈連結串列?具體實現呢?二元樹?
    (6)linux作業系統的啟動過程(我把從bootloader到載入核心到載入檔案系統做了一個簡單的描述)
    (7)看過linux核心程式碼嗎?(只看過start_kernel函數,還有driver目錄下的部分驅動程式碼)
    (8)做過核心移植和uboot移植嗎?
    (9)TCP和UDP的區別,linux下TCP程式設計,都是常規的TCP問題
    (10)你有什麼問題問我呢?(工作內容)
    2、二面(綜合技術面)
    (1)自我介紹
    (2)介紹以下做過的專案,然後還是針對mqtt協定的一些問題,協定內容,協定的實現之類的
    (3)做過帶linux作業系統的驅動開發嗎(介紹了以下linux字元裝置驅動程式的開發流程),在做專案的過程中遇到過什麼問題?怎麼解決的?(確實遇到過,主要是記憶體對映這塊的,實體地址和虛擬地址的對映,還有MMU的作用之類的,看晶片手冊找到對應的暫存器實體地址去解決)
    (4)做過linux核心移植嗎?
    (5)有什麼問題問我的?(員工培養機制)
    3、三面(HR面)
    (1)來深圳的理由
    (2)家庭情況
    (3)大學期間做的比較好的事情,有什麼後悔的嗎?
    (4)期望薪資
    還有一些其他HR常問的問題,記不起來了。

中間也有其他面試,也可能有的問題記不起來了,都怪當時有些公司沒做記錄,問的問題感覺都比較相似,排版很醜,以後學一學如何排版。

結尾

  • 春招和秋招,畢業生不得不面對的一個問題,花時間準備和不花時間準備也會有很大的差別,當然,可能也有一定的運氣成分。
  • 回望這三個多月的過程,好像全都剛剛發生一樣,歷歷在目。三個月中酸甜苦辣都有了,只是還差時間去研磨。濃郁的茶香細細的品,沿途的風景慢慢的看。
  • 大多數人不快樂人,都是對自己的現狀不滿,又無法改變自己現狀。其實,不快樂的往往不是欠缺改變現狀的能力,幾乎都是因為懶和怕,所以就混和等。結果常常是一輩子都笑不出來。
    時間會給你最好的答案!
    在這裡插入圖片描述