2020年秋招聯發科小米等20家公司面經總結

秋招投遞公司23家,簡歷被刷1家。筆試/測評掛掉3家。至今無消息的8家。獲得Offer的公司有小米,兆易創新,全志科技,浙江大華,海格通訊,京信通訊,景嘉微電子,廣州朗國電子,北京華大電子,中國長科技集團。已簽約浙江大華。

@

  友情提示:公司名字後面的日期代表投遞日期,面試批次後面的時間代表面試時長和面試日期。

有面試

聯發科北京(7.16)

  20200805接到通知,0806早上九點半面試。郵件中寫的是用Webex Meet,之前都沒聽過的一個軟體,網上找了半天才找到,而且軟體沒有簡體,只好調成繁體了。郵件中寫的是等待通知後再連入,大概9.40的時候接到了電話,要我加入會議中。
面試官是個女的,首先讓我自我介紹下,然後開始看我的簡歷。介紹完了直接問項目。

一面(35min,8.5)

你自己做了那部分?是不是在師兄師姐基礎上做的?

  不是,師兄師姐之前主要做的是理論研究。我本人所做的是硬體的設計和軟體程式碼的移植。

移植的開源程式碼,做了那些修改?如何修改的?

  主要修改的是硬體的管腳,時鐘的配置,SPI匯流排的調試,晶片通訊過程的調試。

上位機部分你說用了卡爾曼濾波,有沒有調研過其他的濾波方式?

  沒有考慮,當時請教了也做這個方向的一些人,他們給的建議就是用卡爾曼就可以。沒有考慮其他方式。(其實最主要的是解決問題,能解決問題就可以)

  復盤:當時想到的第一個就是卡爾曼,因為卡爾曼在實際工程中應用比較廣泛且成熟,效果也不錯。當時就拿來試了下,定位精度得到了很好的提升。(定位漂移和抖動40cm左右。漂移和抖動的主要原因就是每次接收到的不止是多個訊號疊加的結果,卡爾曼濾波主要是濾除除了首徑訊號以外的其他訊號)

做的東西效果怎麼樣?和其他人做的對標了嗎?

  定位效果還可以,每秒鐘可以定位64個標籤。

  復盤:業界的評判標準主要有幾個方面。

整個工程文件有多少行程式碼?

  具體多少行不清楚,最後編譯的hex文件為112k

程式碼移植過程中遇到什麼問題,如何解決的?

  巴拉巴拉,通訊過程有點複雜,估計面試官沒聽懂,就沒往下問了(其實應該邊畫圖邊講的)。

  復盤:解決的整個過程應該描述的再詳細一些,重點突出關鍵部分,這個問題的三個部分都要講清楚!

項目中實際寫的程式碼量有多少

  沒多少,主要是硬體的設計和調試,軟體的移植,解決問題,修改。

  復盤:顯然面試官嫌棄程式碼寫少了,這個時候可以說微信小程式的程式碼自己寫了很多,70%以上。從0到1.

項目程式碼中多執行緒,多進程是如何運行的

  沒有用到多執行緒,多進程。

彙編,C++掌握怎麼樣?

  彙編自學過,可以看懂。C++基本沒用過。

  復盤:彙編是自學的,C++和C的語法差不多,都可以看懂。

重寫strcpy函數?

  寫完了給面試官解釋了下。寫對了

將一個暫存器的第三位的值從0改成1

  寫完了給解釋下。寫對了

你有什麼想問我的?

  如果我有幸能進入貴公司,驅動主要負責那部分?

主要還是看你分到那個部門,camera,音影片,IO驅動都有在做的。

  什麼時候能給到面試結果的答覆?

不確定,要先把面試過程的記錄交給HR。

總結

  1.我項目上做的是軟體+硬體的一個實現,面試官全程在問軟體,硬體一點沒問。

  2.在簡歷中寫了自己在寫部落格,放了一個鏈接,不知道面試官看沒看。

  3.面試的崗位是Linux驅動開發,全程沒有問一點像bootloader,Linux內核的輸入子系統,匯流排設備驅動模型等偏底層的東西。

  4.女面試官可能都不太懂硬體?全程都是軟體,而且自己的項目中寫的程式碼不是太多,主要是修改。面試官還是側重實際的寫程式碼能力吧。感覺涼了。

  5.全程35分鐘吧。

  6.總結下,項目考慮再深化下,如何講解?

廣州朗國電子科技(8.24)

一面(60min,9.14)

  無領導小組討論。沒有標準答案,上網搜索下無領導小組討論的注意事項,想好自己要扮演什麼角色。但是一定不要不說話,要有邏輯的表達自己的觀點。

二面(25min,9.16)

  HR面,主要問了家庭情況,有沒有女朋友,工作地點的問題,能不能接受加班,HR也很坦白的說,公司處在上升期。我們是標準的996。

三面(40min,9.18)

項目

  主要針對簡歷上寫的內容來問,項目畫原理圖,流程圖講清楚,並進行公式推導。

什麼是內核空間?什麼是用戶空間

內核空間和用戶空間通訊方式

為什麼需要uboot?不用行不行?

  用uboot的目的是引導內核啟動。

  我理解的,理論是可以的。把uboot中所做的一些工作寫進內核里,板子也能啟動。但是很少有人這麼做,畢竟內核很龐大,大面積修改難度比較大。

volatile關鍵字

總結

  9.25號發來郵件,要先簽兩方協議。這家公司做Smart TV之類的顯示設備的,Android驅動和Linux驅動都有,也有嵌入式應用層的。零食甜點下午茶,10點以後打車報銷,每個季度有獎金(0.5-1個月月薪),年終還有年終獎(據說可以拿到18薪),就是加班太多(據說996是標配,忙的時候9107),怕受不了。最後還是拒絕了。

浙江大華股份(9.3)

一面(30min,9.10)

  2020.9.8號做完筆試,9.10下午突然打電話來問是否方便,做個電話面試。

自我介紹

筆試題的建議

  筆試題好多關於C++的部分,個人是做嵌入式軟體部分的(偏底層)。做起來C++部分有些吃力。希望筆試題可以分嵌入式上層和底層的部分。

項目

  問了好久,面試官對我做的項目很感興趣。

static關鍵字

  修飾變數的話,這個變數的作用域只是本函數,而且如果多次調用函數的話,這個變數只會被初始化一次。修飾函數的話,函數的作用域只是在本文件內。

Arm有幾個暫存器?什麼是CPSR,SPSR?什麼時候用到?

  37個暫存器。CPSR是當前程式狀態暫存器,存儲的是當前程式的狀態,比如上下文的一些暫存器內容,程式運行的話就要用到CPSR。SPSR為備份的程式狀態暫存器,主要是中斷髮生時用來存儲CPSR的值的。

字元設備有哪些?和塊設備有什麼區別?如何寫一個字元設備驅動?

  字元設備有鍵盤,滑鼠等。字元設備和塊設備的區別主要是訪問方式不同,訪問字元設備是以字元流的方式訪問的,訪問塊設備是以塊為單位,並且可以隨機訪問。

  以一個LED驅動為例,先定義一個file_operations結構體,接著編寫init函數,在init函數中完成對管腳的映射,register_chrdev字元設備的註冊,class_create類的註冊,class_device_create在類下面註冊一個設備。exit函數中完成字元設備的卸載,類的卸載,記憶體空間的釋放。在open函數中完成硬體管腳的初始化,在write函數中完成點燈操作。

Uboot啟動過程說下?

  沒有難度。

堆和棧的區別?

  1.申請方式,棧的空間由作業系統自動分配,釋放,堆上的空間手動分配,釋放。2.申請大小,堆的可用空間比較大,棧的可用空間比較小,一般是2M。3.申請效率,棧申請速度比較慢,堆的申請速度比較快。

為什麼棧的空間不連續

  不知道。

通用學科,你喜歡那個,學得好的。

  數學,英語。

數學的那個分支比較感興趣

  矩陣理論。因為在許多問題的深入研究中,基本上50%以上的問題都會轉化成矩陣來解決。所以這部分看的比較多。

除了課本學的數學之外,自己私下有沒有看其他的關於數學的內容

  沒有,自己看的比較多的是專業方面的書籍。

專業課中,那個課學的比較好

  C語言,作業系統,電腦組成原理,Arm體系和架構

除了課堂上學的之外,某個領域有沒有深耕,自己研究過,私下看過

  Linux內核的源碼,作業系統,電腦組成原理,私下都會去花時間去了解,學習

如何學習的?以什麼樣的方式

  我在學習Linux驅動的過程中,會想到一些問題,比如UBOOT的啟動過程中為什麼會關閉中斷,關閉DCACHE,關閉MMU,關閉TLC等。遇到這些疑問我就會去查,解決問題的過程中會想到其他的一些問題,把這些問題記錄下來,一一解決。

  像Linux內核的話我最近再看一本書,趙炯老師寫的Linux0.12源碼剖析,這個書以Linux0.12內核為基礎,詳細介紹了內核的各個部分,雖然看起來比較吃力,但是我也在堅持閱讀。

  復盤:有條理更好。學習的形式主要分為兩種一種是在學習的過程中解決疑問,以解決問題為導向。比如,在移植UBOOT的過程中,我會想到為什麼要關閉ICACHE,DCACHE等,關閉中斷等(這裡可以拋出這些問題,以防後面會問),遇到這些問題我就會記錄下來,然後上網去查資料。在解決這些問題的過程中,可能會遇到其他的問題,繼續查找相關資料,直到最後都搞清了。第二就是系統的學習,如果有比較充足的時間,我會去拿著像Arm體系和架構,作業系統,Linux源碼剖析這些書去一點一點的讀。去理解這些內容。以上就是我平時的一個學習方式

C/C++那個更熟悉?做過開發嗎?

  C更熟悉,做過開發,3000行程式碼的經驗。

Linux作業系統熟悉嗎?

  熟悉,常用的使用都是沒問題的。

平時有空了做什麼

  我會去學習一些新的知識,研究一些底層的東西,比如作業系統,電腦組成原理等。我到現在一直堅持的一個事情就是寫部落格。每周的話我都會把這周的疑問,這周學習的新的知識去做一個總結,每周都會要求自己去發布一篇部落格,對本周的內容做一個總結。

  復盤:有空的話我更多的時間還是投入到對於技術的學習中,在學習的過程中我會通過寫部落格的方式來輸出自己的想法。每周我都會去堅持寫一篇部落格,部落格的主要內容就是這周的學習的新知識以及遺留的疑問的解決。

反問

  這個算第一次面試嗎?什麼時候會得到這次面試的結果?下次面試是否會提前通知?

  算第一次面試。結果的話這最近兩三天會給到。因為人比較多,面試不會提前通知。

總結

  面試時間35min吧,整個面試過程還是很順利的,問的問題基本都答了上來,唯一 一個關於棧的空間不連續的問題,確實是自己的知識盲區了,後面也補上了。

  回想起來。有些問題應該想好再說,注意條理性,問你什麼答什麼,不要有廢話。

二面(35min,9.12)

自我介紹

進程和執行緒的區別

  1.進程是系統進行資源分配和調度的一個基本單位,執行緒是CPU調度和分配的基本單位。2.進程有自己的獨立地址空間,執行緒是共享進程的記憶體空間的。3.進程切換的開銷大,執行緒切換開銷小。4.多執行緒程式只要有一個執行緒死掉,整個進程也跟著死掉了,多進程程式中的一個進程死掉並不會對另外一個進程造成影響。

死循環有幾種方式來寫

  for(;1;){},while(1){},do {} while(1);

看你寫的熟悉內核的匯流排設備驅動模型,講解下。匯流排設備驅動模型和字元設備有什麼區別?

  匯流排設備驅動模型和字元設備驅動並不是一個平行的概念,匯流排設備驅動模型是在字元設備驅動模型的基礎上套一個外殼,其實內部的驅動編寫方式仍然和常規的字元設備驅動基本是一樣的,這樣做的目的為了隔離BSP和驅動,使得驅動具有更好的可擴展性。

Uboot如何引導內核啟動的?

  uboot引導內核啟動主要向內核傳遞三個參數R0,R1,R2,第一個參數R0,默認為0。第二個參數,R1,CPU ID,告訴內核板載CPU的型號。第三個參數R2,告訴內核映像文件存在什麼地方,板子還剩多少記憶體空間。這些參數的傳遞都是以tag_list的方式傳遞的。

主要擅長的開發語言

  C語言最擅長

左值和右值

  左值可寫,右值可讀。通常,左值可以作為右值,但是右值不一定是左值。

數組名和指針區別

  數組名對應的是一塊記憶體的地址,指針是指向一塊記憶體地址。數組名對應的記憶體地址不可以修改,指針指向的記憶體地址可以修改,更加靈活。數組存放的是數據內容,指針存儲的是地址。

平常像C++,python這種語言有涉及嗎

  C++能看懂,會改。自己獨立寫一個大程式的話不太行。彙編的話是自己學過的,能看懂,會改。python語言沒有涉及到。JS/HTML/CSS這些前端的語言是自己在項目中實際用過的,使用沒問題。

  復盤:先拋出結論,C++ 彙編 JS/HTML/CSS這是我會的語言。然後再描述。

之前做的項目都是偏底層的實現,對吧。

  不是。能稱得上是底層的就是第二個項目吧,移植uboot2012到2440的開發板。第一個項目的話是硬體軟體的一個設計開發,沒有涉及到底層的東西。

  復盤:如何清晰的描述第一個項目。第一個項目主要做的就是硬體的設計,軟體程式碼的移植,是偏上層的,沒有和底層相關的技術。

你自己考慮的話以後自己是偏向底層的開發對吧

  對的

是偏向系統呢,驅動呢,內核呢?

  我目前考慮的是做驅動開發

為什麼是驅動開發呢

  我覺得做底層這一塊比較有意思吧,像做驅動開發的話,我們知道像Android的camera驅動,音影片驅動這些,都是獨立的一塊,每一塊拿出來都值得研究,我個人也比較傾向於從事有挑戰性的工作。目前考慮的是先做Linux驅動,以後如果有可能的話會去做Android的驅動,再慢慢的到camera驅動,音影片驅動這些。這也算是我的一個職業規劃吧

  復盤:回答的有點跑偏了,不過不要緊,還是向面試官表達出了自己做這個行業的一個規劃。

  下次這樣回答:因為我覺得做底層的話,可以更清楚的知道我們的程式是如何運行的,程式編譯完成後是如何在記憶體裡面排布的,我個人對於技術好奇心很重,經常會想一些問題,比如在uboot啟動過程中可以把dcache,icache都關掉嗎,Linux內核是如何知道我現在所處的環境(運行於那個cpu上,其實就是uboot和內核參數傳遞方式,故意說的不清楚,讓面試官問你)等等。對於這些問題,我喜歡刨根問底都搞明白。因此我喜歡做驅動開發。

除了上課外,你會看一些什麼樣的內容呢?

  我最近在看的兩本書是Linux內核源程式碼情景分析,趙炯老師的Linux0.12內核完全注釋。昨晚我在看的是Linux內核的源程式碼情景分析中的數據結構部分,包括鏈表,隊列,二叉樹等是如何實現的。(很巧了,正好昨晚看了這部分)。此外,每周的話,我都會去學習一些新的知識,把自己的感悟和其他人對於這個問題的看法記錄在部落格裡面。大概就在些把,做的最多的就是寫部落格,從輸入到輸出的一個回饋把。

  復盤:先拋出結論。先說,做的最多的就是寫部落格了,從輸入到輸出的回饋,巴拉巴拉。

  我每周做的最多的事情主要有兩個。第一個是學習新的知識,學習一些自己感興趣的內容,比如我最近在看的書。第二就是寫部落格,每周我都會寫一篇部落格,這篇部落格的內容主要就是本周學習的知識的總結,或者是之前遺留的疑問的解決。

除了知識學習外,平常還有什麼愛好

  每周都會跑步3次左右,每周最少打一次籃球。

看你寫的部落格,11個月,104篇,相當於每個月差不多10篇左右吧。

  這104篇中有好多是我在自學Linux驅動開發過程中的一些筆記,隨筆。在學習的過程中就順手記錄下來了。其實到後面慢慢發現,一個月內想要產出一篇不錯的文章的話,還是要花一點時間的。所以說,我現在對於我自己的一個要求就是每周一篇,保證品質。不像之前那樣,以一種記筆記的形式。

這些文章中那些是訪問量比較高的

  單鏈表的增刪改查反轉等操作,單鏈表的冒泡,快排,歸併等排序,線索二叉樹等。

數據結構也是自學的嗎?對樹熟悉嗎?說下那些樹,有什麼特點

  滿二叉樹,所有根節點都會有兩個子節點。平衡二叉樹,根節點的左孩子比根節點的值要小,右孩子比根節點的值要大

  復盤:平衡二叉樹都回答錯了。

做驅動過程中,有沒有針對某一個點的優化和改善?

  猶豫了半天,沒有想起來。尷尬!

  復盤:最基本的按鍵驅動啊,由查詢方式改為中斷方式。Uboot的啟動過程中,將重定位的程式靠前存放(鏈接腳本),保證在4K以內的程式碼能完成後面程式的複製。

反問

  我什麼時候能得到二面的結果呢?

一周之內。後面會有HR聯繫你的。

  接下來還有幾輪面試

應該還有一輪面試。HR面完了之後會綜合評估,給出offer。

總結

  總體還行吧。70分。面試問的技術問題都是自己在資料中總結到的,二叉樹的說錯了,不知道面試官發覺沒有。面試中很大一部分時間都在聊部落格的事情,也算自己擅長的方向。

  最後一個問題 回答的不好,實在沒想起來,現在想想,舉一個差不多的例子就可以了。直接回答不會有點不好。

三面(15min,9.14)

面試完了有什麼收穫

  有些問題本可以回答的很好,但是由於沒什麼經驗,答得不太好。

目前投了那些公司

  就投了兩家,一家是XX,另一家就是大華,大華是面試進度最快的。(其實已經投了幾家了)

家庭成員的情況。對工作地點有沒有要求?

  如實回答就可以。

期望的工資

  我說,公司應該都有個統一的標準,按照標準來就好了。HR說你最好還是說一個吧,我說了XXX。

目前有那些OFFER

  當時怕壓價,就說了有了XX和XXX的offer(實際上都沒有啊)。其實這裡說漏嘴了,之前說只投遞了兩家,哪裡來的offer?不知道HR有沒有意識到。(如果大華的同事看到了,不要打我啊,哈哈。)

反問

  什麼時候有結果?

一周之內。

總結

  今天已經是9.21了。仍然沒有結果。明天問下吧。

  最終的offer發出是在9.30號,看了下也比較滿意!

兆易創新(9.3)

一面(50min,9.21)

項目問了很久

  30min

字元設備如何寫,框架

  資料總結的驅動框架裡面有。很容易答了上來。

LCD驅動框架

  資料總結的驅動框架裡面有。很容易答了上來。

uboot啟動流程

  資料總結的驅動框架裡面有。很容易答了上來。

SDRAM介面地址

  具體地址忘了,但是我知道他是接在bank6的

你是北方人,對工作地點有要求嗎。

  我:沒有。我主要看重我在公司做什麼。

向你介紹下我們部門吧。巴拉巴拉說了很多工作內容後(當面試官說這個的時候,我覺得就有戲了),主要是做指紋晶片的,工作內容大多集中在在Android底層和hal層,給客戶解決問題要佔50%的時間。

  其實個人不太喜歡這個工作,主要是有點FAE的感覺。但是當時沒說出來。

二面(15min,9.25)

如何了解到兆易創新的

  很多比賽都是兆易創新贊助或者以兆易創新的名字命名的,我也參加了兆易創新今年舉辦的研電賽,我們在研電賽中獲得了全國三等獎。

目前手上的offer?給你開了多少?

  大華,全志。還沒談。(當時也是為了怕壓價,說了手上有兩個offer)

何時發三方?先拉進群

  10月底,11月初。

工作地點去深圳還是上海?

  再考慮下。

父母對於工作地點的要求

  沒有。

打算在上海,深圳落戶嗎

  沒有。

  直接拉進offer群里了,200+人,群里好多電科大,西電的,西交,西工大的,我在群里都不敢發言。

總結

  個人還是不太喜歡這個工作,主要是做Android底層和Hal層,還給客戶解決問題,佔用了50%的時間。其實30%的時間是可以接受的,50%有點多了。感謝兆易創新對我的認可,不好意思!

景嘉微(9.13)

  景嘉微的面試還是專業的。一天之內三面。每次面試都是兩個面試官,二面還是一輪壓力面。

一面(35min,9.23)

項目

  問的不詳細,基本都是原理之類的,解釋清楚就好。

看你學過數據結構,自學的嗎?刷了多少題?問個簡單的吧

  自己學的。具體多少沒算過嗎,大概有200道左右吧。

  如何判斷一個數是不是質數??真不會,忘了質數的概念,想了半天,面試官說,估計你對質數概念不了解,算了。

自旋鎖和訊號量說下

  答對了。

二叉樹什麼時候會退化?什麼是平衡二叉樹?

  不知道什麼時候會退化。平衡二叉樹就是左右子樹度的差值小於1.

uboot啟動流程

  說了很多遍了。

Cache一致性

  不知道這個概念。但是我具體說了下讀寫Cache的一些注意問題,比如初始化的時候一定要清空Cache之類的。

如何寫一個字元設備驅動

  init函數,exit函數,file_operation結構體之類的東西

uboot啟動為什麼要關閉中斷,MMU,DCACHE之類的

  非必須關閉吧。uboot的目的就是引導內核啟動,而且uboot啟動的話只是把需要的打開了,其他非必須的都可以關閉。當然也可以打開。DCACHE之類的必須要關閉,因為SDRAM沒有初始化,可能會取到錯誤的數據。

bin文件和elf文件區別

  不清楚。後來在自己總結的面試知識點中增加了這個內容。

什麼時候用哈希?哈希衝突如何解決?

  對時間要求比較高,對佔用記憶體空間大小要求不高。開放地址法,再哈希法。

二面(45min,9.23)

項目原理的介紹

寫部落格的目的

  之前也考慮過這個問題,當時說了4點。1.隨筆的形式,方便自己回顧。2.好的學習習慣 3.認識了很多業內前輩。4.習慣之後,堅持每周輸出。

看你寫了很多獎項,好多是校級的,有其他的嗎?

  有一個國家級的,研電賽全國三等獎。

項目難點

  巴拉巴拉。

還有各種針對本人的問題,總之就是壓力面,一直否定你這個人

  你簡歷上寫了這麼多獎學金,你覺得你是你們周圍最優秀的嗎?為什麼?你和別人差在哪?為什麼本科畢業不直接參加工作?為什麼考研?本科期間都做了哪些事情了?有什麼收穫?你覺得你是最努力的嗎?以前是不是沒有努力?為什麼在看C primer plus?是基礎不好嗎?等等這類的問題。(這種問題沉著冷靜的如實回答就可以。不要讓面試官覺得你人有問題)

三面(30min,9.23)

印象最深刻的人

自我介紹

介紹項目

最成功的項目

項目難點

如何克服和學習項目的難點

如果一筆訂單需要你的上級審核,但是上級很忙,你會怎麼辦?

  如果這個客戶是和我們第一次交易並且時間又很緊急,那麼可以考慮找上上一級領導。如果這個客戶已經和我們有過多次交易並且上級領導實在沒時間,那麼我也可以審核。

  復盤;反思了下,這裡其實不該回答「自己也可以審核「這些話的。一般來講,公司肯定有應對措施的。按照公司的流程走就好了。

總結

  9.25發來Offer,國慶節後給答覆。公司是在長沙,做顯示卡的,主要客戶是部隊。不是很想去,國慶節後上班第一天就給了景嘉微答覆說不去。

全志科技(9.15)

一面(20min,9.23)

項目簡單介紹

進程和執行緒區別

  問了很多遍了。

編程題:指針函數,函數的參數為int,返回值為字元指針

 

char *((*p)(int))

宏定義求最大數

​ #define  MAX(a,b) (a)>(b)?a:b

uboot啟動流程

  問了很多遍了。

二面(40min,9.26)

  一個酒店,和研發部總經理聊了聊受益匪淺。

為什麼寫部落格?

  之前也考慮過這個問題,當時說了4點。1.隨筆的形式,方便自己回顧。2.好的學習習慣 。3.認識了很多業內前輩。4.習慣之後,堅持每周輸出。

項目原理,五分鐘給我講明白

  邊畫圖邊講。

為什麼學Linux?用的什麼開發板?啥時候買的?多少錢買的?自學的嗎?有人引導嗎?學了多久?

周圍搞Linux的多不多?

作業系統會嗎?電腦組成原理了解多少?

  了解一點,沒有時間去完整的看。

為什麼沒有時間完整的看?

  白天忙導師安排的事情,還要寫論文,改論文,寫專利等等,晚上才有時間學習一些內容。當時緊接著又說雖然沒時間完整的看,但是作業系統說基本的概念還是都理解的。

說下MMU。什麼是MMU?為什麼需要MMU?來龍去脈講清楚

  大概講的是這個裡面的一些內容:

  S3C2410 MMU(存儲器管理單元)詳述
  物理地址到虛擬地址的映射,為了跑大型程式,操作更多的地址

是虛擬地址到物理地址的映射,你搞反了。

緊接著又說,我最看重的是作業系統和電腦組成原理的掌握程度,這些都是嵌入式的基礎中的基礎。

  這些都是放在我計劃之中,不過我目前在看源碼的框架。

先不要看源碼,不懂作業系統和電腦組成原理,看源碼會累死。我們之前一個項目要修改內核中的關於調度的程式,我研究進程調度這部分,研究了兩周多才修改完。所以,有時間還是補下電腦基礎。源碼的內容別急著看。

  面試官確實很厲害。也和自己說了很多。所以接下來調整下戰略思路,先看作業系統和電腦組成原理

在校期間,就要把基礎打牢,好好看書。

  之前面試其他公司,面試官問的關於作業系統的一些內容能答上來,這裡我有點膨脹了,居然和面試官說作業系統的基本概念都理解。一下就被面試官問倒了。所以,如果不是特別熟悉,不要和面試官說我精通XXX之類的話,否則,肯定會被面試官問到不會為止。吸取教訓!

HR面(20min 9.26)

  最後去另一個房間和HR聊了聊待遇和薪資,待遇一般,而且工資組成裡面還有20%的績效,上下浮動。不打算去。而且,因為之前全志也鬧過裁員風波,所以試探性問了下HR試用期會裁多少人?HR回答的是我們並不規定具體的指標。我接著又補充說到,那麼我是否可以理解為沒有上限也沒有下限呢?HR說是的。所以,直接拒了。

  和HR聊完了,順便問了下面試官的名字,HR說這是他們XX部門的研發總監。和這個面試官聊天,確實學到了很多,受益匪淺!

小米(9.15)

一面(40min,9.21)

自我介紹

  首先是自我介紹,本來準備的是三分鐘的自我介紹,但是中途被面試官打斷了,說面試時間有限,簡短一點,要不後面沒有時間寫程式碼了。就介紹了下自己寫部落格的事情。接著面試官也很直接,上來就基礎知識開始問。

進程和執行緒的區別

  答對了。

  進程是具有一定獨立功能的程式關於某個數據集合上的一次運行活動,它是系統進行資源分配和調度的一個獨立單位。例如,用戶運行自己的程式,系統就創建一個進程,並為它分配資源,包括各種表格、記憶體空間、磁碟空間、IO設備等,然後該進程被放入到進程的就緒隊列,進程調度程式選中它,為它分配CPU及其他相關資源,該進程就被運行起來。

  執行緒是進程的一個實體,是CPU調度和分配的基本單位,執行緒自己基本上不擁有系統資源,只擁有一些在運行中必不可少的資源(如程式計數器、一組暫存器和棧),但是,它可以與同屬一個進程的其他的執行緒共享進程所擁有的全部資源

  在沒有實現執行緒的作業系統中,進程既是資源分配的基本單位,又是調度的基本單位,它是系統中並發執行的單元。而在實現了執行緒的作業系統中,進程是資源分配的基本單位而執行緒是調度的基本單位,是系統中並發執行的單元。

  不全。面試官又提醒了。進程間通訊方式有那些,也回答上了。管道,FIFO,訊號,訊號量,消息隊列,共享記憶體(最快),套接字。

殭屍進程聽過嗎

  沒有。

static 和 volatile

  答對了。

  static主要是改變函數和變數的作用域。volatile防止對暫存器進行優化,使得每條指令都要按照我們寫的進行運行

兩個Linux作業系統之間使用什麼命令進行文件的傳遞?

  我不知道是什麼命令,但是我可以說下我的想法,我覺得利用HTTPS協議可以進行傳輸。

不是命令,這是協議。

數據結構學過嗎?說下你知道的排序演算法?

  在校沒有學過,但是我自己私下學過。排序演算法:快排,選擇排序,冒泡排序,插入排序,堆排序。

說下快排的過程,快排的時間複雜度

  巴拉巴拉,也答對了。

手撕程式碼

  反轉字元串中的單詞 I am a teacher -> rehcaet a ma I

  很基礎的問題,A了出來。

最後反問

  什麼時候有結果?

不確定,一周以後吧。

總結

  有好多基礎知識沒打上來。主要集中在作業系統相關的概念上。確實不知道,接下來要好好補充了!

二面 (50min,9.25)

項目問的很細

  20min,原理和流程圖

typedef和 define有什麼區別

  1.typedef在編譯時處理,具有類型檢查的功能;define在預編譯時展開,不會進行錯誤的檢查,只是字元的替換。2.define沒有作用域的限制,typedef有自己的作用域。3.typedef定義指針的別名時,別名可以連續定義兩個指針變數。define定義指針的別名時,使用這個別名連續定義兩個指針變數會報錯。

數組下標可以為負數嗎

  沒見過,應該可以吧。

不能用 sizeof()函數,如何判斷作業系統是16位,還是32位

  16位系統中,int變數的範圍-32768到+32767,32767+1變為-32768。可以利用這個特性來判斷。

IIC如何發送一個數據?IIC時序圖畫下。IIC晶片有哪些?

  回答的還可以。

用戶棧和內核棧是同一個區域嗎?有什麼區別?

  不是。用戶棧和內核棧是兩個獨立的區域。內核棧保存的是內核態程式運行的時候相關暫存器資訊,用戶棧保存的是用戶態的內容。

用戶空間和內核空間的通訊方式?

  1.API函數,Copy_from_user,get_user等。2.proc文件系統 3.mmap系統調用 4.使用文件

中斷的響應執行流程?聽過頂半部和底半部嗎?講講

  cpu接受中斷->保存中斷上下文跳轉到中斷處理歷程->執行中斷上半部->執行中斷下半部->恢復中斷上下文。

  頂半部執行一般都是比較緊急的任務,比如清中斷。下半部執行的是一些不太緊急的任務,可以節省中斷處理的時間。

寫過那些驅動?講下LCD驅動如何編寫?

  巴拉巴拉,問了很多遍了。

手撕程式碼

  給定一個數組,找出和為s的數字。二分查找,A了。

反問

  如果有幸進公司,主要負責那些方面?

IO驅動,音影片驅動,內核的優化移植都有。看個人興趣和過往經歷的匹配程度。

  多久出結果呢?

月底前應該會給

三面(10min,10.15)

家庭情況

期望薪資

有沒有女朋友?工作地點是北京還是深圳?

  北京。

總結

  發下offer已經是10.20號了,太晚了,三方早已經寄走了,綜合考慮,感覺性價比不是很高。如果沖著小米的平台去,確實還不錯。其實心裡有點小後悔。不過也就這樣了,註定與小米無緣。

中國長城科技集團(9.15)

項目

  15min。

你知道的Linux指令有那些

  ls,ps,rm,cat,mv。

busybox是什麼?

  縮小版的unix系統常用命令工具箱。主要包含了一些常用的Linux指令,環境等。

什麼是根文件系統

  根文件系統上是內核啟動時所掛載的第一個文件系統,內核程式碼映像文件保存在根文件系統中。

為什麼寫部落格?

  之前回答過了,四點。

反問

  這個崗位主要負責什麼?

你的崗位是Linux系統工程師,主要是負責作業系統的優化和移植。

總結

  9.25號微信告訴我面試通過了,問我是否簽約,綜合考慮了下,拒絕了,抱歉!公司其實還不錯,在長沙,一年保底16薪,包食宿,長沙人去蠻適合的。

CEC子公司-北京華大電子(9.15)

  面試官是兩個人,一個HR,一個40多歲的主管。沒問很深的技術問題,主要問了項目和寫部落格的事情。他們主要做WIFI晶片和SOC的,更多的可能是應用層的開發任務。待遇給的還可以,但是覺得平台小了,拒了,抱歉!

京信通訊(9.16)

一面(10min,9.21)

  具體問了什麼忘記了。但是都不難,很基礎的。(有史以來最短面試,10分鐘就完了)

二面(15min,10.19)

  早上九點半進入騰訊會議,發現還不止一個人。幾個面試者就隨便聊了幾句。大家都不知道接下來是技術面還是群面,還是HR面?提前也沒有通知面試的內容。後來進來一個女的說,大家可以耐心等待,有興趣可以一起聽下,我們挨個面。每個人大概20min左右。

  第一個人面試完,HR讓第二個人來,我看大家都沒反應,我就第二個了。

自我介紹

你做決定的過程是怎麼樣的?

offer情況?期望薪資?工作地點?

反問

  大概多久會發offer?多久之後會談薪?

一周之內

總結

  感覺面試不是很正規,電話面面試官遲到20min,而且也沒問幾個技術問題,10min就完了;一面和二面戰線拉的太長了,不知道其他人有沒有,反正我是這樣。也可能是太菜了,後面才被撈起來的。10.23HR打電話確認是否接受offer,拒絕了,抱歉!

海格通訊(9.27)

一面(20min,9.27)

  群面,五人一組圍一圈,每個人做自我介紹,HR會單獨提問,大概內容就是關於哪裡人,家庭,父母工作,對海格了解有多少等等。

二面(25min,9.27)

項目

你知道的常用Linux命令

  mv,ls,cat,ps,mkdir,touch,find。

IO多路復用

  不知道,但是我知道IO管腳的復用,巴拉巴拉解釋了下。

在Linux上編寫過那些程式

  基本的外設驅動都寫過,led,按鍵,lcd,Nand Flash等。

程式的編譯過程分為幾部分

  預處理,編譯,彙編,鏈接

什麼是4位元組對齊?為什麼需要對齊?

  資料總結的有。

如何求一個結構體成員變數的地址

  正好前幾天寫了一個部落格。

  內核中container_of宏的詳細解釋

函數指針和指針函數

  資料總結的有。

什麼是野指針?如何避免?

  資料總結的有。

sizeof和strlen區別?

  sizeof是運算符,在程式編譯時就已經確定了;strlen是函數,程式運行時才能計算。

int a[5] = {1,2,3,4,5},sizeof(a) = ?

  20。

快速排序的思想?時間複雜度?

  理解為打撲克整理牌,O(nlogn)。

哈希表是什麼?如何使用?

  答對了。

反問

  如果有幸進入貴公司,主要負責哪方面?

負責調試和維護基本的外設驅動,配合硬體工程師進行新平台的開發。

  什麼時候可以得到這輪面試的結果?

明天。

三面(10min,9.28)

  黨委副書記面試,全程很放鬆,就是普通的聊天,自我介紹,哪裡人?為什麼選擇來南方讀書?對於海格了解多少?如何看待加班?能接受加班嗎?職業規劃等?

四面(15min,9.28)

  大boss面試,好像是個總經理,自我介紹,介紹下項目,項目幾個人?你負責那部分?除了這個項目研究生期間還有那些團隊合作的項目?你是扮演什麼角色?你導師研究那個方向的?為什麼你和導師的研究方向不一樣?你覺得研究生期間導師對你的幫助大不大?女朋友哪裡的?做什麼工作的?有考慮過在廣州定居嗎?為什麼?等等吧,還有些想不起來了。

總結

  整個面試感覺濃濃的國企風味,很看重人的綜合素質,對技術要求感覺不是很高。9.29約去談薪,與其說是談薪,不如說是直接告訴你。沒有argue的餘地。統一打包價。拒絕了,抱歉!。

簡歷被刷

oppo(8.23)

  不得不說,oppo的簡歷卡的是真的嚴格。全是人工篩選。不止要看你的學校,還要看你的項目經歷是否匹配。我這被刷了也很正常。

筆試/測評掛

海康威視(9.1)

 測評居然掛了,很可惜。

樂鑫(8.18)

  之前樂鑫的HR說,提前批投遞不影響秋招。所以很早就投遞了樂鑫科技。樂鑫是我第一家筆試的公司。當時筆試題目是三道編程題。巨難!比華為的筆試題難度都大。而且,第一次用牛客的筆試系統,最基本的如何讀取輸入輸出都不會,於是筆試直接掛了。

  9.8號找HR確認說,提前批掛掉的會自動推到正式批。但是我等到9.19號也沒有收到筆試。後來HR讓我去官網看自己的簡歷的狀態,結果顯示人才池!正式批都沒有筆試就直接人才池了?什麼操作啊。。說不影響有點假,其實還是有影響的。可能提前批筆試掛掉的是不會有機會參加正式批的。(自己猜測)

CVTE(9.16)

  C廠的筆試掛的就很玄學了。當時對C廠還是抱有很大期望的。筆試題目中規中矩,大題也都A了出來。選擇填空做的正確率應該有80%。但是最後筆試莫名其妙掛了。我同學投研發崗的無一例外筆試也都掛了。難道100分的題目,90分及格線?以後做C廠筆試題,大家要格外小心,盡量還是要高正確率!

  12.9號,接到CVTE HR打來的電話,說在補錄,約個時間面試。手上沒有三方了,拒絕了。

沒消息

寒武紀(9.3)

  9.16號筆試之後就沒消息了。三個大題,A了1.5個。(其實這個公司也不太了解,看到了有崗位就投了,據說是AI四小龍的老大)

華為(9.10)

  8月份華為在線上做專場宣講,當時的宣講會每個部門都做了介紹,給了微信群,我也加了幾個群。加到群里後HR會主動加你好友,直接打語音電話解決你關於投遞崗位的疑問,很是熱情。每個部門的HR都會說我們這裡有很多HC,建議投遞我們部門。

  在選擇部門時,主要考慮以下幾個方面。鑒於今年的情況,華為的消費BG是不考慮了,畢竟晶片斷供,手機業務也大打折扣,很大可能是縮招的。無線部門,也不考慮了。神終端,聖無線的名號不是吹的。而且,華為的無線部門成績要求也比較高,10%左右?(別的部門的HR說的)。最後考慮智慧車BU是新成立的,而且智慧車BU的HR也極力推薦我們投遞。於是就投遞了智慧車BU。

  投遞之後,在網上搜索關於這個部門的情況,看到了一條消息,大概意思就是說,這個部門的人數不會太多,要小而精。瞬間感覺到有點被車BU的HR坑了。

  9.14筆試,大題A了第一道。後面兩個沒做。9.16發的測評鏈接。9.19問所投遞部門的負責人說,第一批面試暫時截止了,後面還可能會有HC,名額不會太多,但是到了十月以後了。十月份再給HR發消息,HR已經不回復消息了。相反,投遞其他部門的同學,在9.19-9.24這周都安排了面試。

  怎麼說呢,怪自己投遞晚了吧,而且加上華為今年形勢緊張。當時主要考慮,還沒有準備好,而且華為基本是一天結束三面。沒有準備好過去當炮灰也不值。所以投遞有點晚。現在準備好了,但是已經錯過了時間節點,有點可惜。

  華為技術面試的準備和經驗分享【完全攻略,已簽約】 精
  各位大佬,求華為面試手撕程式碼
  華為這波操作以後,中興可能成了最大贏家
  大半夜的睡不著談談華為秋招的看法。。

更多關於華為招聘的內容,可以去牛客網搜索下。

  11.30號,12.3號下午,分別接到了華為Cloud&AI和消費者BG的HR打來的電話,問了下我的基本情況,讓我繼續投遞簡歷,考慮到已經沒有三方了,就拒絕了。而且華為的人才池海了去了,這個時間節點還在拉人面試,猜測可能是HR的KPI還沒完成吧。

BOE(8.25 & 9.12)

  很奇怪,提前批投了沒消息,正式批也不給筆試。太難了。

恩智浦(9.15)

  聽說只招211/985?

瑞芯微(9.17)

  挺想去這個公司的,但是也沒消息。

紫光展銳(9.18)

  主要是投遞晚了。而且,很搞笑,只發了筆試簡訊通知筆試,在筆試當天卻沒有收到筆試鏈接。後來問了HR說:不好意思,這是我們第一次全網招聘,系統BUG了,後面我們會統一處理的。後面又發郵件問了幾次HR什麼時候安排筆試,回復也是很官方。太難了,錯過了九月的最後一批筆試。

  11.1號晚上12點發簡訊讓11.2號下午直接參加面試,考慮到已經沒有三方協議了,拒絕了。

聯發科成都(9.18)

  投遞晚了啊,聯發科成都那邊可能是不缺人了,一直沒消息。

小馬智行(9.18)

  隨便投的,後來才知道這個公司基本只招985。

總結

  整個秋招還算是比較順利的,雖然九月初的時候有段時間心態有點崩,但是及時調整過來了。感覺秋招也很戲劇性,六分運氣,四分實力。運氣好,和面試官聊的順利,說不定還能拿到sp,ssp。但是,也不能一味的去靠運氣。機會總是留給有準備的人,機會沒有到來時,要認真準備。當機會來臨,我們要好好把握。

  最後祝所有看到這篇文章的小夥伴,在秋招中都可以拿到心儀的offer。

  養成習慣,先贊後看!如果覺得寫的不錯,歡迎關注,點贊,在看,轉發,謝謝!

有任何問題,均可通過公告中的二維碼聯繫我