SAP成都研究院Sunshine: 我的C4C實習感受和保研之路
今天的文章來自SAP成都一位實習生,曾經和Jerry同在C4C成都開發團隊一起工作過。在Sunshine最後一個工作日裏,Jerry和Sunshine一起吃飯的時候,她曾經聊到接下來的保研打算和將來工作的努力方向。一位大三的學生,對於自己的將來有如此清晰和長遠的規劃,這讓Jerry佩服不已。
而在結束了SAP成都研究院的實習後不久,Sunshine就實現了她個人規劃的第一步,也就是即將在這篇文章裏給大家分享的她的保研歷程。Jerry在這裏預祝Sunshine將來的碩士學習生活能和當初在SAP成都研究院一樣收獲滿滿。
下面是她的正文。
大家好,我是電子科技大學一名本科生,曾經在大三下學期時,有幸在SAP成都研究院的C4C開發團隊實習過6個月。
我非常高興在實習期間能夠融入SAP成都C4C開發團隊這個大家庭之中。在這裏,收獲到的更多是人生的成長和對自己的思考。
如今回顧自己這6個月愉快的實習生涯,我總結出對自己未來的研究生學習和職場之路很重要的三點,希望對大家也能有點啟發。
1. 持續學習的能力
我加入的SAP成都C4C開發團隊負責的是C4C UI框架的開發,使用的編程語言是JavaScript。雖然我在學校裏也做過一些簡單的Web開發,但是當我第一次按照組裏有經驗的同事寫的幫助文檔,在我本地搭建C4C開發環境時,我還是感到了深深的震撼:源代碼clone下來之後,包含git修改的歷史記錄.git文件夾在內,一共將近1GB,超過1萬個源文件。
在組裏其他同事的幫助下,解決了各種本地環境問題,成功地在本地運行了C4C UI之後,我接下來面臨的問題就是熟悉項目文件,確保自己接到開發任務後,能準確定位到需要在哪些文件上做增量開發。
在開發過程中,我發現自己在學校裏學到的那點少得可憐的JavaScript開發知識根本不夠用,因此JavaScript的持續學習也貫穿於我這6個月的實習生涯中。接下來我發現,開發的代碼寫完只是萬裏長征走完了第一步,單元測試,持續集成,檢查產品標準,按照SAP的標準流程發布新開發的功能,等等都是我需要去學習的。同時,我開發的這些功能,背後是有什麽客戶的需求在驅動?幫助客戶解決了哪些痛點?上下文涵蓋了哪些業務場景?我真的感到要學得太多太多了。
我很好奇,是因為我是一個初入SAP大門的實習生,所以才有這麽多東西要學麽?在問過組裏一些有過多年SAP工作經驗的老同事,我才知道,持續學習在企業軟件開發領域裏是一個常態,不論你是一個初出茅廬的大學畢業生還是一個工作多年的SAP老兵。
我想,持續學習這個原則,不論是我將來進入計算機行業的哪一個具體領域進行工作,都是非常重要的。
2. 保持嚴謹的學習和工作態度
在我本科學習期間,在學校專業課上也了解了一些軟件測試的概念,對於單元測試有個模糊的認識,但是進入SAP成都研究院後,沒有想到單元測試在這裏是執行得如此嚴格。每次本地用git提交代碼修改之後,觸發對應的單元測試,測試覆蓋率不得低於SAP定義的基準,如果沒有達到,哪怕差1%也無法提交代碼。這種流程使得每一位開發者都認真嚴謹地對待自己的每一行代碼:完成功能開發只是第一步,更多的精力放在了各種邊界條件(Boundry Condition)的處理和負面測試上。
這篇文章的後半部分我會向大家介紹我那不算順利的保研道路,其中就包含了我各種機試的滑鐵盧。說來慚愧,我後來反思一下,有些我沒有完成的題目,背後的知識點都很基礎。如果我平時在學校的學習,都是抱著嚴謹的治學態度,把這些基礎知識點的方方面面搞透徹,而不是像我現在這樣學個似是而非,覺得自己達到差不多懂的程度就滿足,那麽我的機試一定是另外一個結果。
3. 團隊協作
在進入SAP成都研究院之前,我對敏捷開發,持續交付和集成等概念也只是聽說過而已。很慶幸自己能有機會加入到SAP成都C4C開發團隊這樣一個極具活力,進取心以及凝聚力的團隊。
在這個以敏捷開發模式進行C4C功能交付的Scrum團隊裏,大家各司其職,工作,技術迎難而上,互幫互助,在編程馬拉松等各項活動中都彰顯了團隊的實力以及魄力;各種session分享,每個開發周期結束後由同事輪流進行的功能展示等方式給個人能力的提升營造了很大的空間;組內聚餐和團隊建設,生日蛋糕會,周末羽毛球等活動豐富了團隊的文化,就如一個大家庭般溫馨與團結。
初嘗職場的我學到了很多,不管是從個人能力還是人生啟蒙。這裏感謝成都C4C團隊的每一位同事,很慶幸曾是這個大家庭中的一員!
結束了6個月愉快的SAP成都研究院實習之後,我開始了新的旅程。如今, "浩浩蕩蕩"的保研之路總算是過去了,在這一路走來,過程雖然波折艱難,但皆是人生成長。一路的探索追求中,吸取到了不少的經驗教訓,所以記下來,希望能給之後的學弟學妹們一點啟蒙。
前期準備
成績:毫無疑問,好的成績是通往學校的敲門磚。要想在大三結束後獲得保研資格,需要年級排名靠前的成績;想要在申請學校時不被拒絕,需要好的成績;想要去到理想的學校,更需要一個好的成績。而且,成績排名越前越好,因為如果想申請像清華北大這樣的學校,不是前1%是不可能的。
準備時間:當然是越早準備越好,個人推薦是最好從大三上學期結束後的寒假開始,就可以開始關註各大保研論壇,看看過去幾年優秀的帖子,找好自己的定位,明確自己的目標以及各個階段的復習內容以及計劃。同時,這個階段可以開始機試題目的練習。(作者當時沒有意識到保研之路的艱辛以及競爭,準備得太晚——四月份才正式開始,因此,導致參加夏令營時準備不充分而遭遇的各種滑鐵盧慘敗經歷)
簡歷:簡歷就像是一個人的門面,打造一份精確並且出彩的簡歷的重要性不言而喻。簡歷最好突出學習成績,同時獲獎經歷,科研,項目經歷這幾個方面需要濃墨重彩。但要註意一個大忌就是不要一味為了彰顯自己而過度的誇大,吹捧,將自己不夠熟悉的方面寫在簡歷上面,這樣你在面試的時候將會被懟的很慘,因此簡歷上面的每字每句都需要慎重。
另外,簡歷的書寫可以采取叠代的方式,每一版本可以在前一版本的基礎上不斷地修改,精細,提煉。
算法機試:正如網上流傳“得機試者得天下”,在夏令營各大學校中,如清華北大,中科院計算所,南大等都會有相應的上機測試,通過這種方式直白的考察一個人的代碼能力。因此,在前期的準備中,針對機試的準備是非常重要的,而且必須開始得早,因為上機寫代碼的能力不是簡單的一兩天就能夠提高的。
在我四五月準備機試的過程中,由於白天在SAP成都研究院實習上班,每天只有晚上的時候刷題,時間,效率都非常低下,度過了比較煎熬的一段時間。也正是由於機試方面的準備不充分,使得我參加的夏令營都全軍覆沒。對於機試,建議一定要有充足的時間準備,並且要有規律,連續性。
部分刷題網站:poj(北大),leetcode,pat(浙大),牛客網,VJ等等,刷題網站很多,選擇適合自己的就行。
計算機基礎:在保研面試環節中,除了針對項目經歷對學生的工程,科研能力的提問外,為了考察學生的專業基礎以及思維方式,老師都會對相應的計算機相關的課程基礎進行提問。
根據我的面試經歷,被提問的頻率大致按照下面的順序排列,當然每個學校不一定完全相同:
算法與數據結構>高數>計算機操作系統>數據庫>計算機網絡>計算機組成原理>編譯原理
如果時間充足,復習書本當然是最全面,最穩固的方式了;如果時間不夠充裕,也沒必要將大量的時間都投於此,則可以重點復習常考,核心的知識,網上通常會有各門課的知識點總結,進行理解記憶即好(學會利用谷歌度娘~)
申請材料:申請學校夏令營或預推免(具有獲得保研資格後參加學校的推免面試的意思)時一般都會要求提交很多的材料,如申請表,個人陳述,研究計劃,排名證明,成績單,專家推薦信等等,這些材料最好提前準備,不然可能後面蓋章什麽的讓您手忙腳亂。
夏令營
大多數夏令營一般集中在7月份,6月開始出相關的通知,但也有比較早的,像清華叉院,南大的lamda實驗室和上海交大的直博都是在6月,因此大家一定要盡早關註各個學校官網,或是各種論壇等消息通知,如果因為錯過時間而沒有去到想去的學校就得不償失了。
我當時抱著多嘗試的心態,所以報的比較多(9個),但由於今年保研競爭異常的激烈,所以最後入營的只有計算所和南大。
7月15日~20日 計算所
計算所的夏令營比較長,有五天,前兩天主要是各個實驗室的介紹以及相關的論壇講座,主要讓大家對各個實驗室有個更清晰的認識便於選擇一個實驗室參加考核。後三天即是各個實驗室開展的筆記,機試,面試工作,各個實驗室的形式不一樣。
我當時選擇的實驗室有機試和面試,結果是兩者綜合起來的成績。機試是頭天下午,但由於機試題目比較難,準備不充分再加上又是第一次等各種因素,機試結束後整個人跌到谷底,對第二天的面試根本不抱什麽希望。由於到面試還有一段時間,然後就去其他的實驗室看看還有沒有機會參加,因此也參加了一些機試筆試,同樣做的很不理想(沒錯,就是太菜了~)。第二天面試,由於面試人多時間比較緊,所以面試時間不是很長,感覺還將就,但機試太差最後還是被刷了!
以下羅列一些遇到的問題。
機試:
1、真假式輸出 (棧)
2、背包問題,然後輸出哪些背包?
3、拓撲排序(孩子糖果貪心)
筆試:
1、排列組合?
2、快速排序的實現?
3、最長遞增子序列?
4、英文翻譯?(甚至有詩歌)
5、寫一下BP模型的推導過程?
面試:
1、數學建模主要負責什麽?能講一講怎麽實現的,題目要求是什麽?
2、C語言中的static有什麽作用?
3、Linux如何實現相關的原語操作,比如copy,如何進行具體實現的(系統調用)
4、棧可以用什麽進行實現?
5、說一下dijkstra算法?如何進行優化?
6、你最喜歡的一門課是什麽?為什麽讓你印象深刻?
7、你的編程能力怎麽樣?覺得自己的機試如何?是怎麽進行刷題的?
7月24日到26日 南京大學
在去南大的整個過程中,心情比較低落,對於機試也有一定的恐懼心理。南大一共兩天,宿舍條件真的極好(四星級酒店),頭一天也是參加實驗室的宣講,介紹,與老師交流。
因為在此之前我已經提前聯系過老師了,所以就基本留在宿舍中準備機試(聽說南大的機試是非常難的,整個人對機試都是畏懼的)。第二天上午先是面試,主要問一些項目經歷以及相關的計算機基礎,感覺還不錯,心想著下午機試正常應該沒什麽問題….然而,事實是殘酷的,題目確實比較難,在加上現場一些狀況連連,機試,又敗了。
機試:
1、最大子矩陣(dp)
2、尋找n中位進制中1不相鄰的個數(斐波拉切數列的變形)
3、最大遞增子序列的變形(需要進行轉換成這個原型)
4、Dfs搜索
5、各種條件限制雜合
面試:
1、操作系統的死鎖是什麽?哲學家進餐有哪些實現方式?
2、存儲過程以及觸發器?為什麽要使用存儲過程—>預編譯、提高代碼的多次利用
3、說一下快速排序?如何尋找第k個數?
4、用英語介紹一個項目?
5、數據庫的ACID特性,事務回滾,如何解決數據的不一致?信號量,共享資源保護。
就這樣,我所有的夏令營就這樣以失敗告終,整個人籠罩在失學的邊緣。在悲傷之余則是將所有的希望寄存在預推免,因此,整個暑假,都在學校全力備戰著……
預推免
到了九月,我的戰鬥再一次打響了。可能由於前一個月準備得比較充分,所以面試表現還不錯,順利拿到了中科院的offer。
最後一戰浙江大學,由於浙大只有直博夏令營,而碩士的招生是在預推免。浙大的第一關是英語,其形式是抽取紅白紙,當時運氣賊差抽到的內容完全看不懂沒聽過,所以英語關表現得不好,接著開始問項目,基礎知識等的,總體來說問我的比較難,比較深,很多都需要完全的掌握才能答出來,所以很多點都沒能答出來。因此結束後整個人心情沮喪,以為就這樣與心儀學校擦肩而過。
當最後公布結果時,看到單子上面有我時,整個人都是熱淚盈眶的,而且排名還比較靠前,後來仔細想了想為什麽,或許問的難,問的深並不是壞事,老師只是想探查你了解的深度,只要在這個過程中你很好的表達出自己的一些思維方式和見解,大方地向面試官展現出你的實力,足矣!
機試:
1、鏈表的移位
2、快速排序算法的相關實現
面試:
1、斐波拉切數列的幾種實現方式,並且比較復雜度
2、你對操作系統這門課的理解
3、cache的幾種映射方式
4、講一下極大似然算法
5、矩陣的秩?線性相關,線性無關?
6、講一下最短路徑的優化問題?
7、講一下ARIMA算法(數學建模中用到)
後記
機會是留給有準備的人的,只要明確目標,一路向前,做好準備,機會和幸運終將走到你的身邊~
要獲取更多Jerry的原創文章,請關註公眾號"汪子熙":
SAP成都研究院Sunshine: 我的C4C實習感受和保研之路