來自: 簡書,作者:知米丶無忌
連結:http://www.jianshu.com/p/814d05ddb54a
畫個圖很重要
後端開發是開發者中技術性偏強,對邏輯思維要求更高的一個細分方向,不同於前端,移動端等等,後者很多在做偏UI的事情,而後端處理的只有邏輯和業務。所以從長遠的職業規劃來講,從事後端開發作為技術道路的起點對長期是很有利的。
Web後端根據服務的種類會逐漸細分:小型公司小型業務一般是簡單工程化,簡單部署,開發選型多種多樣(php,Java,Python,Node.js…)這時候招的服務端主要還是看對語言的熟悉程度,一般要求是快速搞定。
中到大型公司隨著業務複雜度上升開始進行架構上的拆分,做一些服務化,中介軟體,近些年又有專門做資料分析(大資料,機器學習)的資料分析師,其實也是從伺服器端演化出來的。在一些公司中甚至Web容器的業務邏輯開發(本人做的事情)被稱為前端,而真正的後端是做資料分析、推薦系統、演演算法支援等等。這時候招聘Web服務端往往要求業務架構能力,如何解耦和模組化一個工程,如何做分散式。
內功篇
實際上普通的web端開發掌握個語言,學兩個框架基本就可以上手了,但是後續提高必須很好的掌握所有相關基礎,這個基礎就包括了協議層(TCP/IP),作業系統知識。
比如大流量下如何配置nginx伺服器引數? 流量進來伺服器會有各種各樣的問題:連線恢復的連線風暴、高併發秒殺型應用如何做限流、記憶體吃緊如何最佳化、連線數cpu記憶體各種被佔滿如何分析瓶頸在哪?這時候只知道幾個框架的人完全是一頭霧水,必須從計算機的更底層去分析原因。
初入職場先只能面試普通後端開發(非資深)攢點專案經驗,形成自己的一套分析問題的方法論,設計和架構一個複雜系統的經驗。
內功包括:
某一方向的後端語言和成熟框架:
建議傳統一點的,比如Java,PHP。一些前沿的還不穩定不適合你玩,比如Python、Node.js(Javascript)、GO、scala。必須精通,沒得商量。
常用框架需要精通,否則招你進去沒法快速上手幹活也不會招你。
如Java棧的需要瞭解Spring, MyBatis, 容器Tomcat,Jetty
擴充套件
分散式RabbitMQ(ActiveMQ), zookeeper ,hadoop目測以後會成為必備技能,做瞭解。工具類jar包apache系列:common-lang.jar, common-io.jar, common-bean.jar。搜尋ElasticSearch(lucene, solr)
Python棧的需要瞭解django, Flask 至少其一
PHP棧我只知道一個Lavarel,囧
適當的全棧全棧是趨勢,起碼要懂一點頁面的東西,包括html, Javascript, css
常用的JavaScript框架和標準:CommonJs, jQuery, Bootstrap
擴充套件(選擇性瞭解):Angular, React, vue, Backbone, zepto (適可而止,一入前端深似海)
相關工具
協作:Git使用
資料庫
MySQL必須精通,沒得商量。nosql需要瞭解:MongoDB, Redis, Memcached 原理和基本部署方式和使用方式。
複習資料結構和基本演演算法
這個程度的面試是會考連結串列、棧、二叉樹、B+樹、快速排序的,不能答不出來。
設計樣式
需要精通常用幾個,瞭解大部分。比如工廠樣式、狀態樣式、命令樣式、裝飾樣式……
網路基礎和作業系統
TCP/IP協議,unix系統使用經驗,shell程式設計等等。。如果你能說出unix的基本啟動過程,還有常見的分析問題所用的一些命令,如sar,free,du,top,awk,sed等,Java棧的有jmap,jstat,jstack等應該有加分。
應聘技巧-簡歷篇
1、專業名詞的拼寫不要出錯,不要寫java,要寫Java。不要寫mysql,要寫MySQL。
2、不要一大堆精通xx。看到這種簡歷我直接pass,摸不清他的底,還得面試好好問問,簡歷沒方向還不知道怎麼問。精通什麼就是什麼,可以寫具體一點,比如精通Java可以寫精通哪一部分,是socket還是多執行緒?不瞭解的就不要寫上去了。
3、簡歷中做足對對方公司的準備。你可以詳細瞭解你要去那個部門是做什麼的,當前有哪些產品,產品有什麼缺陷,技術的核心價值在哪,技術難點在哪,你在這上面有什麼優勢。技術一樣的情況下,hr喜歡準備充分的人。
4、還是把基礎先鞏固了再去面試,前面提到幾個基礎知識不掌握,一般面試都會掛,除非面試官是瞎子。
先寫這麼多,未來會寫寫開發麵試技巧。
●編號608,輸入編號直達本文 ●輸入m獲取文章目錄 前端開發 更多推薦《25個技術類微信公眾號》 涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。