天天看點

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算法(數學模組化中用到)

後記

機會是留給有準備的人的,隻要明确目标,一路向前,做好準備,機會和幸運終将走到你的身邊~