總結
-
復習步驟:集中復習
(1)第一次-6月下旬,大概復習了20天左右,主要了解基礎知識總結大綱和常見考點,復習之前所做的項目的細節,補充理論知識;
(2)第二次-7月下旬,大概復習了7天左右,溫習之前沒有搞懂和提前批面試過程中涉及的內容,以及查看各種面經和針對自己需求公司的要求進行復習;
(3)第三次-8月上旬,大概復習了7天左右,主要是過濾計算機的基礎知識,包括計算機網絡和數據庫什么的,結果找CV的工作很少問到,Linux和操作系統多一點;
(4)第四次-8月下旬,復習深度學習內容,集中時間看了下以前筆試面試中還沒有搞懂的東西。
-
細節復習:零碎復習
(1)每次面試之前都會花0.5~1天時間去看一下總結的考點和網上(牛客網或者其他)提供的面經上的問題;
(2)有些問題一開始也不會,面試的公司多了就會了。
-
注意事項
(1)在校未出去實習
-
① 沒時間出去實習,一定要早點准備,尤其是擼碼,大小公司都很看重coding,國企就不說了,基礎復習起來很快,擼碼這個需要花費時間,有些東西看到了就會,沒看到就真不會
-
② 5月份開始刷題,一直刷到7月份,肯定很屌,無敵
-
③ 基礎知識6月就要開始看了,最晚不超過7月初,7月初提前就開始了,早點的6月份就開始了
-
④ 提前批一定要多投,不投不被掠不知道努力復習,我自己算起來投了50+,面試了25+(阿里,頭條,滴滴,地平線,華為,依圖,圖森,順豐,銳明科技,曠視,海康,銀行,英特爾等)拿到了10+,其中有三分之一的公司會因為簡歷不匹配給掛掉,剩下三分之一的公司絕大部分掛在coding,基礎和其他面試環境印象只有2家給掛掉了,還是刷題太少了。
-
⑤ 投遞的時候一定要分層次和時間,開始的時候可以考慮投一些中小型不是很想去的公司,積累面經和穩固自己的基礎知識;然后7月份下旬和8月份上旬是提前批的黃金時期,可以大力去嘗試大廠,更新一波知識然后再說想去的公司;9月份秋招面試一下提前批沒有面試好的公司和大廠,撿撿漏。
-
⑥ 個人覺得一定不要想着秋招去找工作,還是要提前批好好搞,這樣子秋招就不會很累,提前批沒有offer,秋招很慌很累,更沒有底氣,跟HR談offer都感覺是跪舔,有offer了,談薪水有底氣和安排,也知道行情,這樣子也更不容易吃虧。
-
⑦ 特別特別重要一點,如果自己不是大佬,信息真的很重要,不要單操,一定要多交流,打探各種情況,收集信息,不然會很吃虧。
-
⑧ 簡歷一定要好好寫,也是對自己的一種肯定,要定時更新自己的簡歷,寫好簡歷找已經找工作的師兄或者博士師兄或者年長有經驗的人看一下,修改一下,我自己前后簡歷大改了3次,很感謝實驗室的大師兄和上交的師兄,幫我改得特別仔細,修改簡歷過程中就會明白什么樣的簡歷公司需要或者願意看到。
-
⑨ 找工作還是做個有心人,不能太佛系了,至少我自己不是,我還是覺得越努力的人越幸運。
-
⑩ 要有針對性找工作,比如滴滴算法業務更多是圖相關的,圖算法大概率會出現,頭條與圖像處理居多,濾波傳統圖像處理比較多,有些落地模型壓縮和部署會涉及多一點。不能一口吃,分類整理。
(2)實習
-
① 去大廠實習,爭取留下來,不然還是老老實實在學校復習准備找工作。
-
② 去公司實習,沒時間准備coding和基礎,既然考慮出去實習,就是想着過渡一下,平台不好就不用考慮。
第一次復習深度學習
-
CNN的基本原理,公式,代碼,其中設計到矩陣的乘法和優化
① 感受野 ,權值共享
② CNN具體計算的細節,Group Conv,可分離卷積之間的原理
③ 矩陣乘法原理及其優化,caffe底層實現的源碼
④ 反卷積,simple baseline中提及了
⑤ 上采樣方式和下采樣
-
神經網絡初期存在的問題,梯度爆炸和梯度消失的原因及其解決方法,以及原理
① 梯度不穩定,梯度消失,梯度保障->resnet->v1,v2
② 參數初始化
③ Normalization操作:BN,IN,GN,LN,SN
④ Dropout
⑤ 常見的激活函數及其原理
⑥ 正則化
-
參數的量化操作
① 參數的計算和量化
② 常用模型壓縮方法
③ 常用輕量型網絡及其設計思想,以及代碼
④ 知識蒸餾的原理及其思路
⑤ 常用的移動框架了解及其對比
-
深度學習常用的梯度函數
① 常用的優化函數
② tf和pytorch構建網絡的差異
③ 常用的訓練策略,warming up,step learing
-
常用的loss function及其原理
① 分類的loss function及其原理
② pose的常用loss function及其原理
-
常用的網絡結構及其源碼
hourglass
fpn:
cpn:
fpn:
mobilenet:
inception:
resnet
-
常用的數據預處理方式
① opencv的基本操作
② 常用的數據增強方式
③ mix up
-
常有數據后處理方法
① 極大值法
② 翻轉測試
③ 多線程和多尺度測試
-
python的常見問題
① 線程和進程,GIL
② 內存管理
③ 元組與list,set的區別
④ os與sys區別
-
pytorch
① nn.module和functional的區別
② pytorch 分布式原理
RingAllReduce原理
分布式使用
③ pytorch如何構建動態圖原理
④ 梯度計算,反傳,更新
-
常見的優化器
其他整理的鏈接:包括了機器學習,數學
(1) https://github.com/scutan90/DeepLearning-500-questions
(2) http://www.huaxiaozhuan.com/
額外補充的知識:
(1) 概率論
(2) 線性代數,神經網絡的推導
第二次復習深度學習
-
Caffe源碼熟悉程度
(1) 底層設計模型
(2) 數據流怎么流
(3) 添加新層
(4) cuda代碼的細節
(5) im2col的具體實現
-
如何訓練模型,調優
HRNET跑代碼
-
為什么要用深層和淺層feature Map concat和多尺度融合
-
skip connection的好處,反向傳播公式,鏈式法則
-
為什么mobilenet理論上速度很快,工程上並沒有特別大的提升
(1) 應該從內存上去考慮,申請空間等
(2) 參數量和計算量
-
凸優化,牛頓法,SGD,最小二乘法,具體的原理和各自的優勢
-
工程上對卷積操作如何進行優化的?
(1) 傅里葉模擬卷積
(2) 矩陣優化
-
NCHW如何操作索引實現通道轉化,如NCHW->CNHW等操作
-
操作系統的內存管理,Linux的內部原理
第三次復習整理高頻筆試題(大部分都是手撕到的,括號是次數)
-
鏈表
(1) 鏈表反轉(3)
(2) 有序鏈表合並(2)
-
a+b+c = 0 (2)
-
lru置換算法(1)
-
排序
(1) 桶排序和計數排序(2):字符串排序,含有大小寫字母的,小寫在前,大寫在后
(2) 快速排序(1)
(3) 堆排序(2)
-
矩陣中從左上角到有下角的和的最小(大)值dp (3)
-
二分法(3): 遞歸和非遞歸版
-
連通域(2)
-
圖算法
(1)最短路徑算法(2)
(2)判斷線段經過了多少個矩陣(滴滴)
-
中值濾波器(1)
-
kmeans算法(1):這個算法真的很重要,頭條喜歡考
-
topK問題(很多次>5)
-
2個人輪流拿石子,每個人能拿一到兩個石子,然后先拿的人有沒有必勝策略(1)
-
求二值矩陣中最大的面積(>2)
-
BFS和DFS(>2)
-
找一個數組中4個和最大的數,但和不大於M(1)
-
樹的前中后遍歷(>2)
-
一個是判斷是否完全二叉樹(1)
-
一個是判斷是否滿二叉樹(1)
-
還有就是leetcode上的題目記不住了
-
字符串處理的常見題目
第四次整理深度學習內容
-
機器學習基礎
(1) SVM & LR 異同點,原理
(2) kmeans & kmeans++原理,手擼
(3) ROC AUC曲線含義
(4) 最小二乘法的解析解用Gaussian分布以及最大似然估計得到
(5) 最大似然和損失函數
(6) xgboost(必考題)
(7) MAE和MSE對比
-
圖像基礎
(1) HOG和SIFT特征提取算法,原理
(2) 常用濾波器原理,最好自己會手寫一些就簡單的
(3) 圖像的仿射變換
-
深度學習
(1) 過擬合和欠擬合,解釋,方法
(2) batch normailization
原理
參數更新
梯度反傳
優缺點
應用
改進
(3) 激活函數的設計
梯度爆炸
梯度消失
常見解決辦法
激活函數的設計規則
relu和sigmoid的區別
(4) batch size大小的影響力
大影響
小影響
(5) 如何衡量模型的參數和大小
參數量
模型大小
如何用傳統方法評估參數
(6) mobilenet以及shufflenet幾個版本的網絡結構
(7) 單階段,雙階段,free-anchor的代表檢測器
(8) 池化作用
max min mean pool的區別
如
(9) 不同的優化器以及牛頓法
(10) 正則化
(11) 感受野的計算
(12) dropout
(13) resnet的設計,原因,改進升級
(14) 初始化方式
-
計算機基礎
(1) 查找樹和紅黑樹
(2) 基本數據結:堆,棧,隊列,鏈表,樹
(3) tcp三次握手
(4) 頁面置換算法
(5) 常用的linux命令
(6) 常用的工具, git, github, ssh等
(7) 時間復雜度和空間復雜度分析