
作者:無能狂怒LIAM崔
著作權歸作者所有。AI開發者獲得授權轉載,禁止二次轉載。
https://zhuanlan.zhihu.com/p/76280626
注:封面圖檔來自網絡
本人普通211研一在讀(9月份開學研二),2019年1月開始接觸SLAM,到昨天拿到某公司實習offer。閑話不說,大家更關心的是:
一. 面試機會如何得到?
二. 面試的流程?每一輪面試問題都是什麼?
三. 提供一些面試的經驗?最好具體到每一輪?
面試機會如何得到?
一切的一切還要從一本書和一門課和一個論壇說起。
高翔博士的《視覺SLAM十四講》應該是耳熟能詳的SLAM入門教材了。2019年3月份,在師兄的推薦下,我開始閱讀這本書,兩個月左右,啃完了這本書。但這之後我并不知道應該做些什麼,甚至如果不能用到實踐中,我根本不知道自己學完這本書之後,到底得到了什麼。
機緣巧合,我的一個同學在朋友圈發了一門課程,叫做《從零開始手寫VIO》,哪裡的課程我也不說,免得有做廣告的嫌疑,不過用了都說好,誰學誰知道。我報了第一期,就這樣開始了進階的學習之旅。學習之旅很艱難,工程實踐經驗的缺少,和數學公式的推導讓我非常頭痛。在這段期間,我遇到過很多問題,也幾度因為代碼調試不出來而感到挫敗,但這畢竟是學習的一部分,也是我跨過SLAM入門這個門檻的一部分。期間,我認識了幾個小夥伴能夠共同學習,互相讨論,鼓勵彼此,一點點把作業完成,積累自己的代碼和公式推導經驗。
就在課程進行了一個月左右的時候,我從一個人的朋友圈裡又了解到,七月份,第二屆SLAM論壇會在清華舉行。
報名論壇之前,我有些忐忑,因為我知道這上面講的東西不是隻有幾個月基礎的我能聽懂的,但我來這個論壇的目的有三:第一,了解巨佬們的開發經驗以及項目過程中解決問題的方法,或許在以後的研究中會受益無窮;第二,想知道自己認真學了這幾個月之後,到底達到了什麼程度,和大佬們還有多少差距;第三,希望能夠看到和認識更多優秀的人,跟他們多交流,給自己不斷向前的動力。
課程進行到一個半月,已經接近尾聲,這時候距離SLAM論壇也不久了,我馬上也要放暑假了。這時候我非常慌張,我迫切地感覺到自己需要一份實習,把所學轉化為所用,或者說在所用中延續所學。是以我就開始了第一輪的投履歷之旅。
隻要用心制作一份履歷,上面如實填寫項目和相關學習經曆,那麼得到面試機會不太難。切忌寫SLAM無關内容,以及胡編,以及誇大其辭,如實寫就好,做了什麼,會什麼即可。我履歷上面隻寫了跟SLAM相關的兩部分内容,一個是跟着師兄接觸過的orb_slam相關項目,另一個就是自己的課程。在課程中學到多少東西,能踏踏實實拿出一些來,說出自己的了解并能夠進行公式推導以及細化,就已經很優秀了。雖然略顯單薄,但并不影響面試。因為單薄歸單薄,但如果這裡寫的每一條都能展開很多,證明了解深入。
多投遞,我在實習僧,BOSS直聘上都有制作履歷并投遞,可以看到HR檢視履歷的進度,以及作出的回應。一般如果覺得還行的話,HR會在看到之後三五個工作日内郵件或者打電話過來。不過也有特殊情況,我這個就是過了十八天才聯系的,因為技術那邊的人出差才回來。而且正好因為我人在北京,能直接面對面交流,是以比也算比較幸運。
拿到面試機會部分結束。
面試的流程?每一輪都問什麼?
中國人喜歡欲揚先抑,我反着來吧,先說說通過的這家,然後再說沒通過的。
我這次的面試很集中,從第一天下午四點接到電話,HR跟我确認大緻意向,然後問了一些技術和項目方面的基礎問題,就跟我約好了晚上七點進行第二輪技術面試。大概晚上九點左右知道第二輪通過之後,就讓我掃碼做了一個公司的性格測評,然後通知我第三輪在第二天早上十點開始,我就坐大概一個小時的地鐵去公司,到了之後就填通路表,面試表,基本資訊表(預留20分鐘以上時間),然後就是上樓第三輪技術面試。面試談妥了之後,第四輪HR面,大概談一下薪資福利,工作時長及時間,同時也确認一下我履歷上的資訊都沒問題,剩下就是聊聊天,測試一下性格是否開朗,與人打交道是否熟練,等等一些面試常見又難回答出新意的問題,如果我覺得我的回答不錯,我就把答案寫在下面,其他平平常常的回答我就略去。每一輪的問題整理如下。
第一輪:HR大緻确認意向(隻貼比較難回答的問題)。
- 你有了解過我們公司嗎?說說公司的産品,它的亮點在哪裡?(還好提前了解過)
- 逆自我介紹中提到跟着師兄做了orb-slam的項目,能說說你在項目中遇到的最大困難嗎?(注意這裡HR隻問了困難,但他根本不關心困難,而關心你如何解決的,如果你隻說了困難,他還會追問如何解決,最好能說說解決的流程和方法,是面試加分項)
第二輪:技術面試(電話面試)
- 你在ORB-SLAM項目中承擔的角色以及做的貢獻?
- 解釋一下卡爾曼濾波?(沒回答太好,但回答了基于濾波和基于優化的差別以及基于優化如何做)
- 相機和陀螺儀之間的外參如何标定?
- ORB用什麼方法提取角點和描述子?
- 提取特征點的方法有幾種?分别說說
- ORB中改進的FAST角點提取政策?(這裡不是問FAST9的政策,他覺得這很基礎)
- 你提到了四叉樹原理,講一下大概的步驟?
- ORB提取不到特征點的地方怎麼辦?
- 解釋一下VINS-Mono的初始化部分以及大緻架構。(這個問題我回答得很亂,因為确實沒有形成體系,是以我直說了我不太懂,這也為我後面進入第三輪埋下了伏筆)
- 我沒問題了,你還有什麼問題嗎?(我認為這個問題非常重要,重要性完全不次于技術問題,後面面經會說)
第三輪:技術面(一對一,大眼瞪小眼面試)
- "其實昨天聊了很多,你面試完回去有了解VINS-Mono的初始化流程以及架構嗎?"
- "嗯,是下了點功夫,說一下VINS預積分分的推導過程吧,可以去那邊寫下來"
- "Marginalization的時候,資訊矩陣如何維護?"(基本也是推導過程...我太難了)
- "我沒什麼問題了,你還有什麼問題嗎?"(重複問題,但還是很重要...)
第四輪:HR面試(一對一,性格測評+表達能力+是否能把複雜的問題用簡單形象的語言表達出來)
- 你是做單目的哈,單目和雙目有什麼差別?(回答:跟我一起做個實驗吧,咱們都伸出左手食指,然後閉上左眼,你坐過來我旁邊,看我們能不能把食指對上。結果是真的對不上,再解釋一下單目和雙目的原理或者計算量差別即可)
- 說說大學的社團經曆?有女朋友嗎?
- 你是什麼星座?(工作狂摩羯)
- 說說你人生目前為止遇到最大的一次挫折?(聯考,此條回答對學霸不适用...)
- 為什麼想來我們公司?你覺得最吸引你的地方是什麼?(願景,酷炫的産品等等,這個我提前查了他們家不少産品手冊)
然後說說沒通過的,不想看的可以直接跳到下一部分,面經。
我在之前投遞履歷的過程中,面試的結果都并不理想,我歸結為以下幾點原因:
- 沒有針對自己履歷中提到的算法和架構進行詳細的閱讀和整理,也就是準備不充分。
- 一些基礎概念(如PnP/FAST角點的提取/ORB采用的算法/卡爾曼濾波/IMU和陀螺儀的參數标定,等等)隻是大緻明白,但不了解。
- 不夠認真,對面試官的問題隻聽懂了淺層意思,而他真正想了解的是你對算法的深入了解程度以及你是否有宏觀和微觀的不同角度了解。
- 面試官問到一些問題的時候,不會就是不會,他可能隻是為了測試你更偏向前端還是後端,并不是非要刁難,是以不必緊張,誰都有不會的東西。
來北京之前接到過兩家電話面試。
第一家:盈迪曼德INDEMIND
問題:
- PnP的原理是什麼?它是從幾D到幾D的?
- ORB-SLAM中的B是什麼?如何得到的?
- 代碼能力怎麼樣,自己寫過工程嗎?(工程實踐能力确實很重要...可惜我也不多)
- 說說雷射和視覺的差別?
- IMU和陀螺儀的方差都怎麼标定?
- 對IMU噪聲有沒有更好的處理辦法?
- 你對滑動視窗的了解?
- 邊緣化之後的矩陣變稀疏了嗎?
- 你還有什麼問題嗎?能實習多久?
第二家:四維圖新(點雲方向)
問題:
- 自己實作過什麼SLAM算法?說說實作的原理
- SfM的原理和算法
- BA的流程?
- 了解雷射點雲嗎?雷射和視覺的差別
然後給了我一套C++的筆試題,全都是連結清單的操作。雖然網上能查到一些,但現學确實不太來得及。不過我還是硬着頭皮做完了,跑出來結果也是對的,但發給他郵件之後再問就沒有消息了。
就這兩家。
貼出我面試這三家的時候,查閱過的一些連接配接。
https://www.zhihu.com/people/xiao-ma-kai/posts
https://zhuanlan.zhihu.com/p/67790046
https://www.cnblogs.com/buxiaoyi/p/8660854.html
https://www.cnblogs.com/gaoxiang12/p/5304272.html
https://blog.csdn.net/heyijia0327/article/details/52822104
https://zhuanlan.zhihu.com/p/28489469
https://blog.csdn.net/heyijia0327/article/details/17487467
https://zhuanlan.zhihu.com/p/66540565
https://zhuanlan.zhihu.com/p/67818202
複制
面試流程及每一輪問題部分結束。
提供一些面試的經驗?最好具體到每一輪?
第一輪:意向确認部分,最好說一下公司的産品,自我介紹,問題回答,自信點就好,一般都能進入下一輪。
第二輪:電話面試。如果是電話面試,可以查資料。你手邊的資料,可以電腦開個檔案,把常見問題寫下來。面試的時候帶着耳機,可以搜尋你查到的問題。也别照着答案念,有自己的了解當然是說自己的了解更好。别緊張,答不上來真的沒關系。直說不會或者說沒了解過即可。六老師說:"戲說不是胡說,改編不是亂編,什麼叫國際影星啊"(戰術後仰)(戰術狗頭)
最後的問題很關鍵。我還有什麼能問的呢?
我的問題是:您覺得,結合我今天表現的不足,您能推薦我閱讀一些什麼資料或者說我還需要改進的地方嗎?
他回答:有時間的話,把VINS-Mono的架構,預積分的推導,還有VINS初始化的流程看看,然後看看VINS的代碼。
大家看出來了,這就是第三輪他問我的兩個問題。
第三輪:需要提前到半小時左右,因為HR會給你一些表格,比如通路者登記表,個人詳細資訊表需要填寫,然後還要帶你到會議室,和技術面試官溝通。總之什麼時候都别讓對方等。
然後就是需要提前準備的,第二輪沒回答上來的部分要重點準備并了解記憶,準備一些C++的基本知識如虛函數/堆棧/重載等,再詳細準備一些公式的推導,第三輪隻會比第二輪難。
第四輪:這一輪的HR面就是一個直面自己的過程。面對自己的過去,和現在的缺點。他還是會問你很多基礎的問題,甚至他不懂,就是想聽你解釋,這也是以後和同僚共事的時候必備的耐心和溝通能力。還是需要自信。因為能到這一步,隻要性格測評不太偏激,薪資等問題沒有異議,基本就能拿到Offer了。如果說還有什麼加分項的話,那就是如果能幽默一些(别搞黃色啊),在問薪資的時候直爽一些,不要吞吞吐吐,在解釋問題的時候耐心細心,深入淺出,會是加分項的。