嵌入式 面試 單片機 軟件 硬件

嵌入式er如何提高面試成功率?聽前輩細細道來

2019-06-27
190次瀏覽

在開頭還是要簡單啰嗦一點所有面試都要注意的細節,雖然也許人盡皆知,但把控好整個面試的流程才是制勝關鍵:


1、自我介紹


準備一段1分鐘之內的自我介紹,包含基本的個人消息,項目信息,獲獎信息等。不要太長,簡歷上有的盡量簡練。


2、項目描述

技術面試時,通常都會讓描述下自己做過的項目。所以要將自己做過的項目整理,準備兩個方面:


(1) 項目的內容(市場需求、功能等)

(2) 涉及的關鍵技術(技術亮點重點突出)


面試時,表達力求清晰。


3、常見問題


1) 終面時,面試官一般都會說,你有什么問題要問嗎?

2) 對公司的產品有了解嗎?

3) 你的薪酬期望是多少?

4) 你在學校的表現怎樣?

5) 你家里人怎么看待你留在xx地方工作?

6) 你希望從事哪個方面的開發?

7) 你的職業規劃是什么?

8) 你為什么選擇留在xx地方工作?

9)自己的優缺點?有些缺點(如不善于交流,其實大家都差不多,不要對自己失去信心),自己知道就好了,不要說給面試官,但也不要說自己的缺點是優點太多,這個原因很明顯。面試官喜歡有合作精神,交流能力比較好的。盡量突出自己的優點。

10) 遇到的最大挫折?或者項目中遇到的難題是什么?怎么解決的?

11) 請給出一個能留下來的理由?或者你的優勢在哪里?


4、簡歷


這個很重要,可以結合圖文的形式,建議做精美一點。如果做的東西很多,可以多寫一點,但要注意排版,技術面試官一般會比較關心項目。


我簡歷做了3個版本(1頁版,2頁版(1頁文字+1頁圖片),4頁版)。實踐證實,4頁版(1.5頁文字+2.5頁圖)效果最佳,1頁版的基本都石沉大海了。


5、做好面試記錄和總結


不要面試時,投遞的公司和崗位都忘記了。另外,每次面試都要總結下自己哪里做的不好,哪個問題卡殼了,下去搞明白,做到每次面試都有所收獲,盡量不讓車費白白浪費。


投遞公司我分了兩個類:已投遞(整理投遞信息),已面試(整理面試經驗)。建議保留公司的職位要求信息,便于準備。還有一定要對自己面試的公司有所了解(產品,企業文化了解是最好不過了)。


6、其他方面


1、衣著整潔要得體

2、求職資料要備齊

3、請勿陪同或攜伴

4、稱呼儀態要得當

5、溝通表達要求清晰流暢

6、 講禮儀,不要遲到


嵌入式找工作校招上究竟是怎樣的,什么最重要?簡歷該怎么做?嵌入式工程師YellowMax如是說:(來源:嵌入式Max)


說實話,面了這么多家公司,覺得校招最注重的還是基礎能力與理論。對于嵌入式Linux開發類職位來說,最重要的是C語言基本功底,對C語言要了解的十分透徹,比如C語言的面向對象編程,怎么用C語言去實現面向對象類高級語言的繼承、多態、封裝。達到熟練掌握數據結構,尤其是鏈表。對于指針不能僅停留在取址、加減運算這基本印象上,至少要達到知道指針與數組名的區別,知道char、int等指針類型的區別以及它們的相互轉換方法,知道函數指針與指針函數的使用以及區別等等。在學習過程中要找準自己的方向,不要去過度追求各種金光閃閃的框架以及語言的奇淫技巧,學習過程中要注重各個知識背后的原理,而不是僅僅會用。

校招的優點(相對社招)

  • 對應聘者的專業實踐技能要求不是很高,更多看重理論基礎

  • 大公司校招很多,是進入到大公司工作的好途徑

  • 公司經過學校進行一輪初級篩選,會主動為應聘者避開一些坑人的公司

  • 地點集中,都是公司去學校招聘,不必滿世界跑來跑去,節省時間財力


準備

  1. 職業方向的選擇
    我其實很早之前就在為工作做準備了,具體開始時間是大二的暑假,那個時候有段時間專門請教了多個學長,網上查詢了很多資料,結合自己的專業與興趣,最后選擇了嵌入式Linux開發這個職位方向。

  2. 資料的收集與學習
    當時選定方向之后就一直在網上找相關的學習資料,想著要找到一份比較系統完善的學習資料,這樣可以在學習的過程中節省很多的時間精力,最后找到了韋東山的嵌入式學習視頻,狠下心來買了一個開發板以及視頻的二三期(這里怎么這么像打廣告,不過這個視頻確實不錯,售后也比較給力),這個算是我的嵌入式啟蒙了,至今仍然非常感謝錄制視頻的人,讓我學到了很多有用的東西。同期,我實驗室里面有兩位同學在一個嵌入式的班參加培訓,我還記得好像是信盈達,大家一同學習,相互打雞血,學習過程也就不顯得太過無聊。


臨近2017年的校招,那個時候是2016年的7、8月份,我開始為正式的校招做近期準備了,準備的內容包括以下方面:

  • 簡歷

  • 學習并熟悉校招流程

  • 找一些嵌入式類的筆試題去練習

  • 公司宣講會信息搜集


另外推薦兩個非常好用的網站,有網頁客戶端也有手機APP。

  1. 海投網:該網站是從各個高校的首頁里面抓取招聘信息,然后整理集合到網站頁面中,并且可以選擇城市地區,簡直是一個校招信息收集的神奇,極大地節省了自己去各個地方搜集招聘信息的時間精力,并且信息還比較全面,值得使用。

  2. 看準網:該網站里面有各大公司的面試經歷,點評以及薪資平均值統計等等,但是需要自己上傳面試經歷等來獲得查看所有信息的權限,自己找點學長的面試經歷或者別的,填上去過了審核就可以隨意查看各種信息啦,里面的信息很有參考價值。


由于我是畢業于一個普通的二本院校(雖然專業是一本),所以很多嵌入式的公司并不會鳥我們學校,由于離武漢比較近,并且往屆的很多學長也是去的武漢,再者還有一位實驗室的大牛也要去武漢參加校招,所以就決定跟他一塊去武漢碰碰運氣,也因此我還額外準備了武漢地區校招攻略,什么雜七雜八的生活用品,準備在武漢血戰一個月。

簡歷的書寫

簡歷的問題我跟實驗室那位大牛前前后后搞了一個月左右,期間咨詢過老師,網上搜集無數模板,知乎上也找了不少相關話題,參考往屆學長學姐的簡歷,最后終于搞出了一版還算滿意的簡歷。
簡歷的書寫要遵循以下幾點(必須遵守):

  • 簡潔,頁數必須控制在一頁以內(最重要)。

  • 實習經驗優于項目經驗優于與職位不相關的項目,每個條目用2-3行概括,抓關鍵詞,突出項目所涉及的知識點。

  • 不要出現錯字、病句、標點符號使用錯誤、排版不整齊、英文大小寫不一致、中文數字與阿拉伯數字混用等(一個都不要有)。

  • 內容要包括個人信息、教育經歷、專業技能、項目作品、所獲獎項、 在校任職等。

  • 不要寫不會或者不熟悉的知識點,寫上去的必須保證能夠脫口而出并且沒有錯誤。

  • 盡量不要出現精通的字樣。

  • 需要突出的技能點加粗(注意:只有技能欄,別的地方再隨意加粗就顯得太亂了)。


這里給出一份簡歷模板,不一定符合每一個人,但是絕對很有指導意義:

圖片.png


對于其中的幾點說明:

  • 由于面積受限,所以文字內容框比word默認標準的A4紙文字框大

  • 個人鏈接完全是想要面試官知道有這么個東西,同學也曾提醒過我,在紙質簡歷上放鏈接就是浪費地方,但是從實際結果來看,還是有用處的,這個因人而異吧

  • 項目作品或者實習經歷最好不要少于三個

  • 多采用關鍵字描述,節省字數

??說起簡歷的問題,又想到了去武漢面試的時候見到的華科同學的簡歷,開頭大大的學校名以及學校logo,目測占去了整張簡歷的1/5,這個真的不是夸張。對于這些名牌大學來說,學校真的是整個簡歷上面最耀眼的地方了,當然要大書特書(感覺我語氣有點酸哎),而咱這種二流的學校,既不想讓學校太過顯眼,又不能說讓面試官看半天還找不到學校名,于是就悄么嘰兒的稍微往下放一點,也算是不卑不亢了哈。最后,學校不是很好的就千萬不要學人家華科的孩子們啦,省點空間寫點真正有用的東西是首要的。

出發去武漢

至今仍然清楚地記得,出發去武漢的日子是9.1號,臥鋪,兩個人(實驗室同學同行),歷經9個小時。由于打算在武漢長期奮斗,所以兩個人都拖著大包小包,異常笨重,當天夜晚走的,第二天下車到華科的時候已經是中午十點左右了。兩個人就隨便買了點東西,拖著大箱子在華科的校園里面隨便晃一晃,邊走邊吃邊聊,順便感受一下華科的環境氛圍。

由于第一次去武漢,首先要做的就是找住的地方,作為學生,當然就要找經濟一點的地方啦。住的地方有多種選擇,比如:

  • 酒店:數量較多,價格較貴。沒有住過,武漢的一個如家一個月是2000,覺得較貴就沒有住(窮學生的痛處)。

  • 青年旅舍:數量較多,價格便宜。這種一般是一間房子里面住很多人,洗漱什么的超級不方便,在武漢大概是每天30元的樣子,我跟我同學只住了一天,因為人太多,我個人比較難以忍受,只在里面住了一天就拖著同學另尋住處。

  • 小旅館:數量中等,價格便宜。學校旁邊比較常見(你懂得),這種小旅館按月來訂的話是有優惠的,比如我們一個房間是70一晚,然后按月來訂的話就是每晚50,合計每人25,由于我不喜歡與人一塊擠在一張床上睡,就打地鋪,同學睡床上。

  • 學校招待所:據說有,但是沒有找到,于是作罷,但是有些學校是有的,價格極其便宜。


中間還有一件事情,就是在武漢待得時間較長了,想要去剪一次頭發,于是手機搜索好不容易找到一家最近的,一看,洗剪吹20,心想,雖然比在學校貴了點,但是還能夠接受,但是同學覺得不太對,于是進門的時候問了一句,原來是洗剪吹各20,臥槽,當時心里就開始懷疑人生,于是剪發作罷,堅持了一個月沒理發,回校的時候頭發都長老長。(寫著寫著就心疼當時的自己)

慘烈的校招

經過兩天的休整,9.4號就開始在網上找相應的招聘信息了,這個時候必須先說一下校招的基本流程:

  • 收集招聘信息
    收集信息主要指的是企業宣講會信息的收集,包括企業開辦宣講會的時間、地點、是否有筆試等等信息。這里安利一個網站—-海投網, 有手機 APP 和網站,里面的信息都是從各大學校的招聘門戶拉取過來的,不用一個一個去學校網站查找信息,省去了大量的時間。收集招聘信息有以下幾個注意事項:

    1. 注意時間問題。同一個公司的宣講會一般會在多個學校召開,最好去到該公司的官網上面去看看宣講會行程。協調好各個想去的公司的時間去參加宣講會。

    2. 特別注意一些有注明現場筆試或者現場接受簡歷的宣講會信息,這些是重點關注的。因為現在有很多公司校招都是網投簡歷了,網投簡歷有的不能用自己寫好的簡歷,而是網站上面的簡歷模板,而且是通過計算機進行篩選的,這樣重重原因會導致學校不好的同學簡歷根本不會到達HR的手里,網站直接自動篩選程序就給過掉了。而現場接收簡歷就不存在這種情況,會大大提高簡歷的過審概率。注意有網申的一定要網申,網申與現場投遞簡歷并不沖突,可同時進行。

    3. 需要在線筆試的注意一下筆試時間,協調好時間,不要因為要參加別的宣講會而錯過了,也可以趁機提前準備一下。

  • 網投簡歷( 或者宣講會現場投遞簡歷)
    現在越來越多的公司都選擇網投簡歷,節省成本,這樣造成的弊端上面也說過了, 但是有注明要網投的公司還是要去網投一下的。網投的時候信息一定要填寫完整, 把自己會的、做過的東西全部列出來(沒有一頁A4紙的限制),這樣會加大簡歷過審的幾率。宣講會現場投遞簡歷的時候可以先聽一聽宣講內容,然后進一步決定要投遞哪一個崗位,然后把崗位名稱寫上去(不必直接打印崗位名稱或者公司名到簡歷上面),可以一份簡歷模板,多次投遞。

  • 到現場參加宣講會( 筆試/投遞簡歷)
    有的宣講會結束之后會進行現場筆試以及簡歷投遞,有的宣講會注明了不接受現場簡歷那就沒有太大的必要過去參加了,把時間留給那些有現場筆試和簡歷投遞的宣講會。

  • 面試
    面試一般情況下有兩輪,第一輪是技術面,也就是一對一的面試,第二輪是 hr 面,主要談薪資待遇啊等等。有的公司有群面,注意:技術類公司也有群面的。這樣的公司一般就是一面技術面,二面群面,之后是簽約洽談。

  • 簽約洽談
    在過了重重關卡之后終于來到簽約階段,簽約一般都是以 offer的形式進行,也就是雙方協議,有紙質的,也有郵件形式的(有的雙方協議會約定違約金),這表明公司有錄用你的意向了,等到三方協議發放的時候就可以同公司進行三方協議的簽訂了,到這里你就基本上確定能夠被該公司錄取了。


由于去的比較早,且還有沒幾天就過中秋節了,所以這段時間來校招的公司不是太多,但是當時并沒有意識到這個問題,在經過幾天的折騰之后,發現竟然一無所獲,面試機會都不超過兩個,說實話,當時我們兩個都有點灰心甚至絕望了,也一度萌生出回校繼續考研的心思(現在想想真是十分荒唐的想法)。所以校招的時候有一點,就是一定要堅定信念,不要遇到那么一兩個挫折就想著要不要放棄,要抱著一種不成功便成仁的想法,否則,那段時間的情緒真的是非常低落,這樣會十分影響面試發揮的。

在這次校招當中,我的直接競爭對手是華科、武大這些尖子學校里面的學生,本來是感覺壓力挺大的,在一開始的一兩場面試中就表現出一種強烈的自卑感,但是后來一想,在這里誰認識你啊,面試完大部分人還不都是各奔東西了,所以自卑給誰看呢,我的自卑源于認識的人比我牛,而又和我在同一個場合的情況下,既然大家都不認識我,我還有什么可自卑的,就是干啊,出錯、出丑也不用擔心,反正也沒人知道你。抱著這樣的想法,我在面試當中也就少了很多的自卑,而是抱著平等的心態來面試的,表現自然也就比之前好很多了。值得一提的是,在華碩的一場面試當中遇到一位華科的研究生,曾問他對于華碩本次面試的感覺。結果人家說什么?人家說這次面試就是來玩玩的,主要是為了積攢經驗,這次面試過不了就算了,反正他們學校有華為可以保底。當時我聽完之后,心中有一萬只草泥馬在奔騰,要知道我這種學校出身的想去華為連簡歷都過不了機篩的,華為保底這種想法真的是想都不敢想,華科學生們的底氣可見一斑,從一方面也可以看出普通學校與重點學校的差別了。

中間有一場魅族的面試,面我的人是個胖哥,但是有一個很奇怪的點,就是我之前去面試的時候一般都是我很緊張,有時候甚至說話或者動作都會抖,但是那天面試魅族的時候因為我已經經歷過了很多場面試啦,所以自然比較隨意了,不是很緊張,但是面試官我有看到他拿鼠標的手在微微發抖,我就很奇怪,難道他比我還緊張?哈,這都是臆測了,不知道具體什么原因。期間面試挺順利,各種問題都沒有卡殼,也沒有不會的,但是最終面試沒過,這就是很詭異的地方,我每次面試過后都會總結,但是這次我實在是找不到沒過的原因。

錄用我的一家公司是珠海的全志科技,是做超大規模集成電路的,也就是傳說中的芯片原廠,這次面試讓我相信,也許,有時候找工作真的是要看緣分的。第一次面試是一個晚上,7點去酒店集合,當時在跟一個同來面試的在閑聊,過了一會兒,我看到有位同學垂頭喪氣地出去了,我就半開玩笑說,這肯定是被面試官懟了,希望待會我不會垂頭喪氣地走出去吧。然而,這個flag立的好啊,果不其然,我被懟的快要說不出話來,出去的時候心情同前一位同學,當天晚上真的是整個校招的心情最低點,之前已經跪掉不少面試了,當時還給女朋友打電話說想讀研,不想再面下去了,然后女票也是安慰了許久,但是我的心情沒有絲毫緩和。就這樣悶悶不樂到第二天,起床的時候突然收到一條短信,告訴我面試過了,讓參加第二場面試,當時就很恍惚,現在想來也許是我的態度打動了面試官,亦或是各種比賽經歷與項目經歷啥的?話說二面的時候我那組刷了2/3的人,也許是我華碩群面積攢了一些經驗,所以才得以順利過了面試,真是福禍相依啊。

注意:有的培訓公司也會渾水摸魚進入到校招的行列,往往他們會出一些比較困難的問題刁難你,然后告訴你,你的能力不夠,需要在我們公司進行多長多長時間的培訓,期間不需要付培訓的費用諸如此類,那么就要注意了,這類就是十足的培訓公司,千萬不要去。

尾聲

收到了現任公司的offer之后,就比較放心了,因為這家公司算是符合我的心理預期,并且公司是嵌入式同學都想進的所謂的芯片原廠,后期的面試就是真的十分放松了,期間包括一個上海的格科微電子,當時在全國也就招那么幾個人,真的沒想到會收到offer,但是最終因為其它各種原因,選擇了現在的全志科技。至此為止,整個校招算是接近尾聲,還有幾天才到租房期限,這幾天也陸續面過幾家公司,但都沒有合心意的,就這樣磨磨蹭蹭到了退房那天。還記得那天下著小雨,天氣逐漸轉涼,回程狠心買了高鐵票,幾個小時之后到大鄭州,心里面的一塊石頭也算是落了地,這將近一個月早上6點出門,晚上12點左右才回到住的地方,整個人精神緊繃,現在也可以放松一下啦。

找工作最重要的是心態問題,當你多次失敗的時候就會有很大的挫敗感,這個時候不可避免的想要逃避找工作這個現實,想著能不能去考研,能不能先回去,再學習一段時間再來找工作,我告訴你,不能。千萬不要想著給自己留后路,你已經沒有退路了,不管失敗幾次,要學會調整自己的心態,沒有到最后一刻就要相信自己能夠找到一個好的工作。還有一個就是不能夠消極怠工,可能因為心情緣故,有的宣講會因為遠或者你自己覺得不太適合你就不去了,簡歷也不想投遞,這樣是不行的,不論你心情再差都不能夠消極怠工,不然你很可能會錯過很重要的機會。

找工作很苦,考研也很苦,選擇了一個方向后就要沿著這個方向死磕下去(前提是你確定了自己想走的方向),不要想著有回頭路。對于考研與工作我也不能夠給出一個確切的答案,只能說是看自己的想法了,但是有一點我可以確切的給出答案,那就是考研究生一定要考一個好的學校,怎么也得是985、211(雙一流大學),最差也得是你報考的專業在全國是能夠排的上號的,否則我認為上研究生純屬是浪費時間,還不如去參加點培訓找工作去。在我去面試的過程中碰到的本科生的比例約等于0,幾乎清一色的985、211碩士研究生,由此推及其他地區的校招,大抵也是如此,可以得知找工作的壓力多大,如果考研也是為了找一個好的工作的話,那最好還是考慮下上面的話。

后記

這里說一下在面試過程中的個人經驗積累。

面試篇

  • 技術面
    也就是一對一的面試,在該輪面試中,面試官主要就你簡歷上面的內容進行詢問考察,主要目的是了解你的個人能力,判斷你是否適合公司的這個職位。在此輪面試當中一般有兩種面試官:

    • 一種是就著你做的每一個項目去問,問的不是很深入,并且問題的內容也不會超過你簡歷上面寫到的東西。

    • 一種是只選擇你簡歷上面的一個項目深入了去問,并且他還會就這個項目進行擴展,問出一些你可能沒有接觸過的東西來。

我個人認為遇到第一種面試官對你的面試過程來說是比較幸運的,因為你很容易就可以回答出他想要的回答,你不會有太大的壓力。這時就主要看你的項目是否夠足夠吻合那個職位要求,以及你的項目涉及的知識點是否是面試官想要的,這里拼的就是項目經驗。當你遇到第二種面試官(一般會是項目總監或者技術總監一類的人)的時候,我必須要同情你一下,因為你很可能會掛掉這次面試。但是從另一個方面來說,這又是比較幸運的,因為這樣的面試官所在的公司我認為創新能力比較強,公司也比較有活力(一家之言,也說不定)。這里拼的就是你的知識面以及抗壓能力,還有面試官對你的主觀印象了。面試的時候有幾個注意事項:

  1. 不會的東西就說不會,但是盡量要找一個相近的可替代的東西去補充。?比如問你會不會寫一個 memcpy 函數,如果你不會這個但是又恰巧會 strcpy 函數,那你就把strcpy函數寫出來,還要大概說一下你覺得memcpy函數可以怎樣去實現,可能會遇到那些問題等,諸如此類。

  2. 涉及讓自己評價自己的問題不要說太滿。比如讓你說自己的缺點,不要把自己說的一無是處,而是挑一個不至于讓人一聽就對你沒有好感的缺點去說。讓你說自己的優點,也不要把自己說的十全十美,很可能后面有一個坑等著你去跳,而要挑一個個性的,與眾不同的優點。說優缺點的時候最好配以例子進行說明,而是不是干巴巴的總結。

  3. 如果問到你還有什么問題想問的嗎?千萬不要說沒了,你要就這所申請的職位或者你本身就感興趣的東西去問一下面試官。比如你可以問:這個職位在公司里面有多少人啊,主要負責哪條產品線啊等等。

  • 群面(研發類少見)
    主要就是無領導小組討論。網上有很多詳細介紹的,這里簡單說明幾點。

    1. 無領導小組討論會有總結陳詞、計時、記錄員幾個角色,一般來說總結陳詞與記錄員是一個人

    2. 總結陳詞是高風險、高回報的角色。個人最建議搶到計時這個角色, 主要負責時間分配

    3. 遇到有時間要求的個人觀點描述一定要注意時間,大家觀點都差不多,但是你沒超時你就有更多的籌碼。

一般群面的步驟如下:1. 個人觀點表述;2. 無領導小組討論;3. 總結發言

  • 簽約洽談
    簽約洽談就是公司有錄用你的意向了,主要就是跟你談一些公司的福利待遇問題, 下面列出幾個個人認為比較重要的問題:

    1. 是否有實習

    2. 試用期時長,勞動協議時長(三年期、五年期)

    3. 是否有餐補以及住宿是否有補貼

    4. 每天上下班時間以及一周工作幾天

    5. 年薪(注意除了月薪一定要問下年薪的構成,有的會發放 14 個月或者 13 個月的工資以及年終獎), 每年的調薪考核方式以及調薪幅度

    6. 入職是否有培訓,是一對一的嗎

    7. 入職時的職位分配

  • 一些常見的面試問題

    1. Q:你還有沒有什么想問的
      A:這個職位在公司里面有多少人啊,主要負責哪條產品線,在公司具體負責哪一塊的業務

    2. Q:你還有沒有什么想展示的
      A:這個問題是讓你進一步說明你自己會些什么東西,因此你簡歷上有的他還沒問到的或者是你會的但是沒有寫到簡歷上面的都可以說出來

    3. Q:你認為自己的優缺點有哪些
      A:缺點:做事情比較急
      優點:做事情之前喜歡做好規劃
      原則:缺點不要說得太過;優點要找個性的,不要太虛太籠統,結合例子說明。

    4. Q:你覺得你的自學能力怎么樣(以及其余類似的問題)
      A:包括其他讓你評價你自己某一方面的能力的時候,注意后面的坑,你確定以及肯定你那方面能力足夠的話,你可以說你能力很強,否則不要說太滿,而且一般情況下這個問題后面會跟著一個小測試,用來測試你的能力,所以,不確定的千萬不要說大話。

    5. Q:你對這個工作是否有一定的規劃
      A:這個問題要結合公司回答,比如我想在公司的帶領下和公司一同成長,未來也希望能夠參與到公司的管理團隊當中去,共同帶領公司向前發展。總之不要顯得你毫無野心和目標不明確。

    6. Q:如果你從公司離職,可能會是什么原因
      A:個人發展與公司發展方向不符;公司不能夠滿足個人發展所需的空間等等

    7. Q:你的期望薪資是多少
      A:這個問題的原則上是不要給出確切的工資數目
      一般情況可以回答:相信公司都有自己的評價標準,希望公司能夠根據我的個人能力給出相匹配的工資數目。如果你碰到了比較固執的面試官非要你給出一個確定的薪資數目(看準網上面會有各大公司的匿名薪資統計),你最好已經提前查看過該公司的薪資水平是多少,如果這個公司你很想去,那么你按低于公司平均水平的數目來說,如果這個公司你不是太想去,那你就可以往高了說點。但是說出來的薪資數目一定要有根據,比如你說你參考了公司的薪資水平與當地的消費水平等等。

筆試篇

筆試會有在線筆試以及現場筆試兩種類型,像嵌入式軟件工程師最常考的就是 C 語言,也會有鏈表、二叉樹、模電、數電、編程以及操作系統方面的題。這個主要就是靠平時的積累以及刷題經驗,嵌入式軟件工程師不需要了解過多的算法,但是數據結構與 C 語言編程是一定要掌握的。推薦 495 個 C 語言問題, 50 個 C、C++面試題這幾個pdf文件,好好看看。最后,最重要的,筆試還是靠平時的積累,多動手編程,多去練習。


電子通信、嵌入式工程師校招怎樣才能提高面試成功率?嵌入式工程師火哥如是說:(來源:嵌入式老鳥的職場之道)

一、公司面試求職者的目的是什么

《孫子兵法》有云知己知彼,百戰不殆,當然百戰不殆并不等于百戰百勝,而是說在知己知彼的前提之下,至少結果不會很難看,哪怕沒有打勝戰,也不至于損兵折將一敗涂地。

所以要去面試一家公司,首先搞清楚公司面試求職者的目的。很多人說,面試不就是為了招人嘛,當然招人是肯定要招的,但不僅僅這么簡單。

不管是校招社招,有一些常年好像都在招聘,但是據我了解去面試的人成功率并不高,而且被問到遠超當前工作經歷的很難的問題,幼小的心靈遭受打擊,這到底是怎么回事呢,其實面試你的公司其目的一般是這幾類:

  1. 常年掛機等大牛的公司。這類公司可能根本不缺人或者暫時沒有hc(head count 即部門招聘名額的意思)。但是他們也會長期在招聘網站上掛機,占用前排廣告位,因為招聘網站在同行業流量還算大,掛機費用也不貴,掛上職位,能給公司刷存在感,起到廣告效應,比電視廣告便宜多了。當然如果真的有行業大牛(比如Linus.Tovalds等等)來面試,公司也可能乘機申請特批的hc(一般要CEO簽字)挖到大牛。

  2. 尋找備胎的公司。有些公司人員架構基本成形,但是考慮到每年有一定離職率,或者已經給牛人發offer但是不確定牛人一定會來報到,所以有可能接下來會繼續邀請你面試,雖然可能面試過程你發揮不錯,問題都答出來了,聊的挺開心,但是最后由于牛人按時報到或者今年離職率低,沒有騰出hc, 最后沒有給你offer,其實這也是經常發生的,所以各位求職者沒有拿到正式offer之前,不要掉以輕心,不要抱有各種幼稚幻想,該繼續面下一家,該干嘛繼續干嘛

  3. 團隊大體成形,有缺人的hc名額,但是項目不急的公司。這種公司也會經常出來邀請人面試,但一般難度會有點高,也會有點挑剔或者說謹慎,因為就目前公司人員配置,可能基本能完成項目,但是可能會有點趕,招你過來可以起到錦上添花但不是雪中送炭的作用,可能會更加看重你未來給公司帶來的潛力,而不是對當前公司平臺,業務的熟悉程度。這種公司可能會在面試的時候,用更多不常用的基礎知識考察你的潛力,最后給最滿意的候選人發offer,屬于慢慢挑的公司。

  4. 急招對口業務項目的公司。顧名思義,公司非常缺人,非常急,希望你一周之內就能到崗(這時裸辭已經離職的可能比在職的反而有優勢)。這種公司招人,可能就不太管你基礎,潛力這些東西懂不懂,上來的問題一般就是你熟不熟悉某某平臺,有沒有用過XX芯片,如果沒有就基本over了。
    所以面試勝敗乃兵家常事,火哥這種全球一流公司的老油條,也有面試小公司翻船的經歷,所以各位小伙伴面試求職,一定要保持良好心態,勝不驕敗不餒,不要一點小的失敗,被面試官鄙視兩句就上綱上線,覺得自己無能,其實面試官里面也有很多傻逼的,很多時候面試失敗并不是你的錯,因為不同公司面試你的目的有時候你并不清楚。
    當然,回到常規的面試流程,公司邀請你來面試,可能是希望多了解你的長處,看看你的長處能不能在公司對應的崗位上產生價值(當然不排除少數公司出一些難題,打擊你的信心,讓你不敢要太高的薪水)。由于現代城市社會,由于都是陌生人社會,人和人之間,如果沒有機會共事過一份事業,彼此之間是很難有信任感的,尤其是技術人員之間的信任感更低(其實體育領域也是要有信任感,才敢在比賽最后時刻把球傳給最信任的隊友完成絕殺)。通過面試的了解(不管是問一些看起來用不上的基礎知識還是常用的業務知識),都是在增加用人部門和求職者之間的了解和信任,只有你有足夠的技術說服力,讓面試官信任你的能力,對方才愿意把重要的工作交給你。本文要聊的主要也是這種陌生人面試(一般曾經共事過的同事再次搭檔,走走流程就好了,不用做那么多算法題,因為共事的過程能夠給他們帶來足夠的信任),在這種陌生人面試的模式下,不管看重學歷,大廠背景,還是算法內核等基礎知識,業務知識項目經驗等等,都是增加信任感的一個媒介,不同面試官對這些東西權重不一樣,但是本質上還是考查你這個人值不值得信任,進而分配工作任務,有沒有可能最后把事情搞砸。


二、如何準備簡歷

簡歷是找工作的第一關,能否寫好簡歷直接決定是否有面試邀請。火哥的準備簡歷有這幾點竅門,所以有著較高的面試邀請率:


  1. 簡歷要有公司和行業的針對性

    電子通信,嵌入式相關的行業其實很多,不同行業不同公司看重的項目和基礎技能其實是不一樣的(比如你做視頻相關的開發去面試語音技術相關的公司,對方對視頻相關的項目經驗不太了解或者興趣不大)。所以去面試不同行業的公司,簡歷要有針對性,但是維護太多版本的簡歷又很累,而且簡歷簡歷,盡量簡單(不超過2頁),一般2頁之內可能記錄不下你做過的所有項目和技能信息。所有火哥一般會有一個基礎版的簡歷,里面記錄了所有工作以來做過的項目相關的東西,但是這份簡歷一般不會直接投出去。除了基礎版簡歷,火哥還會準備三份崗位版簡歷(針對視頻開發,通用嵌入式驅動開發,通用嵌入式應用開發),每份簡歷里的項目經歷都可以從基礎版簡歷里面復制粘貼相關的項目,去除無關的項目。如果遇到你特別中意的公司和崗位(dream company),那么就為這家公司的崗位專門修改一份簡歷。但是一般情況下,三份不同的崗位版簡歷根據JD描述,投遞到不同的崗位。

  2. 使用云盤來保存簡歷


基礎版和崗位版的簡歷最好在云盤上統一管理和修改,因為你world pdf文件,在不同的電腦和U盤上拷來拷去,久而久之你會搞亂,可能也分不清哪個盤上的簡歷是最新的,這就可能出現投遞錯誤簡歷的尷尬,所以最好用云盤管理更新最新的簡歷。

3. 技術詞匯要通用,關鍵詞加粗

一份簡歷是否會收到面試邀請,最后做決定有可能是HR也有可能是用人部門。不同公司情況不一樣,不能一概而論,所以在簡歷中描述技術相關信息,不要用太多私有,冷門特殊的技術詞匯(比如有些小伙伴簡歷中寫負責AL006設備的CD0x2協議的開發,不是細分專業領域,鬼知道你在開發啥)。

火哥這里有技術項目介紹的例子,里面通用的技術詞匯與開發平臺全部標記起來,讓面試官和HR一眼就能看清楚重點。其實面試官和HR真正看簡歷也是挑關鍵詞看,而不是把你的項目從頭看到尾,研究你做了什么技術,所以標記出關鍵詞,讓HR或者用人部門快速知道你是否值得邀請。


圖片.png


4. GitHub、技術博客等展示技術能力的鏈接

簡歷只能簡單的介紹一些工作經歷,但是如果面試官對你有興趣,想更加深入了解你做了什么,這個時候,github和技術博客是非常好的技術和能力的證明。畢竟面試的時間有限,要通過1個多小時的面試了解一個人全面的能力并不現實,所以很多面試官面試前后還會翻閱你的github和博客,乃至最后比較候選人,選擇困難的時候,GitHub和博客也是一個有力的參考(畢竟你不只是能完成工作就行,很多時候好公司招人名額有限,你需要與同樣合適的人競爭崗位,那用什么證明你更優秀呢?)。我了解到很多有經驗,有技術的工程師,由于沒有github和博客來宣傳自己的技術,只通過短短一個小時的面試,沒有辦法把自己的技術展現完全,最后面試官不是很信服,反而選擇了技術不如他,但是有博客和github能證明技術的候選人。

5. 關于有用的證書

電子通信、嵌入式等靠實際技能吃飯的行業,有用的職業證書可能不多,但是如果你從事網絡工程師相關的工作,思科或者華為認證還是有必要的,其它簡歷上需要具體咨詢相關崗位有經驗的老鳥。

另外基本的一點就是英語六級(CET-6)證書,這個對985 211學歷背景的童鞋,CET-6應該屬于標配。但是普通一二三本工科專業,據我了解,CET6過級率應該不高,平均不到20%。但是如果要面試行業內的外企,三資企業,沒有CET6可能會讓老板懷疑你的英語溝通能力,但對于已經畢業沒有CET6證書的童鞋,補救辦法就只能考雅思6.5分以上或者托福對應分數來彌補沒有CET6的缺陷。

很多人說找工作看能力不看學歷,普通一二三本也有優秀的人才,學歷是層次是18歲高考就決定了,后面不考研就沒法改變了,但是英語等級證書大學之后還是有機會考取的吧,而且機會很多,如果出身普本,又沒有CET6證書,怎樣證明你是普本中的優秀人才,和其它普本不一樣呢所以CET6,雅思6.5等證書也是表證明學歷普通的你學習態度好的一個點。


6. 是否讓獵頭幫忙推薦簡歷

關于獵頭崗位,一般獵頭推薦的都是薪資較高的中高端崗位(這樣獵頭提成高),獵頭推薦有這么幾個優勢:

  1. 獵頭接觸過這個崗位的很多候選人,可能給你更多詳細的面試準備信息(因為她更希望客戶面試通過)。

  2. 獵頭對這個崗位的薪資了解的信息比你多,在談價的時候,獵頭可以起到抬價的作用(畢竟利益相關)

  3. 獵頭可以幫你獲得更多,更快的面試反饋信息,哪怕失敗了,也知道具體的原因和失敗點。

所以在這里,火哥是建議如果有獵頭推薦的崗位,盡量找獵頭。但是需要注意的是,獵頭推薦崗位一般是從自己和客戶的利益出發,大部分推薦的是你有很大概率能面試上的崗位,而對你的職業崗位發展和這個行業的發展,以及你是否有機會挑戰更好更大的平臺其實是不care的,甚至可能為了自己的利益忽悠你去一個并不是很有前景的行業和公司,所以自己分析利弊,決定是否接受獵頭推薦。

三、如何準備基礎知識的面試


  1. 為什么社招有經驗的求職者還要考察書本基礎知識
    很多有經驗的工程師和我抱怨過,為什么嵌入式面試,還要考一些平時根本用不上的算法,還要根本接觸不到的編譯器,Linux內核原理。
    關于這個疑惑,首先要接受這個事實,有經驗的工程師,尤其是非管理崗位的嵌入式工程師(包括初級、中級、高級),在社招需要做筆試題,考察很多算法和操作系統內核原理的知識的客觀存在事實,我參與的面試中,70%以上都有算法和內核原理的考察,尤其是創始人團隊是互聯網背景出身的情況下,對算法考察更為喜愛,而互聯網背景創始人團隊在電子通信,嵌入式相關領域招人的公司,往往參考BATH的薪資標準,給得起較高于傳統行業的薪資,所以為了高薪就業機會,必須適應游戲規則,準備算法,Linux內核,系統原理等基礎知識的面試。
    至于為什么要考察這些,尤其是骨干團隊已經成形的公司(上一段1 2 3 類公司都算),希望能通過基礎知識測試,摸底候選人的基本功掌握程度,期望招到的候選人,不只是能處理當前的業務工作,而是有更強的發展潛力,能在公司需要的時候,適應公司技術發展的變化,調整自己的技術方向。因為在現代新興行業的公司,組織架構,技術方向調整是很常見的事情(火哥工作5年遇到過三次組織架構和分工調整),一般情況下認為,只有基礎扎實的人,才能適應不同領域的調整。扎實的內核,算法基礎,能幫助你在工作中處理一些可能表面上看不到,埋藏在更加深層的bug盡管這些問題不會天天出現,一旦出現真要命,因為你平時用的知名的工具,軟件,庫比如Linux內核,工具鏈,libc庫并不是完全沒有bug的,火哥之前就利用編譯鏈接的基礎知識,幫助客戶解決過glibc庫的版本兼容性問題。在基本扎實的人,一般在解決問題的思路上,會犯方向性的大錯誤,能夠快速定位到核心的問題
    另外,扎實的基本功,也能增強領導對你的信任感。比如當你知道你乘坐的飛機的設計師和制造師是大專學歷出身,給你做臨床手術的醫生是三本或者大專學歷,平時口口聲聲說看能力不看學歷的人,心理會不會產生不信任感,不愿意坐這架飛機,不愿意這個醫生做手術呢?同理,如果你的下屬有很多基本知識都不知道,你敢把至關重要的客戶項目交給他嗎?


2、嵌入式工程師如何準備基礎知識面試

講了這么多基礎知識面試的到底,但是到底如何準備呢?其實備基礎知識面試沒有什么捷徑,沒有太多投機取巧的方法,只能老老實實針對性的花時間看專業書籍和文章。不要指望完全靠工作經項目的經驗來學習基礎知識,這就像職業球員一樣,不要指望聯賽,常規賽的比賽經驗來代替平時的速度,力量,耐力訓練一樣。工作(比賽)雖然確實有很多實踐性,經驗性的東西不可能在書本上學到,但是工作(比賽)并不能代替平時的基礎知識基本功訓練。同樣,運動員轉會的時候,也會有耐力,速度等基本功測試,就如同工程師跳槽的工程師有基礎知識摸底面試。工程師沒有平常的基本功訓練,知識很容易遺忘和脫節,就像運動員不注重平時訓練,身體狀態就會隨著年齡下滑明顯(想想C羅34歲了還要有健身房專門的力量訓練)。

那么基礎知識訓練該看些什么呢?就嵌入式領域而言,火哥推薦下面這基本經典:

算法:刷完 算法(第四版) [book.douban.com/subject] 上面的例題,有答案的練習題,這樣基本能應付大部分算法面試

數據結構: 數據結構與算法分析 [book.douban.com/subject] 計算機必備知識,沒啥好說的,老老實實學完。

Linux內核:入門級-- Linux內核設計與實現(第三版) [book.douban.com/subject], 進階級-- 深入Linux內核架構 [book.douban.com/subject], Linux內核的學習時間花費可能比較長,也有一定難度,只能說任重道遠,建議下一份對應版本的內核源碼,慢慢啃,花個半年一年總能啃完的。理解內核各種子系統和機制,對嵌入式Linux驅動開發也是大有好處。

編程規范: 代碼大全(第二版) [book.douban.com/subject], 學習一些編程規范,增加和面試官聊天的談資。

其它:程序員的自我修養[book.douban.com/subject], 講一些編譯,鏈接的知識,編程珠璣 [book.douban.com/subject] 一些面試的技巧性算法速成。

3. 基礎知識筆試面試注意點

考慮到很多公司會考察紙上寫程序,所以帶上自動鉛筆和橡皮擦很重要,這能讓你紙上寫代碼的時候便于修改。另外,不適應紙上寫程序的,面試前最好找2道題在紙上真實寫寫,感覺和敲鍵盤完全不一樣,尤其是用墨筆寫,更加容易涂涂改改。

四、面試前要和hr確認的信息

面試之前,建議加添加hr微信,問清楚面試的具體地點,以及面試多少輪,流程是怎么樣的,大概需要多少時間,這樣便于你規劃交通和請假的時間(考慮到在職面試的情況)。另外可以了解公司的基本制度,比如正常情況下幾點上下班,一周幾天,有沒有大小周,是否需要打卡,是否彈性,五險一金的繳納標準(不少民營企業是以當地最低工資標準繳),醫保是不是第一檔(注意深圳一檔,二檔醫保的區別)。你可以通過后面這些信息,判斷公司的制度對你是否可以接受,值不值得去一趟。

五、如何通過一些技巧在面試中多多展示自己的長處

很多工程師都有這樣的經歷,在平時工作中做了很多事情,解決了不少難題,但是卻在面試中不知道如何像面試官表達這些東西,或者漏掉了你的很多優秀的閃光點,吃了虧。

其實火哥也在以前的面試中面臨同樣的難題,明明有解決問題的能力,明明知道很多東西,但是在面試官面前都在把優點隱藏,把缺點放大。

那么之后火哥在面試中做了哪些改進來提高offer率呢?

1. 準備項目PPT介紹系統原理和框架

以前有的小伙伴說,面試把平時的作品帶過去,到時面試愛怎么吹就怎么吹。

當然這是不現實的,很多做過的東西是前公司的帶不出來,加上面試公司的環境不一定允許你現場展示作品,這個想法不太現實。

不過,帶上一個臺ipad平板電腦或者小型的筆記本電腦,把你平時做過的主要項目的系統模塊框架做成PPT,在面試的時候給面試官講解展示我覺得是一個很重要的技巧。

因為簡歷只是簡單介紹你的項目經歷,面試官不大可能從簡歷上一眼就看明白你所做的項目的原理和框架。所以你要準備PPT資料是對簡歷上項目信息的一個補充,讓面試官看懂你做的項目。盡管現代大企業,項目分工細化,作為基層開發工程師,不太可能整個項目都是你自己獨立設計和實現的,總有你不懂的模塊,但是在面試準備PPT中,你還是要把整個項目的系統框架畫出來,讓面試官能夠了解整個項目是怎么樣的,你在里面做了什么,盡管有些模塊你可能沒有參與,不懂,可以在聊天的時候對面試官說明,但是根據心理學的一些理論(應該是《影響力》還是《思考,快與慢》里面的觀點,有興趣可以讀讀,增加個人軟實力)人腦一般注重的是信息的完整性,而不是一些細節末枝的地方,所以能完整的給出項目系統框圖,讓面試官對你做的整個項目能夠有所了解,即使你有不懂的模塊,但也能給面試官帶來好感,讓他有問題可以交流,而不是制造冷場

下面是火哥面試時候帶的PPT項目和系統軟件架構描述的例子:


圖片.png


圖片.png


在這里大家要意識到一點,圖片所攜帶的信息量遠比文字來得大,在PPT里盡量少寫文字,多畫圖,用框架圖描述你的項目,面試官可能也不會有耐心仔細看你的項目描述文字,如果沒有PPT所帶的框圖,而是直接帶著簡歷去面試,面試官對于自己不熟悉的項目和詞匯也會聽得云里霧里,不知所云,最后不知道如何提問,尬聊收場。火哥也是在多次面試深刻領悟到這一點,發現純語言上的技術交流和溝通,會有許多誤解和信息不對稱的地方,遠不如圖片攜帶的信息量大,所以自己制作項目介紹的PPT,通過PPT引導面試官熟悉你的項目,和你溝通交流是技術面試里面非常重要的一個環節。

2. 面試前自我排練,培養氣場

火哥在面試完和hr總結面試過程的時候,有些hr夸火哥面試氣場很好(這里不要臉一下)。其實這個和火哥以前從小參加各種演講,辯論比賽,以及大學之后參加的科研論壇和項目答辯有關系。在技術面試中,表現出一種自信和鎮定是非常重要的,哪怕你有些問題你確實不懂,但是你的鎮定,不慌張,有條有理的氣場能給面試官一種靠譜感,讓他信任你。當然如果你從小缺乏這樣鍛煉的機會,那也不要緊,臨陣磨槍,在你做好項目的ppt之后,對著ppt把你的項目從頭到尾大聲講一遍,一定要講出來,實地演練,然后錄音,回過頭來聽錄音,自己感覺講的有些什么不完美的地方,面試的時候還可以修正。其實每個人,內心的思路、想法和靈感遠比他口頭表達出來的多,如果只思考而不錄音講出來,鍛煉你的表達,你永遠不知道你表達的東西和你想到的東西所體現的信息差在哪里。

3. 刻意準備2-3個平時解決的復雜問題的案例

能不能介紹一下你平時遇到的一個比較印象深刻的問題,以及你的解決思路。相信大家面試都遇到過這樣的問題,相對于這個問題,其實工作時間越久的童鞋反而越不好答,因為解決的問題太多,時間太久的東西可能忘記,一般最近的問題才容易回想,一時半會選擇困難不知道講哪個問題。

其實這個情況,火哥建議大家做好預案,用百度云盤或者印象筆記,寫下你處理過的3個很有代表性的問題,每次面試之前稍微看一下,每次遇到這個問題就拿出準備好的模板應答(為什么要準備3個,因為怕面試官有些方向不熟,聊不下去,讓你換一個問題)。

4. 學會和面試官找共同技術話題,提供補充信息,促進面試官多了解你

電子通信,嵌入式相關領域,業務方向很多,面試官的知識不可能面面俱到,做網絡的面試官不懂音視頻解碼,做mcu的面試官不懂協處理器并行加速都是很有可能的。然而現代社會,行業變遷太快,你不可能限定自己只在一個行業里面找工作,比如做手機wifi就只做一輩子手機wifi,一輩子都在手機行業找工作,不考慮IPC網絡攝像頭行業,不考慮路由器行業,萬一手機行業需求不足,大規模裁員呢,你總得想辦法在原來技術可以用得上的新行業找工作。

這樣,和不同業務背景的面試官交流,找話題聊下去就是一個非常值得提升的軟實力。在和面試官交流的時候,切記不要面試官問一句,你就答一句,這樣如果面試官沒有題庫的話,過2-3輪基本就會尬聊結束的狀態。或者面試官無奈只能讓你寫算法了。

正確的溝通方式是,面試官提問的問題,哪怕不懂,你也得多回答一些東西,牽涉一些主題相關的技能點,讓面試官多了解你的知識技能,引導面試官朝著你懂的方向提問。

舉個栗子,我沒有語音相關項目經歷,當面試官問我語音相關的問題,你懂嗎?我的回答不是兩個——不懂,而是說,雖然沒有做過語音相關的模塊,但是我之前寫過AAC音頻壓縮流和和h264視頻壓縮流做MP4 muxer封裝打包,以及音視頻播放同步相關的程序,這樣引導面試官像我提問音視頻同步的問題,順利回答出以音頻為基準,用pts時間戳做同步同時也是在暗示面試官,雖然我沒做過語音相關的東西,但是對這方面還是有所了解,有一定基礎,能馬上學習適應。

另外,在介紹自己項目的時候記得延伸理論知識點,讓面試官有提問的空間,比如我在介紹在前公司用buildroot做自動化系統構建腳本的時候,不是一句話介紹說我用buildroot搭建了系統自動構建系統就完事了,而是接著補充道,這里面我還做了工具鏈升級,用硬浮點替換軟浮點工具鏈,還對某些現有的方案做了升級,比如MIPS方案256MB DDR內存升級到512MB DDR內存,并且做了512MB大內存的壓力測試,這樣通過引申更多的技術關鍵詞,引導面試官提問我ARM硬浮點的基本工作原理,以及如何測速512MB DDR系統的性能等一系列新問題,然后通過這些新問題把自己積累的理論知識展現出來。

要知道你做得應用業務邏輯代碼其實都不好提問,大部分情況下都是問你用了哪些庫的哪些功能就沒了,反而牽涉到內核機制,CPU機制等基本工作原理的東西才好提問,也更好展現技術的深度。所以你要學會如何引導面試官像原理性問題上提問,同時你也要打扎實自己的技術基本功。

那么具體流程又是如何的?《華為、中興、阿里...硬件工程師的24家公司面試經歷》這位大佬面試了24家名企。不夠過癮?聽這位“自學成才”的大佬細細道來:


背景:?


我之前工作過兩家公司,一家做智能卡芯片的,一家做藍牙產品,基本是應用層的內容。可惜嵌入式開發會越來越向底層發展,沒做過底層協議開發是我的一大軟肋。?


自學過TCP/IP,linux內核(0.11版)?
使用過python


公司A


一面


項目模式(產品/模塊)?
藍牙芯片在產品中的作用(MCU,控制外部DSP或其他芯片;或只作為藍牙模塊)?
藍牙軟件成品模式(固件模式,通過SPI燒錄)?
藍牙協議棧的架構和分層?
藍牙協議棧與網絡協議棧(4層架構或7層架構)的對比?
藍牙芯片(是否基于Linux或其他常用架構)?
藍牙軟件的軟件架構(event-driven類型的,而不是單片機那種大while循環的)?
函數指針與指針函數分別是什么?用簡單的代碼表示出來?
Linux內核的版本;操作系統任務切換的關鍵是什么(保存上個任務的上下文,加載下個任務的上下文)


二面


說說經歷過的最難的項目


分享


這個其實是我同學推薦的,雖然面試完全沒有準備(因為個人原因還未開始投簡歷),但面試過程還算基本順利。可惜該公司有個性格測試,沒過


公司B


自我介紹

項目模式(產品/模塊)?

藍牙芯片在產品中的作用(MCU,控制外部DSP或其他芯片;或只作為藍牙模塊)?
藍牙協議棧與TCP/IP模型的對比;描述一下TCP/IP模型(協議)的主要內容;藍牙協議的細節?
wifi與藍牙的對比?
藍牙通信速率(面試時沒答上來,基本沒關注過……后來了解到現在最大24Mbps,一般也就幾十k)?
python的項目經歷?
I2C的通信模式(看來是答錯了,我以為有個校驗位(UART有校驗位,是10位數據),結果每次傳輸是8bit,然后1bit應答),通信速率,工作時的掛載情況(最多5,6個設備)?
USB的協議架構?
git的使用?
makefile的了解(編譯的經過)?
Linux內核的版本(推薦我看2.4版本……)?
Linux驅動開發?
socket


分享


總結了之前的經驗,專門看了一些藍牙底層協議和網絡四層協議的對比,但是忽略了I2C,之前做I2C也不是做I2C的底層協議,主要是應用,抓取過一些I2C的通信數據,UART也是同樣的,結果我在數據格式上沒分清UART和I2C。USB協議也不太了解,只是在原來的公司做過一些基本是應用層的代碼改動。


公司C


部門1


自我介紹?
手機開發?
手機架構分層?
C開發平臺?
是否做過Linux驅動開發


部門2:


一面


自我介紹?
最有挑戰的項目?
職業發展方向(我表示我想做Linux驅動開發或系統開發,不過面試官說他們的項目里并沒有分的很詳細)?
我問的問題:項目的產品


二面


C程序,判斷一個對稱數?
刪除雙鏈表中的一個已知節點p?
好的代碼應該有的特點


分享


部門1是做芯片開發的,可惜我完全沒接觸過。所以問了幾個問題后感覺不合適,就結束了。


公司D


單片機經驗(51或linux)?
軟件架構;個人負責的部分?
我問的問題:公司的主控芯片和產品的關系


分享


這個公司是看到我的藍牙經驗,考慮他們的產品中可能會用到藍牙才面試我的,但我做的不是藍牙底層協議,他們了解到這個后就沒怎么再問了


公司E


一面


好的編程習慣(結合C語言的測試題詳細說明,第一個點出C變量的聲明和初始化的位置應該在一起)?
第一份工作的內容,負責的部分,拿到一個文檔后如何開發/測試?
第二份工作中影響最大的項目,為什么要實現藍牙設備之間的連接?為什么不從主設備直接向2個藍牙設備播放音樂??
這么多年編程有什么最寶貴的編程經驗?


二面


影響最大的項目


分享


一面有點像壓力測試,比如問題“為什么要實現藍牙設備之間的連接?為什么不從主設備直接向2個藍牙設備播放音樂?”產品設計并不是我做的,至于為什么我也不清楚。“為什么不從主設備直接向2個藍牙設備播放音樂?”這是因為目前的任何一款手機還不支持同時向2個藍牙設備播放音樂。看來大家都知道藍牙,但是都沒用過啊,如果面試官用過多個藍牙設備,就不會問這種問題了。


公司F


volatile的作用(沒答上來)?
如何寫一個無限循環??
如何跳出無限循環?(面試官說可以使用goto來跳出循環)?
為什么一般C程序中不使用goto(面試官提示:如果從一個函數中使用goto到函數外,會有什么影響?)

UART,通信的細節:UART的數據格式?如何保證在偵聽UART時不會一直判斷接收到0?

2種CPU架構(不知道,面試官說是馮諾伊曼架構和哈佛架構,還提了一句圖靈機……)?
RISC和CISC的區別(沒回答上來,面試官說是與指令長度有關。我說我只了解比如匯編中RET長度可能只有2字節,而jmp指令可能是4字節,這樣匯編轉換成機器碼后,可能會做4字節對齊,如果一段指令剛好差2個字節,就會補2字節的0。所以有些機器碼反匯編后就會出錯,是因為剛好補0造成的。)

寄存器長度變小,尋址范圍會變小么?(我答錯了。應該是不會,考慮CPU上的地址總線和數據總線是分開的)

一個簡單的C函數編程,如何把一個變量中的某一比特取反?

在軟件上,有中斷號,中斷向量表,中斷函數,3者的關系是什么?(學過linux 0.11版的同學們肯定都知道答案)

發生中斷,芯片會做什么?(我回答的軟件部分的東西:影響堆棧,任務會切換到內核態并執行中斷。不清楚具體硬件上會做什么,印象里CPU只有中斷標志位會被置位。其他芯片不太了解)

芯片如何降低功耗(sleep部分模塊,具體的睡眠操作:斷電還是取消時鐘)?
如何喚醒已經睡眠的模塊?

時鐘變慢的影響?(不太懂芯片……)

英文對話

我問的問題:項目的工作方向(了解到是做一個芯片內部的模塊驗證工作)


分享


這家公司是做芯片的,所以問的東西有點偏底層,微電子方向。雖然感覺面試官超有親和力,但我還是想做軟件開發方面的,所以有點對不住這位面試官。


總結


嵌入式開發還是相當繁雜的。從芯片級開發到嵌入式產品的開發,或許我投的還是有些廣,但是有一點大家一定要知道,把自己寫在簡歷上的內容掌握,無論別人怎么問都不會出錯,這樣才能正確體現自己的實力


這里設計的技術難點還有一個FatFs文件系統的移植。文件系統是為了明確磁盤或分區上的文件的方法和數據結構。說起文件系統必須相對于存儲設備才有意義。這里是用來管理Sd卡上面的文件。


文件系統的層次叫驅動程序要高一層,為什么這么說呢,上一張圖你就明白了:

?

圖片.png


程序員需要給文件系統提供三個對底層硬件的操作函數,我們才能利用文件系統對硬盤(disk)上面的設備進行管理和使用。


這三個函數分別是:sd_read();sd_write();RTC();他們分別是SD讀扇區,SD卡寫扇區,系統時鐘。(可能還需要提供更多的函數接口,但是SD卡讀寫扇區是必須要有的)。


文件系統接受了這三個資源便可以對Sd卡進行管理了。


應用程序就是實現了吧SD卡上面的MP3文件或者wma文件通過文件系統提供的函數接口找出來,發送到數據流設備上,也就是解碼芯片上,解碼流程我們不需要知道,這是芯片內部集成的,無需人工參與。輸出到音頻輸出設備就行了。


說到這個里,我們的MP3就可以運行了——把程序下到單片機上面,上電,應用程序就開啟了!聽歌吧~~~


補充:


這里沒有使用到操作系統,不能實現多進程同時進行工作,每次只能實現一個硬件工作。如果加入操作系統,我們可以看到的效果就會是MP3一邊顯示歌詞,溫度、時間,一邊放歌曲,操作系統是個很好玩的東西,有興趣的可以移植uCOS II,這個比較小,AVRX也可以,在做這些之前,花點時間去了解軟件層面上的各個層之間的調度關系,少走彎路。

讓我們把目光放到國外,在美國,面試又會被問什么?

1、Describe the most challenging engineering project you have been involved in ? during the past year. What made this project challenging for you?


描述過去一年中您參與的最具挑戰性的工程項目。您覺得項目的挑戰點是什么?


This question not only helps you get a better understanding of what the ?candidate believes is a challenging project, but it also shows you what they ?have learned from past challenges in the field. In most cases, you will want to ?have more questions in your back pocket to get even more information out of this ?question. Consider follow-up questions about how the candidate overcame the ?challenges they faced and what they learned from it.


這個問題不僅可以幫助您更好地理解應聘者認為的具有挑戰性的項目是什么,還可以向您展示他們從該領域過去的挑戰中學到了什么。在大多數情況下,您會希望能引申出更多的問題來獲得更多的信息。考慮的引申問題可包括:候選人如何克服他們面臨的挑戰以及他們從中學到了什么。


2、Tell me about an experience you had with a difficult client. How did you ? handle the situation? Looking back, what would you have done differently? (you ?could substitute boss if the candidate hadn’t dealt directly with customers)


告訴我一個您和難相處的客戶的經歷。您是如何處理這種情況的?回顧一下,您會做什么改變? (如果應聘者沒有直接與客戶打交道,對象可以替換成老板)


It is important to see how potential employees deal with pressure from ?difficult clients. You need someone who won’t damage critical relationships with ?your clients when things get tough. A good candidate will demonstrate the ?ability to listen to a client’s problem and fix the problem in a way that is ?suitable for all parties.


重要的是要看到應聘者如何應對來自困難客戶的壓力。當事情變得棘手時,您需要一個不會破壞您與客戶關系的人。一個好的應聘者會展現出傾聽客戶問題的能力,并用適合各方的方式解決這個問題


By asking what the candidate would have done differently, you can see how the ?individual has grown since the event.


通過詢問應聘者會有什么不同的做法,您可以看到這個人自那次事件后的成長情況。


3、How do you stay current with the latest technology?


您如何與最新的技術保持同步?


Engineering is a fast-paced field. In an ever-changing environment, it is ?important to keep up with technology. You could even ask specific questions ?about a new technology that is gaining traction in the field to see if the ?candidates know much about what is current.


工程學是一個快節奏的領域。在這個日新月異的環境下,與技術齊肩并進是很重要的。您甚至可以問一個關注度比較高的新技術的具體問題,看看應聘者是否了解當前的趨勢。


4、Tell me about a time you had to lead. How would you describe your ?leadership style?


告訴我關于您做領導的一段時間,您如何描述您的領導風格?


Most non-junior people have had some sort of leadership role(s). This could ?have been a large project involving many people, or a simpler task with only one ?other. Regardless, you want someone who knows how to step up when they are ?needed. You’ll learn how the candidates define leadership, and how they will ?function in that role at your company. You want to look for someone with ?leadership qualities that fit in with your company’s culture.


大多數非初級人員多少都做過領導角色,可能是一個涉及許多人的大型項目,或者只是一個簡單的任務。無論如何,您需要一個知道如何在需要的時候站出來的人。您將了解應聘者如何界定領導力,以及他們將如何在貴公司擔任這一角色。您想找一個與公司文化相適應的具有領導才能的人。


5、What do you enjoy the most and least about engineering?


關于工程師,您最喜歡和最不喜歡部分分別是什么?


When it comes to hiring a new engineer, you want to ensure that you are ?picking someone who has a good attitude about the job they will be asked to do ?every day. You are looking for someone who is interested in the things that your ?particular position has to offer. If their least favorite activity is a big part ?of the position, you will immediately know they aren’t the right fit.


在聘請一位新工程師時,您要確保您挑選了一個對他們每天要做的工作持良好態度的人。您要找的是對您的制定職位感興趣的人。如果他們最不喜歡的活動是這個職位的重要組成部分,您馬上就會知道他們不是合適的人選。


6、Where do you see yourself five (or ten) years from now?


您認為自己五(或十年)以后會怎么樣?


This is a common interview question regardless of the type of position. You ?should ask this question to get a better feel for the goals of the candidates. ?No employer wants to hire someone who doesn’t expect to stick around for a ?while, and engineering positions are no different.


這是一個常見的面試問題,不管職位的類型如何。您應該問這個問題,以便更好地了解應聘者的目標。沒有雇主愿意雇傭一個預計不會堅持工作一段時間的人,工程師的職位也不例外。


7、Can you describe the most challenging written technical report or ?presentation you’ve had to complete?


您能描述您完成的最具挑戰性的書面技術報告或演講嗎?


You want to know about a candidate’s verbal and written skills as well as ?their engineering skills. As the candidate explains the report or presentation, ?you’ll gain insight into what they find challenging, and what kinds of ?information gathering and presentation projects the candidate has been ?responsible for in the past, while also learning about their communications ?skills.


您想知道應聘者的口頭和書面表達能力以及他們的工程技能。當應聘者解釋報告或演講時,您將了解他們發現的挑戰,以及過去應聘者負責什么樣的信息收集和陳述項目,同時也了解他們的溝通技巧。


8、What checks and balances do you put in place to ensure that you don’t make ?mistakes?


您有什么制衡措施來確保您不犯錯誤?


It is important that candidates know how to check their own work to prevent ?mistakes. This is a question that will often make candidates think about the way ?they do things, even though they might not have considered it much before. Even ?if they aren’t aware of it, most candidates already have some sort of system in ?place to prevent errors in their work, and this question just makes them think ?about it.


應聘者應該知道如何檢查自己的工作以防止錯誤,這點很重要。這通常是一個讓候選人思考他們做事的方式的問題,盡管他們以前可能沒有考慮過。即使他們沒有意識到這一點,大多數的候選人已經有了某種方法來防止他們工作出現錯誤,而這個問題只是讓他們思考。


Candidates may ask a colleague to check over their ideas and work, and/or use ?helpers like spreadsheets, timelines, checklists, etc. No matter what the system ?is, it is important that each candidate has one and can describe it ?thoroughly.


應聘者可以請同事檢查一下工作、探討一下想法,或者使用諸如電子表格、時間表、核對表等輔助工具。不管這個系統是什么,重要的是每個候選人要有一個,并且可以完整地描述它。


9、Have you ever been asked to work on a decreased budget or help reduce ?costs?


您是否曾被要求減少預算或降低成本?


Companies all want to save money. Candidates experienced in finding ways to ?reduce costs could be instrumental in decreasing costs within your company, as ?there are bound to be times when saving money is an important aspect of the ?job.


公司都想省錢。在降低成本方面經驗豐富的應聘者有助于降低貴公司的成本,因為一定會有節省開支的時候。


Interviewing can be a tough job. You will often talk with numerous qualified ?engineers, and will need to sort through them to find the best fit for the ?position. While you are interviewing candidates, keep your company’s atmosphere ?in mind. You want to pick someone who is more than just qualified; you want ?someone who can also fit in with the other employees.


面試可能是一項艱難的工作。您會經常與眾多合格的工程師交談,并需要對其進行分類以找到適合這個職位的最佳人選。當您在面試應聘者時,要記住公司的氛圍。您想挑選一個不僅僅是適合職位的人,更是能與其他員工和諧相處的人。


As you conduct more interviews, you will surely add your own questions to ?this list, and find new ways to get differentiating information out of potential ?engineering employees during the interview process, such as with follow-up and ?field-specific questions. Try to enjoy your time on the employer side of the ?table. It can be taxing, but is ultimately rewarding.


當您進行更多的面試時,您肯定會將自己的問題添加到這個列表中,并在面試過程中找到新的方法來區分潛在的工程技術人員,例如后續問題和特定領域的問題。試著享受您作為面試官的時間,可能很費精力,但最終是有益的。


嵌入式工程師面試時一般會有哪些問題?嵌入式軟件工程師經典面試題127道》這篇文章可以解答你的疑問。那嵌入式面試會遇到哪些一般人不知道的問題?如何解答?嵌入式工程師魚鷹Osprey如是說:(來源:魚鷹談單片機

嵌入式軟件需要掌握什么東西?

1)?對單片機的熟悉程度(包括中斷系統、各種外設模塊、時鐘系統等)

2)?對通信協議的熟悉程度(常見的有SPI、UART、I2C等)

3)?掌握基本的數據結構(如隊列、棧、鏈表)

4)?掌握基本的算法(多種排序算法,數據結構中需要的一些算法)

其實嵌入式的東西很龐雜,不是一下子就能說清的,只能想到哪寫到哪了。

對單片機的熟悉程度,這個就要考你的基本功了,比如單片機運行到main函數之前做了什么(首先是從啟動文件的復位中斷進入,然后初始化時鐘,進入main函數之前還得初始化一些全局變量)?單片機的中斷機制是怎樣的(這個和向量表有很大關系)?固件升級原理(一份BootLoader程序,一份APP,這個其實不難,如果你的簡歷沒有寫這個的話可能不會問這個)?是否使用過DMA,原理是什么(DMA傳輸方式,怎么設置)?

通信協議的話,主要不是上層的通信協議,而是物理層面的通信協議,比如串口通信需要掌握一幀格式(起始位、數據域、奇偶校驗位、停止位等);SPI通信的四種模式,你又是如何確定使用哪種模式的?I2C通信格式(起始信號、結束信號、應答信號等)?如果說你學過USB,可能會問你USB采用什么編碼、有幾種端點模式、簡單介紹枚舉過程(但也別太簡單)?更高級的可能問你關于網絡這塊的知識(具體魚鷹也不知道,因為還沒系統學過,這里推薦《TCP/IP詳解》)

數據結構,比如最常接觸的棧、隊列、鏈表(單向、多向鏈表)的原理,而數據結構肯定會涉及到一些算法操作,比如出棧、入棧;出隊、入隊;插入、刪除等操作,而比較純粹的算法是排序算法,其中有冒泡算法、快速排序算法等(這里推薦《大話數據結構》),注意這些知識常以筆試形式出現,所以一定要能寫出來(關于筆試推薦《劍指Offer》)。

魚鷹最弱的應該是筆試了,或者說算法。在嵌入式軟件開發過程中,用到的算法其實并不多,但是要你自己用筆寫出來還是有很大的難度的,魚鷹這方面的能力確實欠缺,因為我一般喜歡深入理解思考后就把細節記錄下來,然后選擇遺忘的(遺忘不是說全部不記得了,而是說只記得大概,細節記不住而已),所以說面試前不來個系統的刷題,臨時抱佛腳一下,基本筆試是沒戲的。

但是筆試成績我覺得只是一個方面,一般來說筆試之后會有面試(社招一般筆試、面試緊鄰的,校招的話如果你的筆試成績不合格,那么連面試資格都沒有),所以如果筆試成績不理想的話,一定要好好準備面試(這里插一句,面試前,一定一定要上網查找公司的背景信息,起碼要知道公司是做什么產品的,魚鷹就在這里吃了一個虧,之前對這個不重視,有的公司查過,有的公司沒查過,剛好沒查過的公司突然就問到這個問題,很尷尬,因為這體現了你對這次面試的尊重,而不是在浪費面試官的時間)。面試的話,就隨你發揮了,只要你對自己的技術有信心,那么面試應該不會太難,一般來說,面試官問的都是簡歷上的東西,所以簡歷的內容不要造假,否則回答不出來就麻煩了。

現在就來具體聊聊幾個一般人不知道的知識:


01、你是怎么接收、發送串口數據的?


這個問題其實比較寬泛,一般經驗少的會說使用查詢方式,但是查詢方式效率是非常低下的,所以如果你只能回答這個,100分的題你只能得個30分。如果你說用中斷方式,那么請問你具體是如何處理的?如果你回答說一個字節接收完之后再接收下一個字節,那么可以得個50分。

緊接著又問你,你是怎么接收一幀數據的(這個其實不應該由面試官問,而是由你自己補充全面),如果你說采用幀頭、幀尾判斷的方式接收的,那么這道題還是給你50分,但是你說用空閑中斷,那么70分以上,如果你說用DMA+空閑中斷的方式接收的,那么90分以上(這是我認為最好的方式了,可能會有其他更好的方式也說不定)。

那么現在說說空閑中斷,為什么你說了空閑中斷之后,一下子從不及格到及格了?

空閑中斷,顧名思義,就是串口空閑后產生的中斷。我們都知道,數據一般是按照數據幀來發送的,即一個數據幀一個數據幀的發送,如果兩幀發送之間能間隔一段時間,那么在接收端就可以產生空閑中斷(關于這個空閑中斷,以后可能會專門寫一篇筆記介紹),有了空閑中斷有什么好處?

1)?可以接收不定長數據(這是最明顯的好處)

2)?不需要復雜的幀格式(比如幀頭、幀尾可以不要)

3)?一個數據幀接收錯誤,不會影響到下一幀數據的接收

有了空閑中斷,可謂好處多多(有的單片機沒有空閑中斷,那就沒辦法,當然也可以舍棄一個定時器資源來獲得空閑中斷的效果),所以當初了解到這個之后,就一直使用這種方式接收了。

但是空閑中斷雖好,如果你每接收一個字節都要CPU干預,還是效率太低,那么這時候就得配合DMA了。

怎么配合?比如說你一個數據幀的最大長度是10個字節,設置串口接收緩存區為20個字節,那么你可以設置DMA傳輸長度為20,這樣DMA每從串口傳輸一個字節,傳輸長度就會自減,當產生空閑中斷時,只要你知道開始設置的傳輸長度和剩余的傳輸長度,那么就可以得到你已經接收的數據長度,之后你再重新設置新的接收長度即可進行下一次數據幀的接收。

如此一來,接收一個數據幀只要CPU干預一次就夠了,就是在接收完數據幀的時候由空閑中斷通知CPU進行后續處理即可(注意不是DMA中斷),極大的減少了CPU工作時間。

有的時候,數據量很大,CPU來不及處理,那么你可以通過以下方式解決:

1)?增加消息隊列(非常好的解決方式)

2)?增加兩幀之間的發送時間(對于實時性要求很高的可能不合適)

3)?前面兩種方式疊加


02、LCD顯示屏上的按鍵有多種觸發方式,比如觸摸、實體按鍵,以后還可能增加其他方式,你會怎么設計結構,讓其兼容適應不同的環境?


如果是你,你會怎么考慮?


魚鷹當初的答案是:軟件層次上設計三層。

第一層:和硬件底層驅動相關的

第二層:中間層,負責對接底層驅動和上層應用

第三層:上層調用接口

這個答案我不知道到底好不好,但就以我現有的知識介紹吧。

一般開發人員的軟件設計只有第一層和第三層(即應用層直接訪問底層函數),很少有第二層,事實上設計第二層很有必要,為什么這么說呢,就像題目所說的,一旦你將觸摸換成了按鍵,那么所有用到這個按鍵程序的地方,你都得進行修改,雖然不是很難,但是也麻煩,并且增加了出錯的可能性,但是有了中間層就不一樣了,你只要修改這個中間層的代碼就可以了,你的應用層根本不需要修改。所以中間層的設計很關鍵,要盡可能的把關鍵信息抽象化,這樣才不會導致明明已經設計了中間層,還是免不了大面積修改,那么就得不償失了(這里的中間層可以使用函數指針或者使用一個函數封裝一個底層函數,而你的函數(指針)原型就得好好考慮清楚了)。


03、FIFO隊列中,有一個后面接收的數據,但是想讓它更快處理,應該怎么辦?


FIFO隊列的特點就是先進先出,為什么這個問題反著來?既然你都是順序處理了,為啥你還要插隊?但是實際上確實可能出現插隊的情況,那該怎么辦?這個問題如果是以前的自己可能回答不出來,但是當魚鷹把uCOS II 源碼看了個遍之后,就知道該怎么做了。

uCOS II的消息隊列的源碼中,有個函數的選項,就可以選擇你插入隊列的數據放在隊頭還是隊尾。按照隊列的特點,肯定是要插入到隊尾的,但是題目要求更快處理,那么插入到隊頭是最好的方式,所以這個問題的答案是,將數據插入到隊頭,這樣既可保持隊列的特性,又能處理一些緊急的消息,一舉兩得。

從這里也可以知道,閱讀源碼雖然看似費時費力,但是對你的思想、思維是有很大拓展意義的,與其停留在表明不明所以,遇到操作系統問題到處問人,不如靜下心來好好看看源碼,對你的技術水平是會有很大的提高的。

最后留一個問題,如果單片機沒有在線調試功能,你會用什么方式調試?

我要點評

极速十一选五平台