代碼之外:校招該如何準備開發項目
目錄
-
雙非碩士的辛酸求職之旅--第 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 的項目推薦:
Go 的項目推薦:
1.6.2. 知識複習類
如果你還是不知道該做什麼,請參考
下一篇講講如何準備算法吧,算法不是我的強項。其實我感覺我對面試的體會還是更多一些,後續也寫文章講講《如何準備面試》我是宇宙之一粟,熱愛文學和技術,想文理兼修卻還在探索的人。希望看到這裏的同學,點個贊或關注一下,謝謝。
劃線
評論
複製
- 我不想 MySQL 分片
- 谷歌卷自己,繼 Imagen 之後繼續放大招:靠 200 億參數由文本生成的圖像驚呆網友!
- 雨林開源行:暢聊開源,走近 Gitee!
- 英偉達是如何做 GPU 編程的(一)
- 超級詳細的 Maven 教程(基礎 高級)
- 6 年技術迭代,一文詳解阿里全球化出海 & 合規的挑戰及探索
- 尤雨溪向 React 推薦自己研發的 Vite,網友:用第三方工具沒有任何意義
- Mac 中 Git 如何忽略.DS_Store 文件
- 從算法到工程 - 推薦系統全面總結
- Android 自定義 View 之隨機數驗證碼
- Meta 如何實現大規模無身份信息認證?
- 基於雲內核的未來雲計算架構
- SpringCloud - Ribbon 核心源碼解析
- 出海之路百花齊放,行業新兵 F5 如何立足?
- 今天很多 CTO 都是被幹掉的,因為他沒有成就業務
- 讀配置、講原理、看面試真題,我只能幫你到這了。。。
- OpenHarmony 應用開發之二維碼生成器
- 使用 ABAP 編程實現對微軟 Office Word 文檔的操作
- 谷歌最新 Imagen AI 在文本至圖像生成方面優於 DALL-E
- flutter 系列之:flutter 中的 flow