秋招是每個在校學生都要經歷的一個階段。本篇文章記錄了自己的秋招歷程。秋招投遞公司23家,簡歷被刷1家。筆試/測評掛掉3家。至今無訊息的8家。獲得Offer的公司有小米,兆易創新,全志科技,浙江大華,海格通訊,京信通訊,景嘉微電子,廣州朗國電子,北京華大電子,中國長城科技集團。已簽約浙江大華。最後收穫了一個滿意的Offer。前事不忘,後事之師。希望自己總結的這些內容能對後面準備秋招的同學有所幫助!
1. 自我介紹本碩雙非,本科電子資訊工程,碩士電子與通訊工程。導師申請的專案中有一部分需要用Stm32實現,所以自己在碩士期間接觸Stm32比較多。當時也考慮到,如果只會Stm32,找工作可能會比較吃力。而自己對嵌入式底層的內容也比較感興趣。所以,在研二的時候每天花一點時間來學習下驅動開發,以後找工作打算從事底層驅動開發相關的內容。
2. 秋招準備2.1 Linux驅動在2019年12月的時候,基本就把韋東山老師的第二期課程學習了一遍了,雖然在學習過程中有很多不明白的,但也堅持看了一遍。把有疑問的地方記錄了下來,打算後面再慢慢的去深入研究。
韋東山老師講的課程確實很好,但是對於基礎不太好的可能會比較吃力,很容易勸退。當時思考了下,自己為什麼聽不懂呢,哪裡有欠缺?我們對自己應該有一個清晰的認識,我從Stm32轉驅動開發,優勢就是我對於基本的硬體原理都比較熟悉,欠缺的是對於Arm架構的深入瞭解,作業系統和計算機組成原理的基本知識。所以,這個時候發現自己聽不懂的情況下,有些問題搞不明白,先不要深究,後面可以慢慢補。
今年疫情在家,在3月份的時候,對照自己之前的學習筆記和遺留的疑問,把之前學過的內容又看了下,當看第二遍的時候,對於很多問題也可以想清楚了。
2.2 Arm體系與架構關於Arm的體系架構這部分是一定要看的。推薦一本書,杜春雷老師寫的《ARM體系結構與程式設計》,這本書其實就是ARMV7開發手冊的中文版,很多內容都是手冊裡面的。書的話不一定都要看,學習過程中,哪裡不瞭解再去查書,效果可能會更好。
2.3 資料結構與演算法分析資料結構與演算法的內容時秋招中的重中之重,筆試必考,面試必考。所以這部分要好好準備。
資料結構的話本科也沒學過。4月份的時候開始在家,從基本的連結串列,二叉樹,堆,佇列,字串,排序演算法,查詢演算法等基礎內容學起。當時參考的資料是在網上找的一本PDF。裡面包含了基本資料結構的演算法的實現。對著PDF資料邊看邊理解,自己動手去實現了一遍。剛開始學習資料結構的內容,一定要多畫圖,像連結串列的內容,不畫圖有時候可能不太好理解指標是如何指向的。總之要找到適合自己的學習方式。
圖論的內容比較難,如果不打比賽,可以直接跳過(只針對嵌入式開發的同學)。還有字串的KMP演算法也比較難理解(其實刷題Leetcode題目之後就會發現,字串匹配的題目解法很多,不一定要KMP)。也可以先不看。
關於我寫的一些資料結構的內容,可以在資料結構與演算法分析專欄中看到。大家可以參考下。
此外我還整理了下資料結構中比較重要的內容,在面試中一定要達到可以在白紙上寫的水平。具體如下圖所示。
在學習完基本的資料結構與演算法的內容之後,接下來就是刷題了。我自己是在Leetcode上刷的題目。由於時間有限,我刷題一開始的策略是按照 題目型別 去刷題(參考了知乎各位大佬的刷題策略),主要內容集中在了連結串列,二叉樹,字串,陣列這四個部分。把這部幾個部分出現頻率高的題目都總結了出來。各個部分頻率總結連結:
刷題過程中會遇到一些特定演算法的題目,比如滑動視窗,雙指標,動態規劃等。遇到這種題目,能解決的先解決掉,不能解決的後面可以按照演算法型別統一解決。
最後,在筆試的時候,很多公司的大題的筆試系統其實並不是像Leetcode一樣只寫個子函式就行了,而是和ACM競賽的型別一樣,需要自己處理輸入輸出。這部分一定要提前練習。如果不熟悉系統,筆試的時候雖然有思路,但是也寫不出來。建議提前熟悉下輸入輸出。
2.4 C語言C語言這部分的話,可以上網搜尋一些面試中經常問到的內容。這裡也推薦一本書,何昊老師寫的《程式設計師面試筆試寶典第三版》(不要找錯了)。這本書是針對C/C++程式設計師的,主要介紹了面試過程中經常問到的問題,整體的內容偏向底層,問題解釋的也比較清楚。但是有些地方有錯誤,看的時候要注意。可以加書後面的QQ群,向作者反饋錯誤。
C++語言,平常用得少,我這部分就沒準備,給不了大家意見。在面試中好幾次問到我C++的指標引用之類的基礎知識,只能和麵試官說C++內容用得少,不熟悉。不過,這並不會成為面試官最後是否要你的決定性因素(只針對嵌入式底層來說)。
2.5 作業系統&計組這塊是我的軟肋,好多概念不太懂。不過在學習驅動的過程中,我把這些概念也都整理了一些。具體文章可以看下面的內容。
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了,我們所做的可能只是個“玩具”而已。面試官主要考察的就是專案的真實性和我們的表達能力。
2.7 其他至於其他內容,主要有以下幾個方面吧。
1.不要放過任何一次和麵試官聊天的機會(發哥和我說的,受益匪淺)。
多面試!多面試!多面試!重要的話說三遍!看到有合適的公司要儘早投遞,不要到後面沒有HC了。
比如我投遞華為是在9.10號。筆試在9.14。雖然筆試過了,測評也過了。但是這個時候其實有點晚了(也可能和投遞的部門有關係)。部門的HR和我說,他們第一批的面試已經結束了,領導要求這段時間要形成閉環。第二批還會有一些HC,但是在10月之後了,而且名額也不會太多了。相反,投遞其他部門的同學,在9.19-9.24這周都收到了面試通知。
其剛開始前幾次面試肯定會有些緊張,不知所措。但是當你面了三五場之後,你就會發現,面試官問的東西都是差不多的。我在9月中下旬,最多的一天面了4場。有句話說得好,吹牛X吹多了,後面也就很自然了。
2.回答問題一定要有邏輯性!先丟擲結論,再分要點回答。
比如,面試官問你平常你是如何學習專業知識的?以什麼樣的方式?
答:學習的形式主要分為兩種:一種是在學習的過程中解決疑問,以解決問題為導向。比如,在移植Uboot的過程中,我會想到為什麼要關閉I-Cache,D-Cache等,關閉中斷等(這裡可以丟擲這些問題,以防後面會問),遇到這些問題我就會記錄下來,然後上網去查資料。在解決這些問題的過程中,可能會遇到其他的問題,繼續查詢相關資料,直到最後都搞清了。第二種就是系統的學習,如果有比較充足的時間,我會去拿著像Arm體系和架構,深入理解計算機系統這些書去一點一點的讀。去理解這些內容。以上就是我日常的一個學習方式。
3.自我介紹。
自我介紹是面試中必不可少的部分。面試官一般會利用自我介紹的時間來瀏覽下你的簡歷。建議準備一個一分鐘的自我介紹和三分鐘的自我介紹。我在面試小米的時候,面試官直接打斷我,說自我介紹簡單一點,要不後面沒有時間寫程式碼了。
我的自我介紹主要是三部分,第一部分是開場白,名字,學校,專業,應聘崗位,應聘該崗位的原因。第二部分是專案經驗的簡單介紹,這裡一定要簡潔,主要說下自己做了那些東西。第三部分是學習能力的介紹,這部分是為了丟擲自己寫部落格的情況,有技術部落格並且部落格的內容比較充實的話,在面試中確實是個加分項。
4.簡歷填寫
投遞簡歷時常常需要在各個網站填寫自己的個人資訊。建議使用如下工具,可以方便的在各個網站自動識別填充所需內容。當然,也有許多識別不了的。這種就沒辦法了。當然,如果大家有其他工具也可以推薦!
5.最後要知道一些知識
3. 書籍推薦C語言C Primer Plus,C缺陷和陷阱,C和指標,C專家程式設計
資料結構大話資料結構,資料結構與演算法描述-C語言描述。
硬體原理Arm體系結構與程式設計,Armv7/Armv9資料手冊。
Linux驅動嵌入式Linux應用開發完全手冊,Linux裝置驅動開發詳解,Linux裝置驅動程式
Linux應用程式設計Unix環境高階程式設計,Unix環境網路程式設計
計算機基礎深入理解計算機系統,現代作業系統,計算機組成與設計:硬體軟體介面,計算機體系結構:量化研究方法
Linux核心Linux核心完全註釋(麻雀雖小五臟俱全),Linux核心設計與實現,Linux核心原始碼情景分析
以上書籍加粗的為重點推薦。如果時間不充裕,可以當作工具書來查詢。當然,有時間還是建議認真讀下。
4. 未來展望1.接下來的時間準備下大論文的內容,之前投的第二篇小論文有了審稿意見,只是沒改而已,今年過年之前投出去吧。保證自己順利畢業!
2.補充下作業系統和計算機組成原理的知識。主要看下《深入理解計算機系統》 《現代作業系統》這兩本書把,每週把看過的東西總結下,照常輸出一篇部落格。這部分是最主要的內容,把基礎打紮實了。
3.作業系統和計算機組成原理的知識形成部落格專欄,堅持!
4.堅持鍛鍊身體,每週視天氣情況而定,跑步2~3次,週末打打球。
5.期待入職大華,即將開啟一段新的旅程,充滿了未知和挑戰,要繼續加油鴨!
5. 總結秋招結束了,今年感覺好難,好多公司縮招。在九月初有段時間,心情很低落,一直在懷疑自己。特別是投遞簡歷後,漫長的等待。每天都會檢視好幾遍郵箱,生怕錯過了重要的通知。心情不好的時候,我就會去操場邊聽音樂邊跑步,特別喜歡大汗淋漓的感覺。跑完之後整個人的精神狀態會好很多。調整好心態,繼續看面經,刷題,總結基礎知識!
綜合考慮了下,最後選擇了浙江大華,主要原因是給了一個讓我無法拒絕的理由。自己也詢問了在裡面的師兄師姐,他們說還可以,加班的話沒有網上說的那麼可怕。自己提前做完的話,是可以走的。而且組內打個招呼,有急事也可以請假。加班一般到八點半,對於自己來說其實也可以接受(現在不加班的公司太少了)。至於雙休的話,是看部門,不忙的話雙休都有,忙的話大小週休息。個人還算比較滿意。
6. 致謝剛開始拿到Offer後不知道該如何抉擇,父母那邊倒是沒有太大的問題,說哪裡工作合適就去哪裡。很感謝我的父母可以支援我。當時諮詢了發哥,逸珺哥,平哥,朱老師,豆豆姐等,還有在投遞簡歷前也請教了下肖遙哥。非常感謝這些前輩能給我建議!
2020年疫情在家期間,自己對於找一份什麼樣的工作並沒有明確的規劃。於是諮詢了發哥關於校招,職業發展的問題。發哥大晚上的手打了1000多字回覆我,特別強調要重視校招,多和麵試官聊天,把握機會。在職業發展規劃上,發哥向我介紹了底層驅動是做什麼的,在不同的公司扮演什麼角色,以及未來的晉升通道等。應聘的時候,要多些自信,努力把握好人生的選擇點,在沒有做選擇前,不要把話說死,把方向定死。很多校招企業更看重的是可培養性,進入企業後都是按照一張白紙來培養的。
投簡歷前,諮詢了下肖遙哥在校招中是選擇崗位還是選擇公司的問題。肖遙哥說,崗位重要,再好的公司如果做的不是你喜歡的擅長的,那麼你可能在這家公司也不會長久,不管做那個方向,做那個行業,還是在一個方面要專注,堅持。
在選擇Offer的時候也諮詢了下逸珺哥,待遇差不多的情況下,考慮公司發展前景以及地域,但要優先考慮公司行業以及前景。也要考慮以後定居等問題,比如是否能落戶,這個和以後孩子的教育也有些關係。但是要找到興趣,待遇,地點等各方面都能滿足的工作還是有點難度的。
小平哥說,要注意下你應聘的職位和你進去從事的工作內容是否是一樣的。在公司如果從事的方向正好是公司的主要業務,你會學到更多的東西。考慮定居的問題,是幹幾年回老家,還是找個宜居的城市呢?一線城市的壓力是會大一點,但是機會也會多一點。如果回老家或者周邊,公司的規模和待遇等就會比一線城市差一點。
朱老師說,你擔心的地域問題和年齡問題都不是事,完全可以幹幾年再跳走。而且,你要相信個人機緣就是最好的安排。這種問題沒有標準答案,紫光存在不確定性,對於目前的來說,還是先落袋為安吧。杭州也是個不錯的城市,工作機會也比較多,完全可以支援你未來三到五年的發展。晶片原廠也不一定是最好的,第一份工作只要在質量上沒有問題,後面還是容易跳槽的。
豆豆姐,第一份工作,跟對人很重要。大公司有成熟的培養體系。剛開始工作,左右對比也很正常。工作本身,無論哪個崗位都能歷練自己。不是賺到,就是學到,關乎己心。工作無非也是借境修心。自己私下仔細一想,不管是工作還是生活,確實是這麼個道理,很贊!