保研結束之后本想總結這一段經歷的,但一直在忙實驗室的事情,忘記總結了。正好前兩天,實驗室大三的學弟問我 CS 保研的事情,看到他忐忑、沒底的心理仿佛就看到了當年的我。其實學弟好歹是科班出身,我跨專業保研,比學弟更加沒有信心,但同系學長跨專業保研成功的經驗和網上的保研經驗帖給了我不少幫助,讓我能夠做針對性的準備,最終順利得到想要的結果。的確很感激他們,所以在這里也總結一下自己的保研經歷,給學弟學妹們 (包括跨專業) 一些幫助,把學長學姐的幫助傳承下去。
基本情況
1. 學校 & 專業:上海交大;材料科學與工程
2. 排名:5/115
3. 二專(輔修):計算機,課程包含:基礎課 —— 離散、C++、數據結構;專業課 —— 軟件工程、計網、編譯原理、組成、操作系統、數據庫;此外旁聽過本校軟院的算法和 Web 開發課
4. 英語:四級599,六級564,托福105,GRE327
5. 獲獎:一次國獎和一些不重要的獎學金和競賽,如數模國賽、美賽、數學競賽等等
6. 科研:沒有和 CS 相關的
7. 雜項:大二暑假去 UCB 交流(玩)了一個暑假;在一家做區塊鏈的小公司做過4個月后端實習;在校內一個做開發的學生組織學過一會前后端、Android開發
我的跨系保研跨度相當大,不像軟件、電子、電氣、通信這類同屬于電類的跨專業保研,我的本科專業和計算機幾乎毫無關系,只安排了一門電子電工技術,及其粗略地講了講基電數電模電,沒有一門編程課,所以二專和輔修就尤為重要,至少表明自己建立了完整的 CS 知識體系;英語成績似乎沒啥用,面試過程中有英語的考核,不過我因為曾經想出國,考過托福和 GRE,引起過一些老師的興趣;獲得的獎項中似乎也只有國獎比較有用,因為其他獎項如國賽、美賽大家都有;本科期間沒有 CS 相關的科研經歷,沒發過論文,這是個硬傷;剩下一些雜七雜八的經歷也沒啥亮點
報名和offer
夏令營報名:北大信科、中科大計算機、中科院軟件所、上交計算機、復旦計算機、南大計算機、南大軟院
夏令營入營:中科院軟件所、上交計算機、南大軟院
夏令營offer:中科院軟件所、上交計算機
最終去向:上交計算機
我的意向還是在本校 CS 讀研,因為有不少認識的同學、認識的導師,踩坑的幾率小一些,但畢竟是跨系保研,而且跨度不小。向同系的學長咨詢的時候只找到到一位九推進上交 CS 的學長,沒有夏令營保 CS 的學長,所以心里還是沒底,盡量多報了一些學校,其中清華計算機只收直博,浙大計算機沒有夏令營,只有一個耗時一個多月的暑期實習,也是接收直博向的,所以這兩個都沒報,其余的列出來的 CS/軟院夏令營,我看著只要學校好于上交或者和上交差不多的都報了。
多報一些還是很必要的,因為錄取情況每年都在變,誰也不知道入營有啥明確標準,更不知道是不是因為前兩年本校的學長學姐錄取之后毀約導致報名的學校直接砍掉本校的名額 (無奈.jpg),比如收到第一個入營通知之后我就覺得復旦計算機、南大軟院應該能進吧,誰知這倆都不給入營資格...
上交官方給出的報名通道只能報一個專業,我本想 CS 和軟院都報,無奈只能放棄軟院。后來在軟件所和武大的同學聊天才發現他們的騷操作:注冊兩個同去網 (上交夏令營報名通道) 賬號,分別報 CS 和軟院...這一通操作真是讓我目瞪狗呆,不過聽說他們也只拿到了軟院的入營資格,CS 沒給,不知道和報多個專業有沒有關系。
另外,由于參加完夏令營之后,我就決定加入現在所在的實驗室了,接受了本校 CS 的擬錄取,也就沒有參加九推。
夏令營過程
夏令營前的準備
由于本專業的一些眾所周知的就業狀況 (可以問問身邊的材料同學了解...),我大二開學之后下定決心轉到 CS,找到一位在美國轉 CS 、已經工作的學長,向他咨詢了轉 CS 的一些情況。可惜的是當時對刷題、GitHub、項目、CS 的各個方向完全沒有了解,學長的諄諄教導我也沒怎么看懂是在說啥。最大的收獲是學長推薦了一個校內搞開發的組織,可以在里面寫寫網站、app,里面也有不少做全棧的軟院學長學姐,但當時課業壓力很大,社團占據了不少時間,我完全無法騰出時間學 CS,而且毫無基礎,連基礎的 C++/Python 程序設計都沒學過,只得先 mark 住。
大二下我選了計算機二專,學了怎么寫程序,到大三上隨著課程學習和軟院同學的介紹,我漸漸明白了應用開發是做啥。在這期間,我一直打算出國轉 CS,主要做兩件事:學好課程 (本專業保持 GPA,CS 二專學懂學透)、考英語 (托福、GRE),另外參加一些數學競賽、數模比賽。
大三上我繼續一邊上課,一邊騰出時間在那個校內組織里學應用開發、寫寫簡單的 example,同時跟著高中同學聽了半學期軟院的算法課,但我卻對是否出國開始搖擺不定。終于,經過近一學期的考慮,在大三上學期快結束的時候,綜合家庭條件、申請、在美找工作的情況,我決定保研。
做出決定的當天晚上,我找到一位同專業大我兩級的學長了解了保研、夏令營的一些情況。這位學長夏令營沒能入營,九推錄了交大 CS。了解了一番情況之后,我發現:1. 夏令營只看前五學期的成績,自己的成績報名夏令營可以一試,甚至很有希望入營 2. 夏令營需要重點準備機試,因為機試容易拉分。但當時我只修了二專的 C++ 程設、數據結構、軟件工程這幾門簡單的基礎課,自己的代碼水平還處于幼兒園階段,急需項目實戰,而且除了基礎課之外,學得最多的應用開發,所以一直想真正做項目練練手,所以到一家做區塊鏈的小公司做了 4 個月的實習,老板對我很好,期間我學到了不少東西。
后來我了解到一個情況和我很像的朋友這時候開始進了本校一個老師的實驗室做了一個項目,現在回顧這一段經歷,我覺得 CS 是偏科研導向的,相比之下,導師還是喜歡本科做過科研的、甚至中過論文的,如果當時厚著臉皮加入本校某個實驗室打打下手,可能后面情況會更好一些。
到大三下,由于本專業成績和夏令營入營資格不掛鉤,我就在本專業課堂上放飛自我寫代碼了,一邊干實習的活一遍刷刷題。直到 5 月份,考試和夏令營都越來越近,我離職專心準備考試和刷題了,刷題的平臺主要是 LeetCode,牛客網上也有一些往年機試題可以做,另外還有一本浙大學長的 CS 復試機試指南對常見的題型做了歸類和講解,寫得不錯。那段時間刷題還挺多,基本上一天兩到四道,到夏令營之前 LeetCode 已經刷到 (免費的) 300 題了,盡管 hard 不少題還是完全沒思路。我覺得這段刷題經歷很重要,沒有這段經歷我面對機試一定是虛的。
5月初我曾經聯系了一位老師看看能不能進他的實驗室,然而他給我的回復是,等學校通知;還有一位二專教課的老師人很好,幫我寫了其他學校夏令營的推薦信,給我口頭承諾,如果過了夏令營愿意收我 (感動...),只可惜研究方向我不太感興趣。于是我不再聯系老師,專心刷題去了。
上交計算機
本校 CS 夏令營是最早開始的 (7.4 - 7.5),但是安排實在是讓人無力吐槽...夏令營之前一周才發入營通知的郵件,搞得我一度以為自己連入營資格都沒有;后來在軟件所夏令營和武大同學聊天才知道上交啥都不包,食宿完全自理,他們也只收到一封通知考核時間地點的郵件,其余啥也沒有...真不知道電院為啥這么不上心。
本校整個夏令營過程很短,只有兩天 (其實 CS 夏令營第一天就結束了,第二天我參加了現在所在實驗室的面試),第一天上午機試,第一天下午和第二天上午面試。因為人比較多,分兩個半天面完,我是安排在了第一天下午面試。機試可以用 C++ 或者 java,java 提供了 eclipse,C++ 提供 VS2008,似乎還有 Dev-C++,我用的 java 就沒有注意 C++ 的其他 IDE。一共三道題,兩個半小時內完成;題目打印在紙上發給學生,全英文;沒有測試用例,沒有 OJ 系統,需要自己手動測試;最后監考人員用 U 盤拷走可執行程序打分。三道題中一道很簡單,一道稍有難度 (大約 LeetCode 接近 Medium 的難度),一道比較難 (可能會接近 LeetCode Hard 難度)。其中我覺得最難的是一道用 KMP 解決的題,總體難度一般。由于打分直接的依據還是可執行文件的測試結果,強烈建議寫完之后打開 cmd 按照示例輸入的格式測試一下生成的 exe 可執行文件,如果代碼寫對了可執行文件出錯就可惜了。
下午是面試,對面坐著五位老師。聽本校 CS 的同學說老師主要問他項目經歷,也可能直接問專業課的知識點。不過我因為轉專業跨度這么大而且本科沒有 CS 科研經歷,而且自我介紹時候說了一句對材料不感興趣,于是老師就問了問我一二專的學習情況,有沒有逃課,怎么排名第五的...之后就是常規的問題,針對我寫的實習經歷問我的收獲,以及英語描述自己的項目/比賽經歷,我講了一下國賽的經歷。
晚上有各個實驗室的介紹,可能因為只是講 PPT,不少人并沒有去,幾個 AI 方向的熱門老師都比較火。我聽到一半,現在的小老板打電話聯系我說下午面試我的時候覺得我不錯,問我要不要去他們實驗室看看 (驚喜 + 感動ing),于是我又去聽了現在大老板介紹實驗室詳細情況,感覺大老板很厲害,人也很好。第二天直接參加了現在實驗室的面試,然后就決定加入這個實驗室了。就這樣,上交 CS 夏令營很快結束了。
中科院軟件所
由于上交機試自我感覺做的還不錯,而且已經決定進現在所在的實驗室了,上交之后的中科院軟件所、南大夏令營我都是以比較佛系的心態在參加,沒有提前聯系導師。
中科院軟件所的夏令營安排比上交不知道好到哪里去了,包吃住,還有學長學姐帶我們游玩鳥巢水立方,主管招生的李彩麗老師人也非常好,唯一不足的是住宿條件一般。
第一天自己安排,第二天是各個實驗室的介紹,其中軟工中心、國重還有天基的幾個導師比較熱門,在這期間完全可以自己聯系導師參加導師單獨的面試。第三天是各個實驗室的考核,我報的是軟工中心,有機試和筆試。機試題目很簡單,只是考察基本的編程能力,寫完代碼后學長過來檢查;筆試包括各門基礎課(數據結構、操作系統、編譯)的簡單問題和簡單的智力題,以及最后的一些題,給出實際問題讓寫解決方案,考察開放思維,總體比較輕松。這里有個小 trick:各個實驗室的考核時間不完全重合,可以參加多個方向的考核...我當時的室友就參加了兩個方向的考核,我筆試到一半他才匆匆趕來參加軟工中心的考核,也是夠拼的。
最后一天是面試,提前做好 PPT 自我介紹,隨后老師提問,問的也比較常規,無非是針對簡歷和 PPT 里提到的實習經歷、競賽經歷問問,以及少不了的英文考察。整體氛圍挺友好的,沒有什么壓力,也沒有刁鉆的問題。
軟件所給我的體驗真的相當好,要不是已經決定進現在所在的實驗室,我就去軟件所了,畢竟招待得這么好...跨系的同學如果打算來北京工作的可以考慮中科院軟件所,我覺得比上交計算機對跨系友好多了。
南大計算機
南大 CS 的官方名稱叫本科生開放日,名額不少,我一開始郵件填錯了,南大招生老師得不到回復還給我打了電話問我來不來。南大安排的食宿條件是真的好,住的是學校里的國際會議中心,似乎是四星級,早上可以吃賓館的自助早餐 (非常豐盛,我有一天起晚了沒來得及吃,真是后悔不已...),比中科院軟件所的條件好多了,聽說有些已經有了清北 offer 的大佬過來就是吃喝玩樂的...
第一天自由安排,第二天上午開營儀式,周志華老師也來發言了,其余時間自己找實驗室導師聯系。lambda 聽說是暑假之前就開始面試了,競爭很激烈,我懶得再去準備了,于是隨便找了位做 NLP 的熱門老師,跟路上遇到的其他同學一邊聊天在一邊在門口排長隊,等了一會兒后正好遇到隔壁做軟工的實驗室學長問我們要不要到他們實驗室看看,我也懶得等了,就去隔壁實驗室和導師聊了聊。我也直接坦誠地表示,自己已經打算去本校 CS 的一個實驗室了,但是怕夏令營不過所以來南大找"備胎"。這位老師倒也不怎么嫌棄我的跨系出身,表示我如果確實愿意來,他會接受,并給我承諾在他這里讀研期間基本可以發一篇不錯的論文。聊了會后我就會賓館準備機試和面試了。
第三天是全體的考核,一部分同學上午機試、下午面試,另一部分相反。機試一共三道題,倆小時,也是易 -> 中 -> 難的順序,總體難度一般,有一道題我記得是 LeetCode 上的原題;提交到 OJ 系統上,可以在 leaderboard 上看到實時排名。這個系統是按測試用例給分,最難的題也可以寫一點能通過簡單測試用例的代碼拿分。下午的面試比較常規,唯一不同的是南大面試是盲面,不帶簡歷不帶任何材料,理論上老師也不能問你是哪個學校的,問的問題主要是基礎課的簡單知識點或者簡單算法題,比如怎么找鏈表中點、概率論中獨立的含義、NP 問題的含義等等,最后是常規流程:英文描述做過的項目,考察英語能力。值得一提的是,昨天聯系的老師中午找到我,又向我確認了一遍來不來他這里,因為他那里還有其他想來的同學,他表示如果我想來即使考核成績不那么好,他也可以想辦法 (后來我才知道,老師都有點招名額,就是不論你的機試面試成績,直接錄取你,但名額寶貴),所以要確認我的意向。然而我既然決定了去現在的實驗室,就直接拒了,不想浪費其他同學的名額。由此可見,提前聯系老師還是非常重要啊。
等待結果
這個過程也是相當的煎熬,遲遲收不到意向學校的通知總讓我擔心被拒。在此再次吐槽一下上交的招生管理,夏令營最早,結果最晚出,真的服了。最早收到的是軟件所的 offer,夏令營結束后一周就收到了,當時也很感動,至少有一份保底的 offer 了。軟件所給了我們一周的時間考慮接受不接受擬錄取,盡管當時上交結果還沒出,我以為畢竟夏令營時間早,再過兩三天,結果總該出來了吧,結果我還是高估了上交的效率。眼看著軟件所的 ddl 一天天靠近,上交這里毫無動靜,我實在忍不住了,給主管招生的老師發郵件打聽我的考核排名,一封...兩封...郵件發過去,石沉大海。還好這時候軟件所推遲了答復是否接受 offer 的 ddl,同時我發出第三封郵件,語氣越來越焦慮,主管老師終于給了我回復,告訴了我排名。看到排名的我終于舒了一口氣,因為按照往年招生人數,自己拿到 offer 是比較穩的。隨后我也直接拒了軟件所的 offer,南大夏令營后一天南大招生辦發短信問是否將南大作為第一志愿,我也直接回復了否。畢竟自己已經差不多手握 offer 了,沒有 offer 的同學的焦慮我完全能感受到,不想坑他們。果不其然,南大沒有給我發 offer。至此,我的保研經歷就全部結束了。
總結
我的保研過程其實挺簡單的,參加完上交 CS 考核和實驗室的面試之后,我保研過程基本就結束了,也沒有參加九推,不過還是有一些體會可以講講,尤其是站在材料跨計算機保研的角度上:
1. 提前聯系導師!很重要!南大老師讓我意識到,有時候老師能直接決定是否入營或者是否錄取的,而且熱門的老師一般都有很多同學提前聯系,聯系不及時往往就沒機會了。這點我就做得不好,如果提前多聯系一些老師,選擇的余地也許能更大一些。
2. 跨專業的同學沒有那么多 (這里指的跨專業是像我的跨度這么大的)。由于聽說本系不少學長出國轉 CS 了,我一度以為夏令營會遇到不少跨專業、跨系的同學,然而實際上,絕大多數都是 CS、軟院以及各大電類專業的,夏令營全程我也只找到一個同校環境專業的同學,跨度像我這么大。
3. 刷題很重要。和經管、金融不同,CS 似乎在簡歷、個人陳述這些材料上沒法做太多文章,我的同學基本就寫一下自己的項目經歷。雖說一般面試和機試占比差不多,但面試不容易拉分,機試可是直接根據運行結果給分的,寫不出來就是沒分。即使題目都不太難,刷題準備還是很必要的。我刷的題比較多,后面也沒怎么發揮作用,現在回想起來,把數組、二叉樹、DFS、BFS、DP 幾種套路練熟就差不多了。
4. 面試要展示自己的 key strength。老師不會因為跨專業就降低要求,站在老師的角度想想,明明有其他本專業的同學申請,老師為什么要選擇跨專業同學呢?所以要以對科班的要求來要求自己,并展示出和科班同學相比的優勢,convince 老師,讓老師選擇你,而且有時本來可能是不足的地方,換個點描述可能就是你的優勢了,比如我雖然是跨專業,但在同時修兩個專業的情況下保持較好的成績;雖然沒有科研經歷,但開發實習和數模競賽體現了短時間內學習新知識并應用的能力。
5. 面試前準備一下英語。英語介紹項目經歷幾乎是面試的必備節目,我在前一天拿出托福口語題稍微練了練,查了下項目中可能出現的名詞,面試過程中講的還算流利,感覺給自己加分不少。
6. 夏令營的時候簡歷上的內容已經無法再增加了,但是凡是做過的和 CS 相關的項目、比賽最好回顧一下,不要問起來對細節不清不楚。
7. 注意關注保研論壇和各大學校的官網信息
以上都是夏令營或者夏令營前一兩個月需要注意的點,更多的決定自己基礎的、甚至能否入營其實是前三年的整體情況,在此也給有轉 CS 意向的學弟學妹 (學妹如果怕太累就不要轉了...) 們給出自己不成熟的建議:
1. 大一好好上課、保持好成績,無論以后出國還是保研都需要成績。早點決定是否轉走,交大大一下可以轉專業,決定跳坑要趁早。另外可以適當參加一些學生活動,有機會認識學長學姐,獲得更多的資源。我整個轉 CS 過程其實都離不開學生活動帶來的資源:最初有轉 CS 想法之后院足球隊隊長把他出國轉 CS 的室友介紹給我,我得以咨詢了很多事情;保研情況咨詢的學長是隔壁寢室同學學生會部門部長的室友;夏令營前我又向院辯論隊學長 (大我一級,大一從材料轉到了 CS) 同實驗室的學長要到了去年的機試題;以及向以前在材料學院做科研認識的學長 (去年考研 CS) 要到了他們復試的題目...真是壯哉我大材料,在 CS 藏著這么多人才(微笑.jpg)。
2. 大二課業壓力一般比較重。這時候可以規劃工作、出國還是國內讀研、讀 master 還是 Phd 了,針對不同的規劃有不同的重點,出國的話,英語考試早點準備;保研的話,注意成績別掉下來;工作的話,可以開始留意招聘信息了。上交大二下開始有二專可以選,想轉 CS 的話一定不要忘了選二專。
3. 大三一般課程壓力會小一些,但是這一年的成績同樣決定是否能進夏令營、拿到保研名額,所以千萬不要懈怠了。無論選擇哪條路,都要做出相應的安排了,進實驗室、實習、參加比賽、暑研套磁等等,這段時間的工作真正決定了你在保研/出國時能寫在簡歷上的內容。我當時選擇實習而不是進實驗室還有一個原因在于自己不打算出國,計劃是如果保研失敗就直接工作,所以增加一段實習經歷為可能的找工作做準備。
至此,只要你每件事都認真去做了,相信到大三暑假,自己已經具備了選擇走哪條路的足夠的資本。
最后,希望學弟學妹們都能被心儀的學校、專業和實驗室錄取!