代碼之外:校招該如何準備開發項目

語言: CN / TW / HK

目錄

  1. 雙非碩士的辛酸求職之旅--第 3 篇:談談我是如何準備開發項目的

  • 1.1. 無論我們做什麼項目,在面試官眼裏都可能是 Low 的?

  • 1.2. 做項目不是跟着開源代碼/視頻敲一遍

  • 1.3. 讓項目的來源上高大上

  • 1.3.1. 學校或企業做的項目

  • 1.3.2. 網上學來的、或開源項目達到高大上的效果

  • 1.3.3. 對項目的思考要多一點,也很高大上

  • 1.4. 為什麼我建議你做兩個項目比較好

  • 1.5. Java 和 Python 雙項目真的讓我受益頗多

  • 1.6. 總結

  • 1.6.1. 開發項目類

  • 1.6.2. 知識複習類

1.1. 無論我們做什麼項目,在面試官眼裏都可能是 Low 的?

先説一個可能的殘酷現實:無論我們做什麼項目,在面試官眼裏都可能是 Low 的。

你可能會反駁我,如果想。我承認你對…

比如秒殺系統,這幾年都強調高併發的經驗,所以大家都做,那些相關技術棧都快成八股文了,網上相關文章也一堆,你會覺得高大上,但是面試官如果問:

  • 你項目上線了嗎?真實情況有人用嗎?沒人用你做成這樣幹嘛?

  • 為什麼選 Redis 不選 Memcache?

  • 為什麼消息隊列選 RabbitMQ,不是其他?

  • 等等一堆你可能想不到的問題

其他項目就更別説了:博客系統、在線聊天工具、XX 爬蟲系統、XX 管理系統…

有些讀者可能會問了:我作為一個學生,那我要是能做出微信、頭條、淘寶這樣的項目,我還用得着來這公司上班?下一個扎克伯格怕不就是我了?

問的好,其實很多企業級項目歸根結底,本質也是這些項目。那為什麼我們做不太行呢?

總而言之,我説的 “Low” 不是説項目真的不好,而是想表達項目難做。什麼叫難做?

1.2. 做項目不是跟着開源代碼/視頻敲一遍

作為學生,本來大家就不可能做的是企業級項目,所以沒辦法。大家都會選擇一些常見的容易上手的項目來做,這些項目不是不能做,但絕對不會是你跟着開源代碼或者看視頻跟着敲了一遍,就説你做了這個項目。

好好思考一下。你是真的懂背後的原理嗎?比如:

  • 你的項目架構是啥,瞭解嗎?(我記得面試的時候好多面試官喜歡問,還有線下讓我畫架構圖)

  • 為什麼要做這個項目?問對業務邏輯的認識?

  • 項目用的什麼數據庫?問 ORM、MyBatis,或者繼續深挖數據庫的知識點

  • 上 Spring 的,問 AOP、IOC;問對 servlet 的理解?

  • 上前後端分離的,問如何解決跨域請求?問 session?

  • 上高併發的,問如何優化使得併發量有提升?

  • 上微服務的,問你微服務怎樣設計?

  • 項目出現什麼,就看你會被問什麼?

有時候最怕顧此失彼,為了追最新框架、最新技術,往往忘記了對核心的技術原理的理解。

所以項目難做就在於此,你用舊技術他會覺得 low,你用新技術他會覺得你只是單純的套用,又不是真正的懂。

所以針對這樣的情況,我的看法:雖然事實是我的項目其實做的是有點 low,但是小項目也要展現出它的高大上。

那麼,如何展現出高大上?

1.3. 讓項目的來源上高大上

項目的來源無非幾個:學校;企業(有實習的同學);網上(開源 or 付費)

1.3.1. 學校或企業做的項目

珍惜每一次鍛鍊的機會,用心做好每一次的項目:

  • 課程設計/畢業設計中:雖然我是小 demo ,但是我拿到優秀的項目哦(展現拿到優秀的點)

  • 比賽項目:ACM、互聯網+、挑戰杯、藍橋杯(我這個項目獲獎了,專家評審認可的;沒獲獎也可以高大上,比沒有好對吧)

  • 實習項目:如果這是 BAT 的實習項目呢?(大廠實習雖然可能只是簡單 CRUD,但至少來源就高大上了。)

在 2017 年本科那會,有門課需要做 Java 課程設計,我們大家都做的管理系統,全班只有一個同學做了坦克大戰,然後還可以讓老師體驗玩一下。

你體會一下,如果是你是那門課的老師,你喜歡哪個項目?

1.3.2. 網上學來的、或開源項目達到高大上的效果

如果你覺得學校的課程設計不夠好,免費的項目 GitHub 和 Gitee 上的優秀開源項目很多;付費的牛客和慕課上的針對性項目也挺高大上的。推薦大家學習:

你學了後如何體現你的項目高大上呢?

  • 比如你做的項目開源,得到了 2k 以上 star ,高大上吧

  • 你對某個大牛項目有自己的貢獻,發現了啥 bug 也挺高大上

  • 你的項目跟着 mou 前阿里/字節架構師/工程師學的(這個 title 的付費項目一大堆,跟着學比自己亂寫的的確要高大上吧)

或者大家都是本地項目,你的項目部署上線了,然後面試官可以直接訪問,看到你做的項目;比如你做了小程序的項目,打開微信就能體驗,哪個項目高大上?

1.3.3. 對項目的思考要多一點,也很高大上

優秀又好做的項目好多人推薦,那麼就有可能大家都做同一個項目(比如秒殺),但是你對項目有自己的思考,就很不一樣的。

如何展示給面試官你的與眾不同?

  • 大家都用 Java 做高併發,你來一個 Go 語言版本的。大家都上框架做 Web 開發,你自己寫了一個 MVC 框架, RPC 框架等等。

  • 之前還看到一本書中的一個觀點,做一些有工具也很有亮點。比如我們每天在 Linux 中都在用的 cat 命令,你有沒有研究過這個命令的實現算法,你來做會怎麼做?

  • 代碼重構,項目優化也是很多人不會想的點,極少人做那就是高大上

  • 其他可以思考的點,大家多去網上找找。

最後,做“高大上”只是我的一個技巧而已,而且只是提供一個思路,希望大家都要好好準備一個項目,讓自己吃透,這一點就足夠高大上了。

1.4. 為什麼我建議你做兩個項目比較好

以我的經歷來説,2020 年 6 月之前,簡歷上只做了 Python 的項目:一個在線教育平台和一個上線的個人博客。

所以只能投 Python 的崗位,根本不敢去找其他如 Java 的工作,而且投了也沒有什麼回饋。為什麼呢?

首先,Python 不是一門企業級應用首選的語言,據説是會有一些坑和性能瓶頸,導致用 Python 做後端開發的公司較少。以前用 Python 的公司也都轉 Go 語言了,貌似知乎、字節都是如此。

其次,Python 更多是作為機器學習和數據分析的首先的語言,讀研期間會使用到的框架基本都和 Python 聯繫密切,所以找算法和數據崗可能更好一點,所以我拿着 Python 在後端開發方向( Java 和 Go )的簡歷中沒有一點優勢可言。

最後,Python 作為一門簡單的解釋性語言,入門時大多人都會選 Python。隨着學習的深入,個人體會卻是 Python 易學難精,但作為第二語言真的不錯。

所以在 7 月和 8 月份的時候,每天就是惡補 Java 項目。因為感覺再做秒殺系統,我玩不出新花樣了。我選擇了校園微商城項目,而且小程序在那會也不算過時,畢竟時至今日,小程序開發還是很有市場的。

人真的是被逼出來的,如果不逼自己一把,就永遠不知道自己什麼時候可以做好。

1.5. Java 和 Python 雙項目真的讓我受益頗多

正因為有 Java + Python,我可以投互聯網公司,可以投銀行,可以投國企。

我還記得有面試官問我對這兩門語言的看法?

(我在想這不是正中下懷嗎?就等你問了)大概是這樣答得:

  • 因為這兩門語言都挺火的,Tiobe 排行都是前幾名,所以我想都學習一下。

  • 再者,就像好的工程師知道用更適合的工具擰相應的螺絲。開發也是如此,編程語言也是工具,有優有劣,用不同的語言做更適合它的項目罷了。

  • 我本科學的就是 Java 做 Web 開發,Python 是在讀研期間學會的。因為機器學習的課程使用,而且好用的機器學習庫都離不開 Python,這時候更適合我的工具就是 Python 了。後面在這個基礎上接觸了 Python 的 Web 開發框架 Django,由此做了我簡歷上的這個項目。

大概就是這樣,吹水還是要會的。

最後我在秋招中,也不限定只投某個具體的編程語言。憑着 Java + Python 的雙項目拿到了 Java 開發工程師、Python 開發、C++ 遊戲開發、Go 後端開發工程師的 offer…

C++ 開發那個我是説自己本科學過,但是不咋會;Golang 提的也是我正在學;離譜的是也進入了 Erlang 開發的面試,面試官説如果拿到 offer 可以培養的。

所以,這也是為什麼校招中很多公司要求至少一門編程語言但不限於 C/C++、Java、Python、C#、javascript… 的原因吧。

1.6. 總結

關於如何做項目的幾個點終於説完了,也不知道對大家有沒有一點幫助。最後推薦幾個我覺得還不錯的開源項目吧:

1.6.1. 開發項目類

Java 的項目推薦:

  1. 秒殺系統設計與實現

  2. 若依

  3. mall 項目(40k+star)

Go 的項目推薦:

  1. 基於gin+vue搭建的後台管理系統框架

  2. 7 天用 Go 從零實現系列

1.6.2. 知識複習類

  1. 後端架構師技術圖譜

  2. CS-Notes

  3. JavaGuide

  4. JavaFamily

  5. Awesome-interview

如果你還是不知道該做什麼,請參考

  1. GitHub 中文排行榜

下一篇講講如何準備算法吧,算法不是我的強項。其實我感覺我對面試的體會還是更多一些,後續也寫文章講講《如何準備面試》我是宇宙之一粟,熱愛文學和技術,想文理兼修卻還在探索的人。希望看到這裏的同學,點個贊或關注一下,謝謝。

劃線

評論

複製