秋招是每個在校學生都要經曆的一個階段。本篇文章記錄了自己的秋招曆程。秋招投遞公司23家,履歷被刷1家。筆試/測評挂掉3家。至今無消息的8家。獲得Offer的公司有小米,兆易創新,全志科技,浙江大華,海格通信,京信通信,景嘉微電子,廣州朗國電子,北京華大電子,中國長城科技集團。已簽約浙江大華。最後收獲了一個滿意的Offer。前事不忘,後事之師。希望自己總結的這些内容能對後面準備秋招的同學有所幫助!
1. 自我介紹
本碩雙非,大學電子資訊工程,碩士電子與通信工程。導師申請的項目中有一部分需要用Stm32實作,是以自己在碩士期間接觸Stm32比較多。當時也考慮到,如果隻會Stm32,找工作可能會比較吃力。而自己對嵌入式底層的内容也比較感興趣。是以,在研二的時候每天花一點時間來學習下驅動開發,以後找工作打算從事底層驅動開發相關的内容。
2. 秋招準備
2.1 Linux驅動
在2019年12月的時候,基本就把韋東山老師的第二期課程學習了一遍了,雖然在學習過程中有很多不明白的,但也堅持看了一遍。把有疑問的地方記錄了下來,打算後面再慢慢的去深入研究。
韋東山老師講的課程确實很好,但是對于基礎不太好的可能會比較吃力,很容易勸退。當時思考了下,自己為什麼聽不懂呢,哪裡有欠缺?我們對自己應該有一個清晰的認識,我從Stm32轉驅動開發,優勢就是我對于基本的硬體原理都比較熟悉,欠缺的是對于Arm架構的深入了解,作業系統和計算機組成原理的基本知識。是以,這個時候發現自己聽不懂的情況下,有些問題搞不明白,先不要深究,後面可以慢慢補。
今年疫情在家,在3月份的時候,對照自己之前的學習筆記和遺留的疑問,把之前學過的内容又看了下,當看第二遍的時候,對于很多問題也可以想清楚了。
考慮到驅動這塊沒有做過具體的項目,我就對照着韋東山老師的移植Uboot的視訊,自己移植了一遍。自己對于Uboot的啟動流程也就很熟悉了。既然打算把這個寫在履歷上,就要把這個啟動流程搞得特别明白,有些基本的源碼也是要知道的(比如,如何初始化NAND FLASH,時鐘如何配置的)。而且,寫在履歷上的面試官一定會問的。
2.2 Arm體系與架構
關于Arm的體系架構這部分是一定要看的。推薦一本書,杜春雷老師寫的《ARM體系結構與程式設計》,這本書其實就是ARMV7開發手冊的中文版,很多内容都是手冊裡面的。書的話不一定都要看,學習過程中,哪裡不了解再去查書,效果可能會更好。
2.3 資料結構與算法分析
資料結構與算法的内容時秋招中的重中之重,筆試必考,面試必考。是以這部分要好好準備。
資料結構的話大學也沒學過。4月份的時候開始在家,從基本的連結清單,二叉樹,堆,隊列,字元串,排序算法,查找算法等基礎内容學起。當時參考的資料是在網上找的一本PDF。裡面包含了基本資料結構的算法的實作。對着PDF資料邊看邊了解,自己動手去實作了一遍。剛開始學習資料結構的内容,一定要多畫圖,像連結清單的内容,不畫圖有時候可能不太好了解指針是如何指向的。總之要找到适合自己的學習方式。
圖論的内容比較難,如果不打比賽,可以直接跳過(隻針對嵌入式開發的同學)。還有字元串的KMP算法也比較難了解(其實刷題Leetcode題目之後就會發現,字元串比對的題目解法很多,不一定要KMP)。也可以先不看。
關于我寫的一些資料結構的内容,可以在資料結構與算法分析專欄中看到。大家可以參考下。
此外我還整理了下資料結構中比較重要的内容,在面試中一定要達到可以在白紙上寫的水準。具體如下圖所示。
在學習完基本的資料結構與算法的内容之後,接下來就是刷題了。我自己是在Leetcode上刷的題目。由于時間有限,我刷題一開始的政策是按照 題目類型 去刷題(參考了知乎各位大佬的刷題政策),主要内容集中在了連結清單,二叉樹,字元串,數組這四個部分。把這部幾個部分出現頻率高的題目都總結了出來。各個部分頻率總結連結。
【leetcode】高頻題目整理_所有題目彙總篇
(https://blog.csdn.net/qq_16933601/article/details/108913658)
面試leetcode題型總結
(https://zhuanlan.zhihu.com/p/158977583?utm_source=qq&utm_medium=social&utm_oi=805166261268004864)
刷題過程中會遇到一些特定算法的題目,比如滑動視窗,雙指針,動态規劃等。遇到這種題目,能解決的先解決掉,不能解決的後面可以按照算法類型統一解決。
最後,在筆試的時候,很多公司的大題的筆試系統其實并不是像Leetcode一樣隻寫個子函數就行了,而是和ACM競賽的類型一樣,需要自己處理輸入輸出。這部分一定要提前練習。如果不熟悉系統,筆試的時候雖然有思路,但是也寫不出來。建議提前熟悉下輸入輸出。
OJ線上程式設計常見輸入輸出練習場
(https://ac.nowcoder.com/acm/contest/5650)
2.4 C語言
C語言這部分的話,可以上網搜尋一些面試中經常問到的内容。這裡也推薦一本書,何昊老師寫的《程式員面試筆試寶典第三版》(不要找錯了)。這本書是針對C/C++程式員的,主要介紹了面試過程中經常問到的問題,整體的内容偏向底層,問題解釋的也比較清楚。但是有些地方有錯誤,看的時候要注意。可以加書後面的QQ群,向作者回報錯誤。
C++語言,平常用得少,我這部分就沒準備,給不了大家意見。在面試中好幾次問到我C++的指針引用之類的基礎知識,隻能和面試官說C++内容用得少,不熟悉。不過,這并不會成為面試官最後是否要你的決定性因素(隻針對嵌入式底層來說)。
2.5 作業系統&計組
這塊是我的軟肋,好多概念不太懂。不過在學習驅動的過程中,我把這些概念也都整理了一些。具體文章可以看下面的内容。
關于作業系統的一些知識,同樣是整理了網上常見的一些面試題目。這份嵌入式軟體開發知識點總結一共有13W字,涵蓋了Linux,C語言,Arm體系與架構,作業系統,計算機組成原理等方方面面的知識。我在秋招過程中問到的問題,在裡面基本都可以找到。這份資料給了我很大幫助。資料放在了公衆号【嵌入式與Linux那些事】中,大家可以關注後回複“秋招大禮包”免費自取。
2.6 項目經驗
如果自己做過一些項目的話,建議寫兩到三個自己做過的項目,主要從以下幾個方面介紹:
項目名稱:基于XXX的XXX
個人角色:項目負責人/子產品負責人
起止時間:2020.3~2020.6
項目描述:主要介紹項目主要内容,4句話即可。
程式設計語言和環境:gcc3.4.2,Ubuntu16.04,S3C2440開發闆
負責事宜:寫自己做了哪些内容,第一,XXXX;第二,XXXX;第三,XXX;
如果沒有做過項目,可以去找一些開源的項目做一下(韋東山老師第三期的視訊中有相關項目的介紹),比如移植Uboot,數位相框等(韋老師最新的IMX6ULL開發闆已經有了更加高大上的項目,也可以寫在履歷中)。但是不要找那種爛大街的,比如XXX管理系統,五子棋,貪吃蛇。說實話,這些東西再怎麼做,一聽這個名字面試官就會沒興趣了。
我們也可以适當“包裝”自己的項目,我這個項目是導師申請的國家自然科學基金項目(或者XX省科技重大專項)的一部分,這個項目主要是完成XX技術的攻關。我這個項目是和XX部隊(XX高校)合作的項目,我們負責XX部分。這麼一寫的話“檔次”是不是就上去了呢?但是這裡不是讓大家在履歷中去造假,在履歷中造假是不能接受的,這是一個人基本的道德底線!
自己寫上去的項目一定要搞清楚,弄得明明白白。有好幾次面試中,面試官讓我講你做的這個東西原理是什麼。由于原理比較複雜,是以面試中,我都是邊畫圖邊講,涉及到的公式還要進行推導,為什麼這樣做,都得給面試官講清楚。如果他沒有聽懂,那就是我們沒有講清楚。
說了這麼多,其實主要就是弄清楚這幾個問題:為什麼做這個項目?一共幾個人做?你是什麼角色?你做了哪些部分?你認為最難得地方是什麼?如何解決的?最後收獲是什麼?。
事實上,我們所做的東西是什麼,面試官并不太在意,畢竟公司做的東西比我們要複雜的多,對比公司的産品來說,我們的簡直太low了,我們所做的可能隻是個“玩具”而已。面試官主要考察的就是項目的真實性和我們的表達能力。
也可以參考下其他人整理的“如何在面試中介紹自己的項目經驗”。
(https://blog.csdn.net/qq_16933601/article/details/110875518)
2.7 其他
至于其他内容,主要有以下幾個方面吧。
1.不要放過任何一次和面試官聊天的機會(發哥和我說的,受益匪淺)。
今年疫情在家的時候,請教了發哥關于校招找一份什麼樣的工作,嵌入式軟體工程師的職業規劃等問題,非常感謝發哥在晚上十點多手打了1000多字解答我的疑惑。特别強調了,在校生要抓住校招的機會,提前準備,多和面試官聊聊天。和發哥聊完後自己對于整個行業有了更清楚的認識,謝謝發哥!
多面試!多面試!多面試!重要的話說三遍!看到有合适的公司要盡早投遞,不要到後面沒有HC了。
比如我投遞華為是在9.10号。筆試在9.14。雖然筆試過了,測評也過了。但是這個時候其實有點晚了(也可能和投遞的部門有關系)。部門的HR和我說,他們第一批的面試已經結束了,上司要求這段時間要形成閉環。第二批還會有一些HC,但是在10月之後了,而且名額也不會太多了。相反,投遞其他部門的同學,在9.19-9.24這周都收到了面試通知。
其剛開始前幾次面試肯定會有些緊張,不知所措。但是當你面了三五場之後,你就會發現,面試官問的東西都是差不多的。我在9月中下旬,最多的一天面了4場。有句話說得好,吹牛X吹多了,後面也就很自然了。
2.回答問題一定要有邏輯性!先抛出結論,再分要點回答。
比如,面試官問你平常你是如何學習專業知識的?以什麼樣的方式?
答:學習的形式主要分為兩種:一種是在學習的過程中解決疑問,以解決問題為導向。比如,在移植Uboot的過程中,我會想到為什麼要關閉I-Cache,D-Cache等,關閉中斷等(這裡可以抛出這些問題,以防後面會問),遇到這些問題我就會記錄下來,然後上網去查資料。在解決這些問題的過程中,可能會遇到其他的問題,繼續查找相關資料,直到最後都搞清了。第二種就是系統的學習,如果有比較充足的時間,我會去拿着像Arm體系和架構,深入了解計算機系統這些書去一點一點的讀。去了解這些内容。以上就是我日常的一個學習方式。
3.自我介紹。
自我介紹是面試中必不可少的部分。面試官一般會利用自我介紹的時間來浏覽下你的履歷。建議準備一個一分鐘的自我介紹和三分鐘的自我介紹。我在面試小米的時候,面試官直接打斷我,說自我介紹簡單一點,要不後面沒有時間寫代碼了。
我的自我介紹主要是三部分,第一部分是開場白,名字,學校,專業,應聘崗位,應聘該崗位的原因。第二部分是項目經驗的簡單介紹,這裡一定要簡潔,主要說下自己做了那些東西。第三部分是學習能力的介紹,這部分是為了抛出自己寫部落格的情況,有技術部落格并且部落格的内容比較充實的話,在面試中确實是個加分項。
4.履歷填寫
投遞履歷時常常需要在各個網站填寫自己的個人資訊。建議使用如下工具,可以友善的在各個網站自動識别填充所需内容。當然,也有許多識别不了的。這種就沒辦法了。當然,如果大家有其他工具也可以推薦!
牛客履歷助手
(https://www.nowcoder.com/quick-fill/show-edit#form)
5.最後要知道一些知識
連結如下Offer,三方,兩方,毀約 這些你需要知道的事
(https://www.nowcoder.com/discuss/144015)
3. 書籍推薦
C語言
C Primer Plus,C缺陷和陷阱,C和指針,C專家程式設計
資料結構
大話資料結構,資料結構與算法描述-C語言描述。
硬體原理
Arm體系結構與程式設計,Armv7/Armv9資料手冊。
Linux驅動
嵌入式Linux應用開發完全手冊,Linux裝置驅動開發詳解,Linux裝置驅動程式
Linux應用程式設計
Unix環境進階程式設計,Unix環境網絡程式設計
計算機基礎
深入了解計算機系統,現代作業系統,計算機組成與設計:硬體軟體接口,計算機體系結構:量化研究方法
Linux核心
Linux核心完全注釋(麻雀雖小五髒俱全),Linux核心設計與實作,Linux核心源代碼情景分析
以上書籍加粗的為重點推薦。如果時間不充裕,可以當作工具書來查詢。當然,有時間還是建議認真讀下。
需要電子書的可以在公衆号【嵌入式與Linux那些事】回複“電子書”領取,或者點選右下角加QQ群,群裡也有整理的相關資料。
4. 未來展望
1.接下來的時間準備下大論文的内容,之前投的第二篇小論文有了審稿意見,隻是沒改而已,今年過年之前投出去吧。保證自己順利畢業!
2.補充下作業系統和計算機組成原理的知識。主要看下《深入了解計算機系統》 《現代作業系統》這兩本書把,每周把看過的東西總結下,照常輸出一篇部落格。這部分是最主要的内容,把基礎打紮實了。
3.作業系統和計算機組成原理的知識形成部落格專欄,堅持!
4.堅持每周的跑步,打球。
5.公衆号打算主要分享C/C++,資料結構與算法,Linux驅動開發,計算機基礎等内容。寫公衆号和寫部落格還不太一樣。是以,接下來我會考慮下如何在自己能力範圍内寫一系列内容。大家有任何意見和建議均可以聯系我。
6.期待入職大華,即将開啟一段新的旅程,充滿了未知和挑戰,要繼續加油鴨!
5. 總結
秋招結束了,今年感覺好難,好多公司縮招。在九月初有段時間,心情很低落,一直在懷疑自己。特别是投遞履歷後,漫長的等待。每天都會檢視好幾遍郵箱,生怕錯過了重要的通知。心情不好的時候,我就會去操場邊聽音樂邊跑步,特别喜歡大汗淋漓的感覺。跑完之後整個人的精神狀态會好很多。調整好心态,繼續看面經,刷題,總結基礎知識!
綜合考慮了下,最後選擇了浙江大華,主要原因是給了一個讓我無法拒絕的理由。自己也詢問了在裡面的師兄師姐,他們說還可以,加班的話沒有網上說的那麼可怕。自己提前做完的話,是可以走的。而且組内打個招呼,有急事也可以請假。加班一般到八點半,對于自己來說其實也可以接受。至于雙休的話,是看部門,不忙的話雙休都有,忙的話大小周休息等。個人還算比較滿意。
6. 緻謝
剛開始拿到Offer後不知道該如何抉擇,父母那邊倒是沒有太大的問題,說哪裡工作合适就去哪裡。很感謝我的父母可以支援我。當時咨詢了發哥,逸珺哥,平哥,朱老師,豆豆姐等,還有在投遞履歷前也請教了下肖遙哥。非常感謝這些前輩能給我建議!
2020年疫情在家期間,自己對于找一份什麼樣的工作并沒有明确的規劃。于是咨詢了發哥關于校招,職業發展的問題。發哥大晚上的手打了1000多字回複我,特别強調要重視校招,多和面試官聊天,把握機會。在職業發展規劃上,發哥向我介紹了底層驅動是做什麼的,在不同的公司扮演什麼角色,以及未來的晉升通道等。應聘的時候,要多些自信,努力把握好人生的選擇點,在沒有做選擇前,不要把話說死,把方向定死。很多校招企業更看重的是可培養性,進入企業後都是按照一張白紙來培養的。
投履歷前,咨詢了下肖遙哥在校招中是選擇崗位還是選擇公司的問題。肖遙哥說,崗位重要,再好的公司如果做的不是你喜歡的擅長的,那麼你可能在這家公司也不會長久,不管做那個方向,做那個行業,還是在一個方面要專注,堅持。
在選擇Offer的時候也咨詢了下逸珺哥,待遇差不多的情況下,考慮公司發展前景以及地域,但要優先考慮公司行業以及前景。也要考慮以後定居等問題,比如是否能落戶,這個和以後孩子的教育也有些關系。但是要找到興趣,待遇,地點等各方面都能滿足的工作還是有點難度的。
小平哥說,要注意下你應聘的職位和你進去從事的工作内容是否是一樣的。在公司如果從事的方向正好是公司的主要業務,你會學到更多的東西。考慮定居的問題,是幹幾年回老家,還是找個宜居的城市呢?一線城市的壓力是會大一點,但是機會也會多一點。如果回老家或者周邊,公司的規模和待遇等就會比一線城市差一點。
朱老師說,你擔心的地域問題和年齡問題都不是事,完全可以幹幾年再跳走。而且,你要相信個人機緣就是最好的安排。這種問題沒有标準答案,紫光存在不确定性,對于目前的來說,還是先落袋為安吧。杭州也是個不錯的城市,工作機會也比較多,完全可以支援你未來三到五年的發展。晶片原廠也不一定是最好的,第一份工作隻要在品質上沒有問題,後面還是容易跳槽的。
豆豆姐,第一份工作,跟對人很重要。大公司有成熟的培養體系。剛開始工作,左右對比也很正常。工作本身,無論哪個崗位都能曆練自己。不是賺到,就是學到,關乎己心。工作無非也是借境修心。自己私下仔細一想,不管是工作還是生活,确實是這麼個道理,很贊!