美國CS本科生可以做一些什麼項目來證明自己的軟體工程能力? 大家本科階段自己都獨自實現了一些什麼項目?

我除了課上的大作業就沒自己實現過什麼大項目. 我倒是特別喜歡刷leetcode上面的題目,而且做得還算可以,通過率低的幾十題用Java,Python, 還有C++都寫了通過了,所以我覺得我應該能達到本科生的平均碼力,再高一點點我看都達不到是因為我的實際工程能力比較弱或者說根本沒有. 大家都在說找工作獨立開發項目很關鍵,聽著心裡著急得很. 我著急一方面是因為自己沒有獨立開發過什麼東西,一方面是不知道該獨立開發點啥好,我倒不是怕學新東西,但就怕不知深淺搞了些超出目前能力範圍的項目. 另外,當公司審視你的個人項目時有些什麼評判標準? 怎麼才算是好項目?


其實我也很想知道答案。上次去求職,對方說只收大三的……我想了一下回答說,我估計大三就結束了……

所以我去 leetcode 上出題玩了。。。其實我現在搞出來的題目自己都寫不出好的解答。方法太暴力……

於是只能替他們寫寫 Driver,處理一下 C++到 C 的問題。

話說,進谷歌 intern真的不難么?


說點別的

保持好奇心很重要,我說這些只是因為我真的必須弄明白,像是資料庫我從來沒寫過,因為我煩死資料庫了,學個理論就夠了,你也可以做你感興趣的東西,只要不是刷題,都能提高工程能力。

而美國大學生做這些東西做到吐血,怎麼可能不會,只是他們教學手段不好(折磨式),所以中國程序員只要好好學習絕對不會比美國的差

+++

我覺得如果喜歡編程,做一個貫穿本科課程的大項目好了,設計cpu,定義指令集,做個虛擬機跑cpu,發明語言,寫語言編譯器跑在虛擬機里,給cpu做操作系統,os裡面寫圖形庫,用圖形庫做個掃雷和俄羅斯方塊,然後做個ai自動解遊戲,在裡面寫個tcpip協議棧,開兩個虛擬機和ai聯機對戰

還有別的好玩的,喜歡可以加,我只喜歡這些

just for fun,這才是學編程的目的,不喜歡可以考慮轉行。


我把haskell的class去掉了然後實現了一編,把C語言的宏去掉了實現了一遍(還編譯成機器碼放進內存里需要的時候強制轉換一下就可以在VC++裡面直接調用),做了一個軟體渲染器。

不過那個時候最開心的還是寫了個正則表達式引擎,然後我把所有著名的別人寫的C++的正則表達式引擎都搞下來試一試(包括但不限於boost、M$RA出的等),結果是我的最快,不過還是比.net的慢了一點點。不過這個測試是包含了豐富的功能的,譬如說capture了之後當場拿來match等,有些著名的正則表達式引擎因為缺乏功能就不測試了。

當時有個同學也跟我做同樣的事情,現在去了美帝的微軟干。記得那個時候跟他打賭,說如果他宣布做完了之後,我能在半個小時內發現bug,就請我吃一頓pizzahut,否則我請。最後我竟然贏了,啊哈哈哈。。


我都不好意思說那些個管理系統。。。。


美本,暑假google實習並拿到return offer(不亮背景沒人信是吧)。

做那種獨立開發項目意義真的不大啊。。美本利用好學校資源才是正道。。反正進公司還是要重新學。人家就看你從不聰明,學得快不快。。。

所以:

1.GPA

2.research project(聽起來炫酷吊炸天的最好)

另外找人內推才是拿面試的最佳途徑


我其實特別頂 @杜少雷的答案,GPA research project才是你該做的。

你是學computer science的,不是學computer programming的,GPA和research的作用就是把你和其他平庸碼農區分開的分水嶺。

比如有些人不注重這兩項,即使去了研究機構,也只能負責Engineering的東西,你想像一下如果是你,你身邊的都是Scientist頭銜的、每年刷數篇頂會的人,你是一個來幫他們打下手的跑腿的,你會怎麼看自己?至少我知道有些人會強忍下心中的自卑,然後到quora或者知乎(看他的英語水平)來裝裝大神舒緩一下壓抑的情緒。

Topic Sentence沒有例證支持是不行的,舉一個你我身邊的例子:

在一所「知名的」學校有兩個好學的學生,一個學生A很喜歡CS方向的一些小眾獵奇的coding,同時有相當好的基本功;另一個學生B很注重GPA,同時在research之餘也會和A一起Coding。A的Coding很厲害以至於B寫出來的東西A在半小時內就能找到Bug,A到現在也對此非常得意念念不忘。

之後呢,B去了美國,A留在了國內。

當然我並不是說因為國內Coding環境不好、把碼農當狗用所以A就不如B,大家都有自己的方向:

A可以去BAT;B可以去TGIF

A可以去優酷;B可以去HULU

A可以去MSRA;B可以去MSR

總之,將來走什麼樣的路,你要自己選;怎樣的路更好,你要自己看;跪舔什麼樣的大神,你要自己想。

ps

我剛剛手賤點進杜少雷的主頁去了,看到UCB三個大字...........唯有淚千行


本科的時候(10幾年前的事情)嵌入式的概念最火,基本的編碼能力具備之後刷了個高程證書,大三開始就一直搞些軟硬結合的東西。

當時不像現在資料比較多。很多基礎的工作(包括基礎的庫)都得自己做或者改寫,然後搞著搞著大三的暑假就進了企業,搞著搞著發現差不多搞到國內同期比較高的水平了,然後再搞著搞著就發現這個行當慢慢走了下坡路。其實這行業也沒怎麼爆發過……

現在知乎的推薦大體是刷leetcode,搞圖形學,搞編譯器,再不就搞些貼近互聯網的東西。

不管搞啥搞工程跟著市場環境走沒錯的。當然做自己喜歡的方向也挺好的。


1.看完排名靠前的某人的回答...那一股濃濃的中國苦逼山寨奧賽解題的味道。

2.老美的思路與中國完全不一樣,人家是以應用為主,學東西是為了能拿來用,能解決現實問題,而不是某人那種為了裝逼、為了那東西而學東西。

3.目前無論國內重點大學,還是國外,都喜歡能解決現實問題的項目,題主應該從這點來出發。比較簡單的,能激起興趣,又不太難的方向,比如智能家居,安防,某些管理的細分方向上還沒有管理軟體的等等。經驗告訴我們,一個好的觀察與選題,比高技術含量的選題更能贏得老師與HR的青睞。

4.做東西,不一定非得發明一個別人沒做過的。改進提高、組合、優化性能與體驗等都算是做項目。但一定要避免把已有的東西,毫無改進地、完全臨摹式地重做一遍,這種做法只是浪費時間。

5.說說工作方向上的事情。HR選人,無非就是針對公司所需的特定崗位,來選擇深度上達標、廣度上有加分的孩子。因此你做項目之前,需要對自己有個定位,把深度第一,廣度第二的思想融合進你做的項目里,讓項目能體現出這些東西。比如,把你的科目,在項目里,都自己體現一遍。

舉個例子,編程語言,學校教了C++與Java,你又自學了Python,因此,你在這個項目里,可以把這三種語言都用上,揚其長、避其短。

再舉個例子,你對資料庫學的很好,那麼可以在項目中使用多種類型的資料庫,單機的、集群的、關係型的、非關係型的、甚至是自己寫的簡單數據處理中間件。但一定要協調好它們的關係,用之有道,不能為了用而用,一定要一切從需求出發,需求要用,那就用。


你可以花樣完成大作業。

我在學計算機圖形學的時候,可以用單次大作業結課,其中一個題目是老掉牙的太陽系模擬。

於是我寫了一個物理模擬、尺寸1:1的太陽系模擬,以此接觸了物理引擎的基本概念,並且簡單接觸了大浮點數運算的精度誤差問題。


你們操作系統課不用寫大作業寫os內核嗎?你們編譯原理大作業不用寫編譯器嗎?你們資料庫大作業不用寫DBMS嗎?你們圖形學大作業不用寫光線渲染演算法嗎?如果不用的話就自己去寫這個嗎。

寫完這些要不少時間呢


作為一個在中國讀完大學的僅提供自身經歷參考,反正大學畢業沒愁過工作問題面試每面必過喵~

一周時間做了一整套系問答晚會用軟體,然後不調試直接現場成功運行喵~裡面有上百題庫和整個晚會流程喵~

實習的時候用一晚上做了個 PPT,效果直接超過 Flash ,選作精品課件送省上了喵~

嘛~最無聊的畢業設計,用僅僅24小時做了一個設計,出題導師評價:「我看不懂」,就這麼過了喵~


推薦閱讀:

Android 操作系統為什麼不啟用swap?
大部分安卓手機真的都能升級android 8.0嗎?
如何最有效的解決Google公共庫&字體庫被屏蔽的問題?
為什麼更改主機host可以訪問google?

TAG:矽谷 | 微軟Microsoft | IBM | 谷歌Google | C |