自動駕駛面試題匯總(2022秋招題庫)——持續更新

這份面試題整理自12家大廠的2022年秋招面試題。題目基本涵蓋了自動駕駛和機器人定位方向的主要知識點,包括慣性導航、點雲、狀態估計、CV/VIO、C++等部分。

建議大家先自己答題,再對照參考答案~(參考答案是由5位行業演算法專家整理並校對~),我們也專門建立了面試題交流群,進群方式見文末。

整理不易,點個贊再走吧!

目錄
1.慣性導航方向
2.點雲演算法方向
3.狀態估計方向
4.電腦視覺/vio方向
5.C++方向
6.參考答案(部分)

一、慣性導航方向

1.IMU測量方程是什麼?雜訊模型是什麼?
2.慣導誤差模型是怎麼來的?比如15維的卡爾曼濾波模型。
3.GPS雙天線安裝偏角是怎麼標定的?
4.多感測器之間是怎麼對時的?
5.GPS到來時是有延時的,而IMU給出的加速度和角速度是實時的,這種情況下怎麼處理延時?怎麼做的融合?
6.DR遞推的原理是什麼?大概怎麼去做?
7.組合導航卡爾曼濾波過程雜訊是如何調參的?

二、點雲演算法方向

1.最近鄰問題有哪幾種典型解法?
2.怎麼對KdTree進行插入操作?怎麼確定一個節點的分類面?
3.怎麼對KdTree進行Search By Range和Search By KNN操作?
4.舉出除了KdTree以外的近鄰計算方法(柵格、B樹、R樹、四叉、八叉樹等)。
5.給定一組點,如何計算其擬合平面?如何計算其擬合直線?解釋其方法的意義。
6.舉出常見的點雲的registration方法。
7.說明ICP的詳細過程,要求說明代數解法和匹配問題解法。
8.匹配問題除了最近鄰還有什麼解法?說明匈牙利演算法、最大流/最小割、譜方法等其中一種。
9.解釋混合高斯模型含義。解釋EM演算法的原理。

三、狀態估計方向

1.從貝葉斯濾波器角度推出卡爾曼濾波器方程。
2.從增益最優化角度推出卡爾曼濾波器方程。
3.從Cholesky方程推出卡爾曼濾波器方程。
4.解釋KF中的雜訊矩陣含義。運動方程中估計雜訊是變大還是變小?修正方程中估計雜訊是變大還是變小?
5.RTS與KF之間的聯繫?
6.將卡爾曼濾波器推廣至EKF。
7.解釋數值矩陣求逆的幾種做法(QR、Cholesky、SVD)。
8.什麼是Moore-Penrose逆?如何計算Moore-Penrose逆?
9.SVD是什麼?SVD是如何求解的?
10.特徵值是什麼?如何計算矩陣的特徵值與特徵向量?什麼樣的矩陣必然能對角化?不能對角化的矩陣的標準形式是什麼?什麼是Jordan標準形?
11.如何求解線性最小二乘解?如何求解零空間解?說明特徵值方法和奇異值方法之間的聯繫。
12.描述圖優化和最小二乘之間聯繫。畫出VIO中常用的圖優化模型。
13.稀疏圖優化的稀疏性體現在哪裡?要求答出稀疏Schur和稀疏Cholesky之一。
14.描述濾波器與最小二乘之間的聯繫?說明為什麼卡爾曼濾波器可以看成兩個時刻間的最小二乘。
15.說明UKF、EKF和PF之間的關係。
16.解釋UKF中的Sigma取樣點關係。
17.解釋PF中的重要性重取樣的過程是如何做的。解釋輪盤賭原理。
18.解釋李群李代數在三維狀態估計中的作用。
19.流形是怎麼定義的?流形在局部與R3同胚是什麼含義?為什麼說SO3是一個流形?
20.解釋SO3, SE3中的Exp和Log的原理。解釋BCH的原理和作用。
21.分別使用左右擾動模型,求解幾個常見的雅可比:

22.解釋四元數的更新與SO3的更新方式有何異同。
23. 說明四元數運動模型與SO3運動模型之間的聯繫。
24. 解釋高斯推斷和概率學中邊緣化之間的關係。解釋邊緣化與卡爾曼濾波器之間的關係。
25. 什麼是M估計?說明M估計與核函數之間的關係?

四、電腦視覺/VIO方向

1.單應矩陣、基礎矩陣、本質矩陣的定義?
2.相機內參和外參的含義?如果將影像放大兩倍,內外參如何變化?
3.徑向和切向畸變模型含義,魚眼模型含義(回答等距投影模型即可)?
4.極線是什麼?對極約束是什麼?描述了什麼幾何關係?
5.八點法原理與過程。
6.預積分相比於傳統積分的差異在哪裡?
7.預積分的測量模型和雜訊模型是什麼?預積分對零偏是怎麼處理的?為什麼要這樣處理?
8.說明預積分的圖優化模型。
9.解釋重投影模型和BA的原理。
10.說明PnP問題的解法。
11.說明RANSAC原理,討論存在的問題。
12.解釋單目VIO的初始化過程。需要估計哪些量?重力方向和尺度如何估計?
13.為什麼單目VSLAM會有尺度漂移?如何解釋這種尺度漂移?現實當中有沒有14.舉出幾種光流方法(LK,HS等)。說明LK光流的建模方式。

五.C++方向

1.C++函數指針有哪幾類?函數指針、lambda、仿函數對象分別是什麼?
2.如何利用謂詞對給定容器進行自定義排序?
3.傳遞引用和傳遞值的區別?傳遞常引用和傳遞引用之間的區別?傳遞右值引用和傳遞引用之間的區別?
4.函數對象應該通過什麼傳遞?
5.什麼是萬能引用?用途是什麼?
6.什麼是完美轉發?用途是什麼?
7.std::unorded_map和std::map之間的差異是什麼?
8.虛函數、虛表的原理
9.如何在c++中創建執行緒?如何在執行緒間同步?
10.互斥鎖是什麼?用途是什麼?條件變數又是什麼?為什麼要用條件變數?
11.智慧指針和祼指針之間的差異?為什麼要用指針的引用計數?
12.智慧指針分哪幾種?std::unique_ptr, std::shared_ptr, std::weak_ptr各有何用途?
13.懸掛指針會導致什麼問題?如何避免?
14.traits是什麼?什麼時候用traits?


參考答案(部分)

一、慣性導航方向

1. IMU測量方程是什麼?雜訊模型是什麼?

中值積分的情況下,IMU的測量方程為:

IMU的隨機誤差一般包括以下幾類,各類誤差項及其原理如下(以陀螺儀為例):
(1) 量化雜訊
量化雜訊是數字感測器必然出現的雜訊,我們通過AD採集把連續時間訊號採集成離散訊號,在這個過程中,精度就會損失,損失的精度大小和AD取樣的精度有關(這裡具體指的是模數轉換時,AD器件的位數,位數越高取樣越精確),精度越高,量化雜訊越小。
(2) 角度隨機遊走
陀螺敏感角速率並輸出時是有雜訊的,這個雜訊裡面的白雜訊成分叫寬頻角速率白雜訊,我們計算姿態時,本質上是對角速率做積分,這必然會對雜訊也做了積分。白雜訊的積分並不是白雜訊,而是一個馬爾可夫過程,即這一次的誤差是在上一次誤差的基礎上累加一個隨機白雜訊得到的。角度誤差所包含的這種馬爾可夫性質的誤差就叫做角度隨機遊走。
(3) 角速率隨機遊走
從理解上和角度隨機遊走一樣,角速率裡面並不全是白雜訊,它也有馬爾可夫性質的誤差成分,而這個誤差是由寬頻角加速率白雜訊累積的結果。
(4) 零偏不穩定性雜訊
這應該是大家再熟悉不過的一個誤差項了,如果一個陀螺只讓你用一個指標來體現精度,那必然就是它了。但是這個指標的理解上卻不像前幾個參數那樣直白。
我們可以先把它理解為零偏隨時間的緩慢變化,假設在剛開始時零偏大小是某個值,那麼過一段時間之後,零偏便發生了變化,具體變化成了多少,無法預估,所以就要給他一個概率區間,來描述它有多大的可能性落在這個區間內,時間越長,區間越大。
實際上,如果你真的測的時間足夠長,會發現它也不會無限制增長下去,所以,這個對概率區間的描述只是近似有效,或者一定時間內有效,由於這個有效時間比較長,所以我們一般仍然使用這種方式來描述,只是在理解上要知道這一點的存在。
(5) 速率斜坡
看到斜坡這種描述詞,我們一般會想它是不是一種趨勢項。實際上,它確實是趨勢性誤差,而不是隨機誤差。所謂隨機誤差,是指你無法用確定性模型去擬合併消除它,最多只能用概率模型去描述它,這樣得到的預測結果也是概率性質的。而趨勢性誤差是可以直接擬合消除的,在陀螺里,這種誤差最常見的原因是溫度引起零位變化,可以通過溫補來消除。
加速度計同樣具有這5項誤差,而且原理一致,因此不再重複

2. 慣導誤差模型是怎麼來的?比如15維的卡爾曼濾波模型。
可參考部落格文章 < //zhuanlan.zhihu.com/p/135230133>
或參考英文文獻< Quaternion kinematics for the error-state Kalman filter >

3. GPS雙天線安裝偏角是怎麼標定的?
通過車輛前行得到航跡角,同時雙天線自己可以計算出一個航向角,兩者之差為安裝偏角,具體擬合方法可以通過最小二乘或濾波算出。

4. 多感測器之間是怎麼對時的?
光學雷達:大多數雷達如VLP-16等都提供基於pps脈衝和GPRMC訊號的輸入介面,PPS和GPRMC訊號可以由GNSS或IMU提供,或者由外部時鐘源提供。少數光學雷達還支援NTP/PTP同步,PTP的精度一般來說比NTP要高,這兩個訊號都需要由外部時鐘源設備提供。
相機:需要支援外部觸發曝光的型號,因為相機幀周期包括曝光時間和readout時間(整幀像素點讀出),一般來說readout時間是固定的,可以補償這個時間,相機的時間戳選擇為曝光的中間時間。
GNSS:GNSS可以從衛星獲得高精度的時鐘訊號,而且通常的GNSS都支援PPS脈衝以及GPRMC訊號。
(1)使用GNSS作為時鐘源,將GNSS的PPS訊號提供給LiDAR和一個開發板,開發板將給相機同時提供一個曝光的脈衝訊號。CAMVOX採用這種方案。
(2)使用外部時鐘源,這種時鐘源通常支援PPS訊號輸入,將GNSS的PPS傳給外部時鐘源,同時外部時鐘源可以使用PTP/NTP/PPS給LiDAR做時間同步,同時觸發相機開始曝光。外部時鐘源同時也可以使用PTP/NTP對主機進行時間同步。

5. GPS到來時是有延時的,而IMU給出的加速度和角速度是實時的,這種情況下怎麼處理延時?怎麼做的融合?
先通過imu積分計算實時的軌跡,同時把imu數據快取下來,當GPS到來時,再根據GPS的時間戳去修正歷史時刻的數據,然後重新積分該時刻後的imu。

6. DR遞推的原理是什麼?大概怎麼去做?
DR,也叫航位推算,是在知道當前時刻位置的條件下,通過測量移動的距離和方位,推算下一時刻位置的方法。可以根據上一時刻位置速度角度,通過imu加速度二次積分得到平移量,角速度積分得到旋轉量來進行DR,也可以通過輪速計和車輛運動模型來進行DR。

7. 組合導航卡爾曼濾波過程雜訊是如何調參的?
先通過GPS和imu的性能參數和頻率確定一個米級單位下的雜訊。之後在該雜訊參數下得到融合的軌跡,然後分別對兩個雜訊增大縮小分成幾組進行調節,觀察軌跡。最終選最平滑的一組軌跡的雜訊參數,或者選跟真值比精度最高的一組的雜訊參數。

同時,我們除了準備詳細答案,還為大家提供自動駕駛面試交流群,目前已經開到4群了~點擊這裡就可以來啦!

//fss.mpay8.cn/article/dMGIR984ad