前一篇文章講述了我在三月份毫無準備就去面試的後果,一開始心態真的爆炸,可是又不服氣,一想到每次回來後家人朋友問我面試結果的期待臉,越以爲必須付出的行動來證實本身了。php
面經傳送門: 一個1年工做經驗的PHP程序員是如何被面試官虐的?
下面是我花費兩個星期作的準備,主要分三部分:html
下面的文章和網站連接我都會註明出處,若是有問題請聯繫我,我會及時修改或撤銷
反思:爲何好多知識看事後不能記住,面試一緊張更加想不起?一方面本身沒有深刻學習,另外一方面複習過程雜亂,和寫代碼一個道理,若是你的業務邏輯和其餘亂七八糟的都放在控制器上,代碼一多你要調用某個方法可能就會讓你抓狂,因此通常採起controller和server分層,同理,咱們最好提早作好計劃,分種類,分層次來學習。mysql
複習前若是很迷茫,能夠網上Google一下面試知識點,看到的無非都是操做系統,計算機網絡,數據結構,mysql,設計模式,Linux,Redis,再者根據你所學語言方面的知識和簡歷,例如我求職PHP,簡歷上有寫Larvel框架,那就再加PHP基礎,框架Laravel,服務器nginx。
若是你是科班出身,那應該對操做系統不陌生,至少在高校裏面是學過這門課程的。但估計不少人像我同樣,後悔沒去好好學這門課,或者工做上用不上就拋棄它了(PHP更是如此),我要說的是操做系統很重要,就以我面試了幾家公司來講,基本若是你答出操做系統相關知識點基本都是加分的。nginx
附加幫助我整理這些知識的網站和博客文章:git
併發技術·筆試面試知識整理github
這裏推薦有精力的朋友能夠看下《Linux高性能服務器編程》,粗略看下8,9,10,13,14章,以及《深刻理解計算機系統》的第1章和第12章,我就是結合這兩本書,記住並理解簡單的知識點,後續我還要花時間去深刻閱讀。
計算機網絡能夠說是大多數程序員須要學習的大課程,特別是PHPer這些web打交道的程序員。固然,計算機網絡太底層的東西很枯燥很難懂,我只針對一些比較常見,比較基礎的知識面來學習。web
附加幫助我整理這些知識的網站和博客文章:面試
小土刀的面試刷題筆記——網絡redis
複習完這些基礎的知識後,試着要去了解稍微底層一點的東西,由於不少面試官喜歡由淺入深地問,若是能答出一兩點基本都是加分的
推薦一篇很好的文章,仔細讀完會有很大的收穫:
不少人在大學裏面都學過這門課程,也是不少程序員的啓蒙課程,天然很重要,(大學惟一一次掛科就是它了。。。)
從事PHP工做的朋友應該都用不上它,因此這也是一個很容易被忽視的基礎知識點,天然有不少大公司面試的時候很注重這方面的基礎,特別是應屆畢業生。我複習這方面的知識是從新翻開我大學的課本,把其中比較重要的東西手寫幾遍。
我不久前面試過一家要我手寫鏈表,結果早就忘了,沒寫出來
冒泡排序能夠了解下如何優化改進,有些面試官會問,若是答不出他會提示你怎麼作,考察你的思考能力
關於數據結構的參考資料基本Google一下就有不少(順便說下,21世紀程序員仍是少用某度),大學的課程書是最好的,通常大學的數據結構都是面向學生的,仍是很基礎,很好理解的。
說實話,我以爲絕大多數程序員都是在CURD,學那麼多東西很大方面也是爲了輔助最後的curd。因此數據庫知識的重要性毋庸置疑,後面我打算買本《高性能MySQL》來提高本身這方面的能力。
nginx和php-fpm應該算是PHP程序員接觸比較多,可是可能沒有去深刻了解過,有些面試官喜歡結合nginx,php-fpm和操做系統進程方面的知識來考察。
能夠Google瞭解下php-fpm和nginx各自的進程管理模式,參考文章:Nginx內部有使用多線程嗎?
面試過程可能會問到網站負載低,訪問慢怎麼排查,參考:論壇偶爾出現負載低可是訪問很慢排查思路
工做項目不大,用到redis的地方並很少,因此一直也沒去學習redis,可是從面試狀況看來,被問到redis的機率仍是很大的,畢竟這款基於內存的數據庫功能強大,市場佔用率很高。
因爲我本身是一直用Laravel框架開發的,簡歷裏面的項目也多處標明Larvel,因此這裏就介紹Larvel相關的知識,你對哪一個框架熟悉就去作相應的複習,基本Google和手冊都有。
看一我的的代碼水平,能夠從是否靈活使用設計模式看出來的。寫代碼也是一門藝術,好的代碼低耦合,易擴展,設計模式的理解和使用也決定了你的代碼水平。這裏推薦一本《大話設計模式》,目前我只看了一點點,對於我這樣的菜鳥以爲還不錯,後面需抽點時間好好看看。
有一次面試官問我簡單工廠模式是否是符合六大原則之一開閉原則?我答不出來,隨便選了個符合。。。實際簡單工廠是不符合開閉原則的,這就涉及到你開閉原則的理解。
真正要讀懂PHP內核的人應該不多,大多數人都沒時間和精力去研究底層,畢竟PHP一直以開發效率高著稱,只要底層有人寫好給廣大程序員用就行了。確實是這樣,可是我記得有個面試過個人大佬跟我說,不少東西不要只會用,要多想一想爲何能夠這樣用,PHP語言我以爲也是同樣,雖然如今能力有限,但我能夠提早把一些比較基礎,容易理解的底層知識學習一下,這不也是一種自我提高?面試的時候你也能夠拿出來炫一下,說錯也不要緊,至少你展現出你的好學,你的認知層面。
參考文章:
面試都是拿着你的簡從來問問題的,你的簡歷內容會直接影響面試內容的走向,因此簡歷寫完還要作響應的複習。
個人簡歷有涉及rabbitMQ,elasticsearch等知識,我就對其進行簡單的複習。
另外很重要的一點:提早想好怎麼描述你作過的項目,其中遇到什麼問題,怎麼解決,儘可能把你好的一面展現出來,這些均可以提早寫下了的,好記性不如爛筆頭,下面第二部分會說到。
複習的內容實在是太多了,單單寫上一部份內容都快把個人鍵盤打爛,手寫斷了。雖然有了十全的計劃,但如何高效率去記住上面那麼多東西是一個大問題,看看我是怎麼作的。
總之,真想要離職,找一份好工做,必須對本身狠一點,找到心儀的工做再好好去放鬆幾天。其實有很多人一直在埋怨大環境很差,確實是,但有何用,想爲本身菜,本身不努力找一個藉口?王小波說的好:人的一切痛苦,本質上都是對本身無能的憤怒。固然運氣也很重要,保持樂觀,別輕易放棄。
簡歷不用多說,就是很重要,怎麼寫?其實我也是參考一篇文章的:我本覺得大家會寫簡歷
歸納一下:
技能亮點,圍繞 熟悉 , 有所 , 掌握 , 瞭解 , 有必定心得 等
不要這樣:
熟悉PHP , 熟悉YiiLavarel框架 ( 複製粘貼 , CURD , 就是幹! )
熟悉Linux使用 , 能夠搭建XXXX環境 ( 會敲cd , ls命令 , 會apt install nginx )
熟悉git或svn版本管理的使用 ( 會git push , 會git pull )
熟悉MySQL以及對數據庫的優化 ( 會select update 和 delete , 會添加索引 )
熟悉Redis或Memcache的使用 ( 會set key , 會get key )
最好這樣:
PHP : 熟悉PHP語法 , 熟悉PHP面向對象 , 能夠根據業務邏輯結合合適的設計模式 . 熟悉PHP SPL標準庫 , 對PHP的一些高級用法有所心得體驗 , 諸如pcntl多進程模塊 , socket模塊 . 對SWOOLE全部涉獵 , 有一些本身的積累和經驗 . 對於底層 , ZendVM如何如何 。
Redis : 熟悉Redis經常使用數據結構的使用 , 可結合業務場景選擇合適的數據結構 . 熟悉Redis集羣 , 對集羣實現方案原理有必定掌握 , 對於市面經常使用的集中集羣方案的優缺點比較瞭解 . 對於底層 , 對Redis SET等底層數據結構的實現有所掌握。
必定要寫項目亮點和難點
大多數人都是這麼寫的 : 負責用戶登陸註冊模塊 , 後臺管理 , 多角色權限控制 , 負責廣告業務模塊的管理和篩查(太普通,太泛了)
面試並不簡單,不要過輕敵,作好準備,打好基礎是關鍵。毫無準備就去投簡歷面試大可能是浪費時間,甚至浪費進入好公司的機會。仍是那句話程序員應該腳踏實地,不要眼高手低,用實際行動證實本身。
我是即將入職廣州一家遊戲公司PHP開發崗位的程序員,2018年畢業,畢業到如今確實收穫了很多,也讓我看清本身,須要惡補的知識還有不少不少。歡迎你們關注個人我的博客https://zgxxx.github.io/,比較簡陋,仍是但願能和萬千大神交流技術問題,一塊兒成長。