百度2019暑期实习计算机视觉岗位笔试题
目錄
- 選擇題
- 簡答題
- 第一題
- 第二題
- 編程題
- 第一題
- 題意
- 思路
- 代碼
- 第二題
- 題意
- 思路
- 代碼
? ? ? ?筆試共有選擇題30道、簡答題2道、編程題2道,分別為60分、60分、40分,兩個小時。以下內容的編寫全憑記憶和個人理解,如有什么不對的地方,希望大家見諒。
選擇題
? ? ? ?具體題目肯定記不住了,就說說都有哪些題型吧。
? ? ? ?①.給出一段程序,問你這段程序輸出啥。
? ? ? ?②.給出一段程序,填補缺失部分,讓程序得到正確輸出。
? ? ? ?③.計算機網絡知識,ICMP、ipv6基本頭啥啥的。
? ? ? ?④.編譯原理知識,求逆波蘭表達式啥啥的。
? ? ? ?⑤.數據結構知識,哈夫曼編碼長度啥啥的。
? ? ? ?⑥.概率論知識,貝葉斯概率啥啥的。
? ? ? ?⑦.圖論知識,最小生成樹啥啥的。
? ? ? ?⑧.二維離散沃爾什變換。
? ? ? ?⑨.C++里鏈接器的工作步驟。
? ? ? ?我依稀記得那道貝葉斯概率的題,一百度還真找到了。
? ? ? ?有一家醫院做普查,得到統計數字:(1)每1000人有5個癌癥病人;(2)每100個正常人有1個人試驗結果為陽性;(3)每100個癌癥患者有95個人試驗結果為陽性。問:小明連續兩次實驗結果均為陽性,他是癌癥病人的概率。
? ? ? ?我的做法是:用zzz表示正常人,用aaa表示癌癥患者,則可以得到:
? ? ? ?p(z)=0.995,p(a)=0.005p(z)=0.995, p(a)=0.005p(z)=0.995,p(a)=0.005
? ? ? ?p(陽∣z)=0.01,p(陰∣z)=0.99p(陽|z)=0.01, p(陰|z)=0.99p(陽∣z)=0.01,p(陰∣z)=0.99
? ? ? ?p(陽∣a)=0.95,p(陰∣a)=0.05p(陽|a)=0.95, p(陰|a)=0.05p(陽∣a)=0.95,p(陰∣a)=0.05
? ? ? ?則小明是癌癥病人的概率為p(陽∣a)p(陽∣a)p(a)p(陽∣z)p(陽∣z)p(z)+p(陽∣a)p(陽∣a)p(a)=0.978425\frac {p(陽|a)p(陽|a)p(a)}{p(陽|z)p(陽|z)p(z)+p(陽|a)p(陽|a)p(a)} = 0.978425p(陽∣z)p(陽∣z)p(z)+p(陽∣a)p(陽∣a)p(a)p(陽∣a)p(陽∣a)p(a)?=0.978425
簡答題
? ? ? ?簡答題一共兩道題。
第一題
? ? ? ?相機模型中有哪些參數,寫出三維空間中點到圖像坐標的投影公式,鏡頭畸變系數有哪幾種,矯正公式是什么。
? ? ? ?這題感覺不做相關方向的人根本不會。。。
第二題
? ? ? ?細粒度圖像檢索,如何構建模型,模型大致分為哪幾部分,模型如何訓練,模型的參數如何確定,怎么提升模型的效果。
? ? ? ?我回答如下:
? ? ? ?(1)模型結構分為:數據預處理部分、數據讀取部分、特征提取部分、DeepHash部分、損失函數部分。數據預處理部分用于對數據進行一些數據增強和變換。數據讀取部分用于為模型讀入數據。特征提取部分使用vgg模型或者alexnet模型,對輸入圖片的特征進行提取。DeepHash部分將圖片得到的特征圖進行Hash編碼,用于后續檢索。損失函數部分將圖片的預測結果和真實標簽進行對照,得出損失,用于優化網絡參數。
? ? ? ?(2)訓練方法使用SGD或者ADAM,參數的確定使用grid search方法。
? ? ? ?(3)提升性能可以使用集成學習方法,比如bagging和boosting,也可以將特征提取網絡部分改為更深層的網絡。使用bagging的話,需要將數據分為n組,分別訓練出n個模型,最后經過各個模型投票得到結果。使用boosting的話,先將數據進行等概率采樣,得到第一次訓練的數據集,用其訓練一個基模型,對基模型可以正確檢索的數據降低其被采樣的概率,重復進行:采樣+訓練+修改概率,得到更好的模型。使用更深層的特征提取網絡需要更多的數據,因為網絡深導致參數過多,數據量不夠容易造成過擬合,過擬合可以通過加dropout和BN層等方法緩解。
? ? ? ?當時選擇題浪費了太多時間,這題答得急了,筆試結束后仔細想想,題目的重點在于細粒度圖像檢索,涼涼。
? ? ? ?可以參考這篇博客。
編程題
第一題
題意
? ? ? ?一個長度不超過10610^6106的字符串,將第一個字符移到字符串的末尾,得到一個新的字符串,無限進行這個移位操作,就可以得到無限多個字符串,輸出這些字符串中不重復的字符串個數。
思路
? ? ? ?一看,10610^6106,暴力吧,string+map,直接MLE。那咋整,string+hash+map,這回不MLE了,變成了TLE,只過了58%。
? ? ? ?額,筆試后想了想,周期串才會導致重復,所以用KMP求最小循環節,然后應該就可以了。
代碼
#include<cstdio> #include<map> #include<iostream> #include<string> #include<algorithm> #include<functional>using namespace std;char ss[1000001];int main() {while(scanf("%s",ss)!=EOF){string s = ss;hash<string> hh;map<size_t,int> mm;//mm.clear();//hh.clear();int ans = 0;int len = s.length();s = s + s;for(int i=0;i<len; ++i){//string tmp1 = s.substr(1,len-1);//string tmp2 = s.substr(0,1);//string tmp = s.substr(i,len);size_t tmp = hh(s.substr(i,len));if(mm[tmp]==0){mm[tmp]=1;ans++;}//cout<<s<< endl;}printf("%d\n",ans);}return 0; }第二題
題意
? ? ? ?給出兩個字符串aaa和bbb,qqq個詢問(沒記錯的話q<106q<10^6q<106),每次詢問包括兩個數字lll和rrr,求字符串bbb在字符串a[l,r]a[l,r]a[l,r]中出現的次數。
思路
? ? ? ?我寫到這道題的時候,還有4分鐘筆試結束。。。涼涼鴨。瞎亂寫了個暴力,剛粘到筆試頁面上,筆試就結束了。。。稍微優化一下,可以在詢問前處理出字符串bbb在字符串aaa的所有前綴的答案,然后查詢就是O(1)的了,沒準就過了。
代碼
#include<cstdio> #include<map> #include<iostream> #include<string> #include<algorithm> #include<functional>using namespace std;int main() {string a,b;while(cin>>a){cin>>b;int lenb = b.length();int q;scanf("%d",&q);while(q--){int l,r;scanf("%d%d",&l,&r);int ans=0;for(int i=l;i<=r-lenb+1;++i){string tmp = a.substr(i,lenb);if(tmp == b){ans++;//cout<<i<<" "<<tmp;}}printf("%d\n",ans);}}return 0; }總結
以上是生活随笔為你收集整理的百度2019暑期实习计算机视觉岗位笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为2019暑期实习笔试题
- 下一篇: 网易游戏2019暑期实习开发岗笔试题