本人從2018年5月份開始準備保研的事情,下面就自身情況,材料準備,高校夏令營條件,機試或筆試題目,面試形式等做一個介紹。在申請的學校中,除了北大信科被拒了以外,其他都取得了入營資格。下面也主要介紹一下最終去了的學校: 清華軟體學院,人大資訊學院,北航計算機學院,中科院軟體所,中科院計算所,南大計算機學院。
也特别說明一下,我沒有報上交以及浙大,浙大是沒有夏令營的,不過有暑期實習,十分想去浙大的同學可以去申請。因為持續時間比較長,往往意味你要放棄很多其他的夏令營,是以請謹慎選擇。
希望能幫助到學弟學妹,也先預祝你們都能被理想的學校錄取。
==================================================================================
一、自身情況:
1.1 作為對比,先簡單介紹一下自己的情況
大學:某中等985大學,計算機科學與技術專業
綜合成績 : rank1
Cet-6 : 583
獲獎:一次國家級獎項,一次省級獎項 ,幾項校級獎項。
科研: 以第一作者發表了SCI論文一篇。
1.2 科研相關介紹
一般情況下,對有比較完整的科研經曆的同學,老師都會注重去問你科研以及論文相關的問題。其中最常見的問題有:
1.你的導師在本次研究中起到的作用
必問,主要還是怕你的論文是劃水的。其中好像主要是看你在研究工作與論文撰寫兩個部分的貢獻程度。因為我是一作,而且除了我的導師以外沒有其他合作者,是以還是很認可的。
2.請簡單講述你的科研經曆的全部過程。
我這裡是分成了5個階段,其他科研工作者的論文閱讀與了解,算法實作與模拟,疊代優化算法,中文論文撰寫,翻譯與投稿。是以問的其他問題我也主要按照了我自己的這個過程進行回答的。
3.你的整個科研過程 或者 實驗模拟與論文撰寫與翻譯分别花了大概多少時間?
主要是考察你的專業研究基礎能力,論文撰寫能力以及英語能力,這個不是減分項,是加分項
4.你所做的研究最大的創新點在哪?
5.簡單的講一下你的翻譯過程。
這裡建議有過科研經曆的同學都準備一下3~5分鐘簡介自己的科研工作全過程與論文主要創新點。
1.3 補充說明
有科研經曆的話确實在大多數面試中有不小的優勢,很多情況下面試老師會着重問你這段經曆相關的事情。隻要你做的科研工作不是特别灌水的那種,而且确實起到了最核心作用,基本都是挺認可的,嚴格一點的話可能還會對你的不嚴謹的地方提出一些建議,但是這都不重要不用慌。當然,如果你沒有科研經曆的話也不要緊,可以注重介紹你的競賽與項目經曆。這兩個往往是放在一起的,這樣老師會詢問你在工程項目中所做的工作。
以及我報的是分布式系統與大資料處理的方向,之後有一些面試的問題是相關的,也就不再贅述。
==================================================================================
二、材料準備
1.個人履歷
會用到大量的,彩色還是黑白看個人喜好,内容一定要簡介明了,讓老師能快速的解到你的資訊!面試的時候建議多發幾份。
2.獲獎影印件
3.成績單影印件(包括46級)
4.專家推薦信
部分學校需要,一般2封。另外,推薦信一般都是自己寫(用長輩的口吻有所保留的誇自己,還真需要點東西)然後給老師看看再找老師簽字,找本校的認識的就行。
5.論文原文
如果有的話,一定要列印,每次面試的時候最好帶進去一份完整的。
6.個人介紹PPT
這個不是必須,少數學校會用到。你在和老師聯系的時候也可以用到,主要是個人履歷的擴充版,還是以簡介明了為重點,不要弄的花裡胡哨的。
另外面試會問的3個英文問題一般有:自我介紹、介紹一下你的家鄉或者你的學校。後兩項有時間的可以稍微準備一下,被問到的機率不大。
==================================================================================
三、各校夏令營介紹
3.1清華大學軟體學院
時間: 6.9~6.10
簡介:
應該是開始最早的夏令營了,5月初開始報名的。夏令營不會給明确的offer,而且以直博招生為主,主要還要靠後續與導師的聯系。考核方式有機試和面試,都僅作參考不換算排名分。
機試:
總共5題,考3個小時。隔的有點久忘了一些,還記得3道題,考試環境是vs2013。沒有OJ,做完以後儲存在本地會有人來拷貝并判斷。會告訴你它的測試大緻資料範圍,比如: 對于80%的資料n<1e6,對于20%的資料n<1e9。最終成績不知道,具體題目如下:
1.簡單模拟,挺好做的,具體忘了
2.給一組凸函數上的點(x,y),再給定一個斜率k,求這組點中,哪兩個點相連所構成的直線的斜率與k最接近。這題要用二分,不然大資料量的測試樣例應該是會逾時的。
3.給一組質數,求能整除其中至少一個數的第k大的數。比如給2 3 5第k=6大的就是8(2,3,4,5,6,8,10…)。這題用優先隊列(最小堆),先把n個質數都進隊。每次隊首元素出隊,依次乘以n個質數後再放回隊列中,找到第k個出隊的就是了。
4.忘了
5.給一個無向圖的頂點以及邊的資訊。然後問你,如果現在可以将其中一條邊的長度減小一半,那麼從0号點到第n号點的最短路徑是什麼。要依次列印減半的那條邊的編号,路徑總長,和路徑上的各個點。這題我不會,用了貪心+dj騙一點最簡樣例的分數。解法的話隻想到了用dj+剪枝優化,用啟發式算法做,真的不會了也沒時間寫了。
面試:
以詢問論文為主。沒有問專業問題。在一個會議室裡,氛圍非常好,是10個左右老師面一個,但是不會覺的很緊張。然後老師讓我簡述了自己對分布式系統的認識與了解,然後問了下是否了解區塊鍊。
補充:
清華真的好大啊,風景很棒,老師也很親切,可惜名額太少了而且周圍都是大佬,感覺沒個ICPC銀牌或者頂會的都不太好意思…另外,流程是先機試再面試,最後一天下午是分專業方向去找導師交流。然後夏令營提供住宿和午飯,不提供早餐和晚餐,報帳往返的火車票硬座價格,不報帳飛機票。路程遠的同學建議一收到入營郵件就計劃好行程。
3.2 中國人民大學資訊學院
時間: 7.8~7.10
簡介:
這個學校真的是最讓我摸不着頭腦,感覺很迷…(無意冒犯)考核方式主要包括機試,筆試和面試,會換算成排名分,最後決定錄取資格。
機試:
總共2題,考1個小時,可以用多種編譯器,常用的都用。有OJ,就和打ACM的形式有些類似。題目如下:
1.給出世界杯各個球隊的小組賽對陣表,形式是 時間+球隊1+球隊2,然後輸入一個球隊名字,列印出他所有的比賽時間和對陣球隊。(其實也就隻有3條)這題沒什麼好說的,比較無語的是,那個對陣資訊要自己錄入進去。題目不難,就是讓人覺的很傻…感覺需要注意的就是球隊名字中有空格的情況。
2.題幹有點忘了,是一道簡單dfs的題目。
筆試:
兩道基礎題,一道算法題,一道設計題,總共2個小時。後兩題都是手寫代碼,而且不允許使用stl中的結構與方法。基礎題一題是簡述static關鍵字在c,c++,java語言中的應用,另一題是闡述多态性的場景與用法,c++與java任意選一個,這兩題考的都比較基礎,不過也算比較典型的基礎題了。
算法題是找出形式是aabb的完全平方數,算法要求隻能有一重循環,不能有循環嵌套。這題可以用數學分析簡化,或者先算完全平方數再判斷aabb的方法。
設計題是計算一篇文章中做出現頻率最高的前k個單詞,要考慮無效詞(an this that這種),還問根據結果怎麼找出文章的代表段落。具體有有記不清楚了,有好幾要求以及小問。我最後一點不太想做了,就簡答的寫了用字典樹的做法以及用hashmap+數組維護前K個數的思想。不讓使用STL。
面試:
在一個教室,5~6個老師面你。先做一個英語的自我介紹,會有老師跟你用英文交流,其他老師都是用中文問你問題。旁邊有小組是完全分離的,先全過程中文交流,最後再去一個老師那英語交流。我面試的問題很奇怪,先是讓我介紹自己寫部落格的經曆(個人簡述裡提了一下),之後不停的問我有沒有做過大項目?論文沒有仔細問,就讓我簡單介紹一下,然後問我你的論文是基于什麼大項目的做的,我?之後又問我們學校的培養方案以及保研政策,我?
補充:
夏令營提供住宿,還給一張100的臨時卡,不過隻能再食堂用并追加30%的費用,不一般也用不完。住在他們的學生宿舍,4人寝,提供床鋪,條件還行。校園環境不錯,旁邊的人大附中特别有排場……
3.3 北京航空航天大學 計算機科學與技術學院
時間:7.13~7.15
簡介:
北航的機試一般難度,建議有意報考的提前考csp,成績好的話可以拿去當作機試成績。面試難度很大,問的問題涉及很廣,且會問比較多的基礎問題。老師也會經常怼你,有個準備就行。
機試:
共2題,考2個小時。可用多種編譯器,但是隻能用C或者C++語言。可以使用STL庫,支援c++11(沒用到C++14,不清楚是否支援)。送出的時候要按照指定方式命名,然後上傳檔案,會傳回是否編譯成功,但是不知道得分情況。
1.對一個考場安排表做修正,就是按照題目給的要求對資料做重新排序啊,去除重複之類的操作。基本上用用sort等algorithm裡的算法就夠了,不是很複雜,一步步做就行。
2.做一個簡易的行編輯器。給你一個已經經過k步操作後的字元串,然後再給m步操作,要你輸出最後的結果。操作就是插入新串,删除子串以及撤銷上一步操作。這題是比較典型的棧的用法,仔細做,厘清位置就可以了。
面試:
在一個小會議室,4~5個老師面你,不同的小組之間形式以及考察内容會有所不同。一般來說先是英語測試,一種是做英語自我介紹,一種是抽一張小字條,朗讀并翻譯上面寫的一小段計算機相關的英文段落。然後是抽一張政治問題的字條談一談自己的看法,這個不計分的,隻要态度正确就行…之後就開始了…我那組問的是離散數學,上來就讓我講一下馬爾科夫,然後問怎麼判斷兩個無窮集合的大小,單射滿射和雙射的概念,之後還有一些相關的問題。其他也有問高數,線性代數,機率論,C++語言基礎的。比如問什麼是線性相關,闡述c++多态性,泰勒展開和傅立葉變換的概念以及他們在計算機領域中的應用。反正實在不會不要慌,被老師怼了也不要怕,因為大家好像差不多慘…之後老師主要問了我論文相關的事情,也順便怼了怼。最後,一個老師問了我分布式系統相關的問題,讓我談一談怎麼實作分布式系統中的時鐘統一,各種邏輯時鐘得到的結果是偏序還是全序。
補充:
機試完以後會淘汰一小部分人,然後隻要他們允許你用CSP成績代替了就一定不會被淘汰。不過最後是會做一個成績的歸一化的,就是會去取與CSP排名相同的當天的考試分做你的機試分,是以自行決定要不要用CSP代替。最後面試分數也會做一個歸一化,最後将最終總分排名後依次錄取。出完優秀營員以後,還要自己去聯系老師去前簽意向表,隻有大半天時間…很多比較火的實驗室以及老師一下就簽完了,如果沒有找到心儀的,可以賭一把。因為有不少老師的名額是分批給的,那個時候很容易沒名額了,多跟老師聯系聯系或許會有專機。當然啦,要是志在北航的還是提前做好準備和老師聯系,這樣不至于當天四處亂轉不知道去找哪個老師。北航一個年年被吐槽的糟點就是不提供食宿,什麼都不管,自己要提前找好住的地方…
3.4中國科學院 軟體研究所
時間:7.16~7.19
簡介:
軟體研究所下面的各個實驗室差别比較大,考核方式也稍微有點不同,主體上還是以筆試+機試+面試為主。我隻去了軟體工程中心,其他的實驗室不太了解。
筆試:
有一份完整的試卷,2個小時閉卷,包括選擇,簡答和大題。考的還算比較全面,涉及資料結構,算法設計,作業系統,英譯中,Web,資料挖掘。印象裡考到了有n個節點的二叉樹最小有幾層,給一個數列問用某個數為pivot的快速排序的下一個數列是什麼,prim算法構造最小生成樹,程序同步與互斥的相同點與不同點。對了,還有一道智力題:有兩個房間,一個房間裡有3盞燈另一個房間裡有3個開關,怎麼樣隻進入兩個房間各一次後判斷出燈與開關的對應關系。英譯中是一個描述分布式系統的可擴充性的小短文,大概200詞左右吧。Web是一道大題,有一小題是問如何實作多使用者資料的隔離性。最後一道題應該算是資料挖掘吧,給了一些使用者送出的修改建議,然後讓舉例從中能得到什麼相關性,能怎麼樣利用這些資料之類的。
機試:
兩道題,1個小時,在學長的電腦上做是以IDE就要看情況了。會有學長學姐看着,你也可以和他們交流…題目來自leetcode,評價比較多元化。
1.給N+1個1~n之間的數,讓你給出重複的那個一個數。這題比較簡單,很容易做,不過有兩個巧妙的方法能讓空間複雜度是O(1)。
2.給一個二叉樹,讓你判斷他是否是對稱的,好像就是leetcode 101 Symmetric Tree那道。
面試:
在一個小會議室裡,4~5個老師面試你。開始的時候會有電腦準備好你提供的PPT,先按照自己做的PPT做一個簡短的自我介紹與展示,然後是導師提問。主要問了我論文相關的問題,以及上過的課程和一些課程的成績。也讓我簡單講述一下自己對分布式系統的了解,再問了我幾個做過的項目的問題。其他就是閑聊了,有沒有讀博意願等等。
補充:
軟體所的考察比較全面,基本上從基礎知識到程式設計基礎和專業技能都有所顧及。提供住宿,給一張100的卡可以去食堂和小店。夥食挺不錯的,而且量有點大…還會組織去鳥巢和水立方參觀,當然你不想去也可以不去。所裡的老師和學長學姐也都很熱情,有什麼問題和困難都可以問。
3.5中國科學院 計算機技術研究所
時間:7.15~7.20
簡介:
與軟體所類似,各個實驗室有所不同。競争也非常激烈,基本上隻能去到一個實驗室,這裡也就介紹一下網數中心的情況,分為機試和面試。
機試:
6道題,2個小時,自帶電腦編寫,最後會有學長來拷貝走并進行運作測試并分析你算法的複雜度。
1.找出兩個有序表中的相同的數并列印。
2.給出一個不含空格的字元邏輯串(形如 F&(F|T) ),且隻包涵括号,T,F,&,|,這6種,要求列印出最後的結果。
3.給出一組會議的開始時間和結束時間,問你再某個時間段内最多能參加多少個會議。
4.假設有n個小朋友,每個人至少要給一個糖果。同時給出k個需求,其中表示了x号小朋友要求不能比y号小朋友少。問你最後至少需要多少個糖果才能滿足全部的需求,如果沒法滿足就輸出-1。
5.取出題幹的背景後大緻的意思就是:在一條直線上給出n個點的位置,然後從中選出k個特殊點,要求每個點到離他們最近的特殊點的距離之和最小。然後給出這個最小的距離。
6.給出n個進攻球員的坐标與k個防守球員的坐标(二維),再給出防守球員的防守半徑。進攻球員之間可以傳球需要滿足兩者之間的連線不與任何一個防守球員的防守區域相交。最後要求輸出0号進攻球員能否通過傳球傳給n-1号進攻球員。
關于解題思路說一下自己的拙見。第一題,參考合并有序連結清單。第二題,參考雙棧實作四則運算,就是轉換成字尾表達式求值的做法。第三題,經典的貪心算法題,按照結束時間從早到晚,開始時間從早到晚排序。每次找下一個開始時間晚于目前結束時間的活動,直到逾時。第四題,動态構造一顆樹,x要求比y多的時候,x就是y的父親(完全合理,哈哈哈)。如果構造沖突(用類似與并查集的辦法),則無法滿足需求,如果k次都不沖突,則用動态規劃的方法求最小糖果數。第5題,暴力+剪枝。第6題,轉化成圖中兩點的可達性。先去掉再防守範圍内的進攻球員,然後計算剩下的進攻球員之間的兩兩可達性,然後dfs就知道0号是否與n-1号可達了。這都是當時考試的做法,後續也沒有細想,僅供參考。
面試:
在一個會議室裡,12個老師與學長學姐面你,其實還行不是很緊張。全在問論文了,問的很細緻。其他也就是閑聊,問一些基本情況什麼的。
夏令營的條件不太清楚,因為我的郵箱把入營通知标記成垃圾郵件了…然後還是同學告訴我的,之後自己聯系了實驗室和老師跟着夏令營的同學一起參加了考核。老師和學長學姐都挺随和的,面試還能一起哈哈哈。
3.6 南京大學 計算機科學與技術學院
時間:7.24~7.26
簡介:
南大的機試相對感覺不好做一些,結合以往經驗來看,題目不少來自POJ。面試時間很緊張,到時間了就結束。最後應該是綜合機試與面試成績,最好提前聯系導師。
機試:
3道題,2個小時,在學校的機房。有OJ,可以看到實時排名。可以用C++,好像也可以用java,本地編譯器挺多的。每道題100分,按通過的樣例數給分,沒通過的還可以看到逾時還是錯誤。南大的機試分為上下午兩場,題目不一樣的,這裡就介紹一下我知道的幾道題。
1. 給一個二維矩陣,讓求出最大的子矩陣和。資料範圍也設計好了,正好需要用dp的方法,不然會有一部分逾時。就是要先用一個dp[i][j]求(0,0)到(i,j)的子矩陣和,再用這個dp[][]求(m,n)到(i,j)的和。也就是sum[m][n][i][j] = dp[i][j]-dp[i][n-1]-dp[m-1][j]+dp[m-1][n-1]。
2. 給一個二維數組隻包涵O和X,當你将所有非邊界的被X完全包圍的O替換成X。這題也是一個簡單dfs就能做,可以圍繞邊界開始搜尋,不贅述了。
3.對于給定的數字n,求出長度為n且隻有0和1組成的,沒有連續的1的字元串個數。比如對于n=3,有000 001 010 100 101,也就是輸出4。這題典型的動态規劃,滿足條件的字元串隻可能是以1或者0結尾。對于dp[i]來說,以0結尾的可行個數就等于dp[i-1],而以1結尾的就等于dp[i-1]中以0結尾的個數。是以用兩個數組a[],b[]分别記錄當N=i時的以0和1結尾的字元串個數。然後就有a[i]=a[i-1]+b[i-1]與b[i]=a[i-1]。
4. 去掉問題的背景就是給n行數,每行有k對(a,b)數。現在要從每行中選一組數,使得最後的min(ai) / sum(bi) 最大。這題感覺應該也是要用dp的,貪心反正是不全對的,能得60分。
面試:
在一個小會議室,3~4個老師面你。每個人10分鐘,從開始自我介紹起計時,時間到了就立刻結束。大部分情況下老師都不要你的履歷和材料,因為好像沒時間看,之後的問的問題還是比較參照你的自我介紹的。先讓我簡單介紹一下論文的主要工作與創新點,然後用英文簡單介紹一個做過的項目。之後因為我提過受過ACM教育訓練,問了我一些算法的問題。怎麼證明形如2k+1的質數有無窮多個?兩種生成樹算法的内容與差別?如何最快找出一組數中第k大的數?給出并分析這種方法的平均複雜度是什麼?然後問了機率論的問題,怎麼算一組樣本的方差,怎麼隻掃描一遍樣本就求出資料的方差?
補充:
南大夏令營的條件真的是太好了,住學校裡的四星級酒店,提供三餐以及小零食,餐券用不完還可以當去小店買小吃。第一天各個實驗室的老師和學長學姐都會在計算機樓放置海報和作介紹,還會帶你去參觀實驗室。夏令營的安排人員也特别負責,幾乎所有的事情都會和你确認。因為夏令營的地方是仙林校區,不在南京市區,稍微有點遠。校園特别大,而且很有藝術感,有空還可以去校區裡的天文台看看。