目錄
今天重新整理聞的時間看到一篇很有針對性的報道,說是作為一名程式設計師想在一線網際網路月薪破萬,到底需要自身瞭解多深的技術,大家都知道既然是在一線城市,如果月薪沒有萬元以上,生活是很艱難的,畢竟一線城市科技和經濟都很高,當然消費自然就高了,裡面隱隱約約說了一些技術,大部分都是一名程式設計師必備的技能,但限於工作及其他原因就沒有面面俱到的報道出來了,大家也都懂,小編就不在這詳細的討論這個問題了,讓我來了解一下到底是什麼要的技術,才能夠在一線網際網路月薪萬元以上吧!
這是一個經常被初級程式設計師問到的一個問題。如果你問公司的HR,人家會告訴你,你的薪資取決於於公司的薪酬制度,以及你在公司的位置。。。,所以啊,你懂的,小夥子好好幹,繼續加班吧。
這是可恥的忽悠, 我們廣大程式設計師都是追求技術進步的有為青年,程式設計師的薪資水平要掌握在自己手中。
身為一個合格的Java架構師,應該瞭解並且常用的Java技術有哪些?
比如對集合類,並行包,類載入,IO/NIO,JVM,記憶體模型,泛型,異常,反射,等有深入瞭解,最好是看過原始碼瞭解底層的設計。比如一般面試都會問ConcurrentHashMap,CopyOnWrite,執行緒池,CAS,AQS,虛擬機器器優化等知識點,因為這些對網際網路的企業是絕對重要的。而且一般人這關都過不了,還發鬧騷說這些沒什麼用,為什麼要面試。舉一例子,在使用執行緒池時,因為使用了無界佇列,在遠端服務異常情況下導致內層飆升,怎麼去解決?你要是連執行緒池都不清楚,你怎麼去玩?再舉一例,由於對ThreadLocal理解出錯,使用它做執行緒安全的控制,導致沒能實現真的執行緒安全。還有遇到記憶體洩露怎麼排插問題,怎麼優化系統效能。所以作為一個拿兩萬的JAVA程式設計師這點基礎是要有的。
HTML/CSS/JavaScript 這些就不必說了,入門級WEB開發程式設計師都要掌握的。
從底層說起,你起碼得深入瞭解mysql,redis,nginx,tomcat,rpc,jms等方面的知識。你要問需要了解到什麼程度,我可以給你說個大慨。首先對於MySQL,你要知道常見的引數設定,儲存引擎怎麼去選擇,還需要了解常見的索引引擎,知道怎麼去選擇。知道怎麼去設計表,怎麼優化sql,怎麼根據執行計劃去調優。高階的你需要去做分庫分表的設計和優化,一般網際網路企業的資料庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經驗的成分在裡面。然後redis幾乎是必須的技能,而nginx和tomcat幾乎都是JAVA網際網路方面必配。至於rpc相關的就多的去,必須各種網路協定,序列化技術,SOA等等,你要有一個深入的理解。現在應用比較廣的rpc框架,在國內就是dubbo了,開源的還有spring cloud相關技術棧,可以自行搜尋。至於jms相關的起碼得了解原理吧,一般情況下不是專門開發中介軟體系統和支撐系統的不需要了解太多細節,國內企業常用的主要是activeMQ和kafka。你能對我說的都有研究,阿里p7都不是太大問題的。
其次說說PHP程式設計能力,精通PHP語法,掌握常用的函數,熟悉PHP5下的OOP應用,熟練使用快取,掌握一些設計模式等等。這個是基礎。再高階一點,你要會這些:對PHP執行機制的理解;對系統資源的呼叫互動理解;關健效能的優化能力。以及有過OOP架構設計經驗,熟悉設計模式、UML,熟悉PHP物件執行機制,記憶體管理等
MySQL技能也是必不可少的。還是先從基本的來說,你要知道用PHP連線資料庫;懂得寫一些簡單的SQL;建一些簡單的索引;懂得用工具簡單操作一下資料庫(增刪改庫表結構資料等等)。進階一點呢,你要懂得在開發應用上設計資料庫,建立一些有效的索引,用explain分析SQL效能,壓力測試等等。再往上呢,你要深入瞭解資料庫索引、儲存引擎原理以及執行機制,能有效地構建高效能可延伸的資料庫結構/架構,有效地優化資料庫效能設定並加以偵錯,分析資料庫執行狀態。再往上呢,再往上先不說了。
再說說作業系統應用能力,WEB開發不只是會寫程式碼就行的。作業系統應用也是必備技能。需要廣泛且紮實的基礎理論,而對於開發者來說,熟悉基本的命令操作,對WEB相關服務的安裝、設定、優化能力需要具備。
說到這,已經把很多程式設計師打回原形了。天啊,要到這麼高的水平,原來我以為我很牛,現在才發現我太菜了。
還沒完呢,作為一個PHP程式設計師,沒有大型網站工作經驗,怎麼好意思出來混呢。PHP開發下的快取應用(memcache、APC等);session處理方案;熟悉負載均衡;熟悉PHP資料連線池應用;瞭解PHP程式設計效能優化。這些只有在大存取量網站工作才能接觸到。這些只是小菜,你還要掌握分散式快取及快取效能優化、熟悉儲存系統、檔案系統、資料庫,開發可延伸平臺。能結合負載均衡合理佈置流量,對PHP執行效能進行監控與分析等。
不說了,再說下去連我自己都沒信心了。不過呢,大家要往這個方向努力。FaceBook只招全棧工程師,現在大家知道為什麼了吧,你掌握了上面說的,你就是一個全棧工程師了。
首先2W程式設計師對演演算法的要求我覺得還是比較低,再高階也最多紅黑樹吧,但是排序和查詢的基本演演算法得會。程式設計思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但也能瞭解個幾種。程式設計能力這個我覺得不好去評價,但是拿一個2000W使用者根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高並行的系統,起碼讓你做一個秒殺系統,得有一個明確的思路和方向。
PHP程式設計師要月薪上萬,還是要求比較高的。 那個C++,JAVA程式設計師,可以專精某一技術。但是做Web開發的人,就得往全棧工程師這個方向發展。
其實,我內心是糾結的。因為我現在所學習的東西無法有價值的運用至專案中去,不僅僅是自己是後端的身份,還因為專案組中有專業的前端/美工。而我僅僅還只能做些拖拽bootstrap
框架中,別人寫好的元件到處德瑟~糊弄那些不懂行的可以,專業人士就算了,還不如紮紮實實的去研究CSS/JavaScript底層的東西。
我喜歡去學習新的技術,但這些還不夠。人有不是機器,學多了總會忘。所以通常都是兩條路
橫線發展,這種比較耗費時間。要麼面面具備,要麼什麼都不會
專精一本,做一門技術中資深的專家。根據一萬小時的定律,這個應該是不難實現的。
其實,人活著要點目標。有了目標就什麼都不用怕,只要朝著好的方向一步一步向前進即可...
以下的Java核心知識點整理是小編整理許久整理成的檔案資料,300頁Java核心技術,需要領取的小夥伴可以 點我 免費領取 ,程式設計的世界永遠向所有熱愛程式設計的人開放,這是一個自由,平等,共用的世界,我始終是這樣堅信的。
部分資料圖片: