說明
-
本面經總結了校招時我面試各個公司的面試題目,每場面試后我都及時進行了總結,同時后期補充擴展了同類型的相近面試題,校招時從兩個方向進行投遞,視覺算法工程師和軟件開發工程師(C++方向),所以我都整理了兩個崗位的相關面試題,大家可以根據需要所取。
-
面經目前包含:C++語言面試題、Python語言面試題、Qt、YOLO算法、OpenCV、K-means、Dropout、BN、NMS、IOU、數據增強、模型優化、計算機網絡和通訊協議相關面試題、CV基礎等等技術面試題,同時還包含非技術面中一些常見的面試題。
-
因為大部分面經都是校招時候記錄的,工作以后也陸陸續續增加了一些,后續我將增加社招方面的面經,同時持續更新并維護。
-
由于本人技術有限,面經中如有錯誤,歡迎指正!
專欄地址
視覺算法開發 | 軟件開發—面經
面經總目錄
小節 | 目錄 |
---|---|
面試問題總結——關于YOLO系列(一) | YOLOv1 1.背景介紹 2.YOLOv1的算法思想 3.關于NMS 4.YOLOv1的網絡結構圖 5.YOLOv1的激活函數 6.YOLOv1的損失函數 7.YOLOv1總結 |
面試問題總結——關于YOLO系列(二) | YOLOv2 1.關于anchor box和bounding box的區別 2.關于anchor box和bounding box的區別 Batch Normalization(批規范化BN層應用) High Resolution Classifier(高分辨率) Convolutional With Anchor Boxes Dimension Clusters(維度聚類) Direct location prediction(直接位置預測) Fine-Grained Features(細粒度特征) Multi-Scale Training(多尺度訓練) 3. YOLOv2損失函數 4.YOLOv2中BackBone:Darknet-19 5. YOLOv2模型框架 6.關于Darknet的分類模型和檢測模型 |
面試問題總結——關于YOLO系列(三) | YOLOv3 1.YOLOv3主干網絡BackBone——Darknet-53網絡結構 Top-1 Accuracy和Top-5 Accuracy是指什么呢?區別在哪呢? 為什么Darknet-53相比于同時期更深層的網絡ResNet-101、ResNet-152效果更好些呢? 為什么Darknet-53運行速度快呢? 關于殘差網絡 2.YOLOv3網絡模型 3.關于YOLOv3網絡的訓練細節:正負樣本的匹配 4.YOLOv3損失函數 5.YOLOv3網絡圖 為什么YOLOv3對小目標的檢測會比YOLOv1好很多? YOLOv1/v2中使用IoU作為置信度標簽有何不好? YOLOv3對于小目標/密集目標的改進 YOLOv4 1.Bag of freebies(BOF) 2.Bag of specials(BOS) 3.YOLOv4采用的模型結構 4. YOLOv4相比于YOLOv3作了哪些改進 YOLOv5 1.Focus結構 2.自適應錨框計算 3.YOLOv5網絡模型 |
面試問題總結——關于OpenCV | 1.OpenCV中cv::Mat的深拷貝和淺拷貝問題 2.OpenCV中RGB2GRAY是怎么實現的 3.連續圖像轉化為數字圖像需要進行哪些操作? 4.數字圖像中有哪些基本特征? 5.圖像邊緣檢測中常用的邊緣檢測算子有哪些? 6.對霍夫變換的理解 7.對HOG特征的理解 8.圖像的插值方法有哪些? 9.Grabcut的基本原理和應用 10.SIFT/SURF的特征提取方法,是如何保持尺度不變性的? 11.關于FLANN算法 12.Canny邊緣檢測的流程 13.圖像銳化 14.圖像對比度 15.圖像濾波 16.OpenCV中圖像加法(cv2.add())與圖像融合(cv2.addWeighted())有何區別? 17.如何檢測圖片中的汽車,并識別車型,如果有遮擋怎么辦? 18.常用圖像增強算法 19.數字圖像處理中常用圖像分割算法有哪些? |
面試問題總結——編程題關于IOU、NMS | 1.關于IOU 1.1 IOU定義 1.2 IOU的優缺點 1.3 IOU的實現代碼 2.關于NMS 2.1 NMS的原理 2.2 NMS的實現代碼 |
面試問題總結——關于C++(一) | 1.面向對象的三大特性:繼承、封裝、多態 2.野指針、內存泄漏、指針懸掛、內存溢出如何理解? 3.如何避免內存泄漏? 4.C++中關于智能指針 什么是智能指針? C++11 中的智能指針及其用法 使用智能指針會出現什么問題?怎么解決? 5.關于引用和指針 引用的定義 引用的語法規則 指針的定義 引用與指針有什么區別? 6.C++程序編譯過程(C++源文件從文本到可執行文件經歷的過程) 關于鏈接階段的知識(動態封裝、靜態封裝) 7.include頭文件的順序以及雙引號”“和尖括號<>的區別? Include頭文件的順序 雙引號和尖括號的區別 8.不同類型的變量與“零“作比較 9.C和C++的區別 10.深與淺拷貝 11.C++11的特性用過哪些? 12.C++中關于Lambda表達式(匿名函數) 13.C、C++如何交錯使用? 14.一些常用的STL頭文件 15.C++中四種cast轉換 16.C++中static的作用 17.C++中const的作用 18.C++中extern的作用 19.C++中private protect public 20.C++中struct和class的區別 |
面試問題總結——關于C++(二) | 21.內聯函數類 inline 函數有兩種方法 22.函數重載為什么函數名字可以一樣,函數入口地址是按照函數名給的,那這樣豈不是地址完全一樣,如何實現重載的呢? 23.Qt信號槽實現原理 24.void* 轉換 25.為什么要用基類指針(引用)指向子類對象 26.C++ 中的內存管理、內存分配 27.棧和堆的區別 28.malloc/free 和new/delete 區別 29.全局變量定義在頭文件中有什么問題? 30.函數重載(overload)和函數重寫(override) 31.關于虛函數和純虛函數 32.關于多態 33.什么是函數模板?函數模板算多態嗎?函數模板底層如何實現?模板實例化在程序的哪個時期? 34.為什么析構函數必須是虛函數?為什么C++默認的析構函數不是虛函數? 35.構造函數為什么不是虛函數? 36.構造函數和析構函數的作用與特性 37.進程、線程、協程 38.并發和并行 39.vector set map list內部實現,復雜度 40.關于紅黑樹 41.map與unordered_map區別及使用 42.對象創建限制在堆或棧:如何限制類的對象只能在堆上創建?如何限制對象只能在棧上創建? 43.關于內存對齊:什么是內存對齊?內存對齊的原則?為什么要進行內存對齊,有什么優點? |
面試問題總結——關于C/C++(三) | 44.變量的聲明和定義有什么區別 45.sizeof 和 strlen 的區別 46.簡述 strcpy、sprintf 與 memcpy 的區別 47.鏈表和數組有什么區別 48.typedef 和 define 有什么區別 49.局部變量能否和全局變量重名 50.如何引用一個已經定義過的全局變量 51.全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么 52.const與#define相比有何優點 53.幾種內存分配方式以及它們的區別 54.有哪幾種情況只能用初始化列表而不能使用賦值 55.堆棧溢出一般是由什么原因導致的 56.C++中的空類,默認產生的類成員函數 57.進程間 58.數組和鏈表的區別? 59.關于windows程序 |
面試問題總結——關于面試中可能提問的問題及解答(一) | 1.YOLOv4相比于YOLOv3,做了哪些改進,能講講嗎? 2.你在模型訓練的過程中,對于loss值若沒有收斂,該有哪些操作呢?該使用什么辦法? 3.在數字圖像處理中,腐蝕和膨脹的原理是什么? 4.關于NMS,簡單講講? 5.關于K-means算法的相關知識 K-means算法思想: K-means算法的處理流程: 在yolo中anchor的選取—K-means算法 K-means算法的優缺點 K值怎么確定,有什么方法嗎? 6.你項目中用的拍照相機分辨率是3072×2048的,而YOLOv4網絡的輸入尺寸是608×608×3,這么做的話,圖像的尺寸會被壓縮,小的目標可能會被忽略,那如果要識別小的目標你怎么辦?既要保證識別的速度,如何做? 7.SPP,YOLO了解嗎? 8.目標檢測正負樣本不均衡怎么解決? 9.one-stage與two-stage都有哪些?具體各自優勢在哪里?one-stage和two-stage兩者有什么特點? 10.簡單介紹下殘差層 殘差塊的結構(Residual block) 殘差結構有效的原理 解決問題的數學原理 ResNet解決網絡退化的機理 11.YOLOv1的網格為什么是7×7? 12.YOLOv3優點/缺點 13.張量、向量和矩陣 14.準確率和召回率 |
面試問題總結——關于面試中可能提問的問題及解答(二) | 14.關于Dropout的內容 1.什么是dropout及其具體工作流程? 2.數學原理 3.dropout的訓練與預測 4.為什么dropout可以解決過擬合問題? 5.dropout的缺點? 6.CNN中能否用dropout,為什么? 15.anchor聚類的具體實現與原理 16.正則化,L1正則與L2正則,L1、L2正則化的作用和區別是什么?分別服從什么分布? 17.感受野 18.YOLOv3和v2、v1的改進 smoothL1 loss的好處 YOLO里面是向上取整還是向下取整 19.關于Batch Normalization(批歸一化,BN) 1.BN層的主要思想 2.BN層的作用 3.結合YOLO問了BN 4.BN的公式,BN是怎么更新的 5.為什么加了BN之后,就不用再使用dropout? 6.Pytorch中BN層在訓練和測試中有什么不同,怎么實現的? 7.用代碼實現BN層 20.對比SSD,為何YOLOv3小物體的檢測效果這么好? YOLO是怎么克服小目標檢測缺陷的?(YOLO做小目標檢測的思考) 深度學習中檢測小目標常用的方法? 21.如何解決目標檢測兩個物體重疊問題 22.YOLOv3中416x416的輸入有多少個anchor,為什么要sigmoid? 23.1×1卷積的作用 |
面試問題總結——關于面試中可能提問的問題及解答(三) | 24.關于softmax函數的公式、作用、注意點即改進實現代碼 實現softmax函數時的注意事項 softmax的作用? 25.YOLO SSD Faster-RCNN對比 YOLOv3為什么占的內存大,和 SSD差別在哪里? 26.如何解決目標遮擋問題,密集問題 27.NMS及其變種(包括具體的代碼實現)/編程題NMS 28.如果需要你壓縮這個模型的參數量你會怎么做 29.Pytorch定義一個dataset需要寫那幾個方法 30.給一個input size、kernel size、stride、padding,算一下output size,沒有辦法整除怎么辦,為什么向下取整而不是向上取整? 31.如果檢測對象是細長條你怎么檢測?如果對象細且傾斜你怎么辦? 32.如果兩個數據集 一個80類一個20類,兩個數據中都包含另一個數據集的目標,但未進行標注,你怎么訓練?例如:A中的車在B中有 但未標注而是作為標簽。 33.解決過擬合的辦法? 34.深度學習中的數據增強方法都有哪些? 35.卷積計算過程中減少計算量的優化方式 36.卷積層和池化層有什么區別? 37.關于Anchor-based與Anchor-free Anchor-based與Anchor-free的相同點和不同點: Anchor-based與Anchor-free的優劣: 38.關于roi pooling層 39.mean pooling和max pooling的前向和反向傳播 40.方差和協方差的理解 41.Python的數據類型有哪些? 42.Python中is和==有什么區別? 43.Python中可變對象和不可變對象有哪些? 44.Python中刪除的三種方法有什么區別?remove()、pop()、del |
面試問題總結——計算機網絡和通訊協議 | 1.TCP和UDP有什么區別 2.TCP和UDP的應用場景 3.UDP可不可以實現安全傳輸 4.關于TCP的三次握手與四次揮手 三次握手理解 四次揮手理解 5.為什么連接的時候是三次握手,關閉的時候卻是四次握手 6.為什么TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態 7.為什么不能用兩次握手進行連接 8.如果已經建立了連接,但是客戶端突然出現故障了怎么辦 9.解釋一下為什么TCP可靠一些 10.請簡單解釋一下,arp協議和arp攻擊 11.什么是icmp協議,它的作用是什么 12.OSI七層和TCP/IP五層以及對應網絡設備對比示例圖 13.Get與POST的區別 14.DNS的尋址過程 15.從輸入網址到獲得頁面的過程 |
面試問題總結——CV基礎 | 1.為什么需要做特征歸一化、標準化? 2.常用的歸一化和標準化的方法有哪些? 3.介紹一下空洞卷積的原理和作用 4.怎么判斷模型是否過擬合,有哪些防止過擬合的策略? 5.除了SGD和 Adam之外,你還知道哪些優化算法? 6.上采樣的原理和常用方式 7.下采樣的作用是什么?通常有哪些方式? 8.模型的參數量指的是什么?怎么計算? 9.深度可分離卷積的概念和作用 10.神經網絡中Addition / Concatenate區別是什么? 11.激活函數是什么?你知道哪些常用的激活函數? 12.隨機梯度下降相比全局梯度下降好處是什么? 13.如果在網絡初始化時給網絡賦予0的權重,這個網絡能正常訓練嗎? 14.為什么要對網絡進行初始化,有哪些初始化的方法? 15.梯度消失和梯度爆炸的原因是什么? 16.深度學習中的 batch 的大小對學習效果有何影響? 17.PyTorch 和 TensorFlow 的特點分別是什么? 18.數據不平衡的解決方法 19.為什么 max pooling 要更常用?什么場景下 average 20.為什么在模型訓練開始會有 warm up? 21.訓練過程中,若一個模型不收斂,那么是否說明這個模型無效?導致模型不收斂的原因有哪些? 22.GAN 網絡的思想 23.Attention 機制的作用 24.怎么提升網絡的泛化能力 25.mAP值 |
關于面試找工作、工作中注意點的個人總結(一) | 1.面試找工作的總結 1.1 投遞崗位的建議 1.2 談薪資階段的話術 1.3 找工作時要有自己的規劃 1.4 面試階段中的注意點 示例 1.5 對于offer的抉擇 1.6 各類排序算法的時間、空間復雜度 2.職場中打工人的總結 2.1 提升自己的工作能力 2.2 如何鑒定何時跳槽 2.3 職場中的注意點 2.4 入職后擔心代碼能力跟不上 |
關于面試找工作、工作中注意點的個人總結(二) | 1. 請你自我介紹一下你自己 2. 你最擅長的技術方向是什么 3. 你怎么理解你應聘的職位 4. 對工作的期望與目標何在 5. 就你申請的這個職位,你認為你還欠缺什么 6. 你做過的哪件事最令自己感到驕傲 7. 如果我錄用你,你將怎樣開展工作 8. 你工作經驗欠缺,如何能勝任這項工作 9. 如果你在這次面試中沒有被錄用,你怎么打算 10. 如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎么辦 11. 談談你過去做過的成功案例 12. 談談你過去的工作經驗中,最令你挫折的事情 13. 如何安排自己的時間?會不會排斥加班 14. 對這個職務的期許 15. 最能概括你自己的三個詞是什么 16. 你經歷太單純,而我們需要的是社會經驗豐富的人 17. 你性格過于內向,這恐怕與我們的職業不合適? |
關于面試找工作、工作中注意點的個人總結(三) | 1.請你自我介紹一下你自己 2.說說你最大的缺點 3.你對加班的看法 4.在五年的時間內,你的職業規劃? 5.你朋友對你的評價 6.你還有什么問題要問嗎 7.如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位 8.在完成某項工作時,你認為領導要求的方式不是最好的,自己還有更好的方法,你應該怎么做 9.如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎么辦 10.如果你做的一項工作受到上級領導的表揚,但你主管領導卻說是他做的,你該怎樣 11.談談你對跳槽的看法 12.工作中你難以和同事、上司相處,你該怎么辦 13.假設你在某單位工作,成績比較突出,得到領導的肯定。但同時你發現同事們越來越孤立你,如何看待 14.請說出你選擇這份工作的動機 15.最能概括你自己的三個詞是什么 16.你的業余愛好是什么 17.喜歡這份工作的哪一點 18.為什么要離職 19.說說你對行業、技術發展趨勢的看法 20.對工作的期望與目標何在 21.就你申請的這個職位,你認為你還欠缺什么 22.你通常如何處理別人的批評? 23.你為什么愿意到我們公司來工作 24.你和別人發生過爭執嗎?你是怎樣解決的 25.如果我錄用你,你將怎樣開展工作 26.你希望與什么樣的上級共事 27.在完成某項工作時,你認為領導要求的方式不是最好的,自己還有更好的方法,你應該怎么做 28.與上級意見不一致怎么辦 29.你工作經驗欠缺,如何能勝任這項工作 30.為了做好你工作份外之事,你該怎樣獲得他人的支持和幫助 31.談談你過去做過的成功案例 32.談談你過去的工作經驗中,最令你挫折的事情 33.何時可以到職 |