宏觀方面
專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)同心免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一、 JAVA。
要想成為JAVA(高級(jí))工程師肯定要學(xué)習(xí)JAVA。一般的程序員或許只需知道一些JAVA的語(yǔ)法結(jié)構(gòu)就可以應(yīng)付了。但要成為JAVA(高級(jí))
工程師,您要對(duì)JAVA做比較深入的研究。您應(yīng)該多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、線(xiàn)程。如果可能,希望您
對(duì)JAVA的所有包都瀏覽一下,知道大概的API,這樣您就發(fā)現(xiàn)其實(shí)您想實(shí)現(xiàn)的很多功能,通過(guò)JAVA的API都可以實(shí)現(xiàn)了,就不必自己費(fèi)太多的腦經(jīng) 了。
二、 設(shè)計(jì)模式。
其實(shí)寫(xiě)代碼是很容易的事情,我相信您也有同感。但如何寫(xiě)得好就比較難了。這個(gè)“好”字包括代碼可重用性,可維護(hù)性,可擴(kuò)展性等。如何寫(xiě)出好的代
碼往往要借助一些設(shè)計(jì)模式。當(dāng)然長(zhǎng)期的代碼經(jīng)驗(yàn)積累,只要您用心,會(huì)使您形成自己代碼風(fēng)格。相信您的代碼也比較符合代碼的可重用性,可維護(hù)性,可擴(kuò)展性。
但既然前人已經(jīng)給我們總結(jié)出了經(jīng)驗(yàn),我們何不踩著前人的肩膀前進(jìn)?
三、 XML。
現(xiàn)在的系統(tǒng)中不使用XML幾乎是不可能的。XML的功能非常強(qiáng)大,它可以做數(shù)據(jù)轉(zhuǎn)換、做系統(tǒng)的配置、甚至可保存您的系統(tǒng)業(yè)務(wù)數(shù)據(jù)。因此您必須了解
XML,包括它的語(yǔ)法,結(jié)構(gòu)。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因?yàn)樵谖覀円话愕捻?xiàng)目中,XML往往擔(dān)當(dāng)系統(tǒng)配置
信息的作用,您需要用這些API解析這些配置信息,開(kāi)發(fā)完美的項(xiàng)目。
四、 精通使用一種或兩種框架。
“框架都會(huì)有許多可重用的代碼,良好的層次關(guān)系和業(yè)務(wù)控制邏輯,基于框架的開(kāi)
發(fā)使你可以省出很多的開(kāi)發(fā)成本”。這里希望您能精通,更多的是希望您能通過(guò)框架的使用了解框架的思想。這樣您在開(kāi)發(fā)一個(gè)項(xiàng)目時(shí)思路會(huì)開(kāi)闊一些,比如您
會(huì)想到把SQL語(yǔ)句與您的JAVA代碼分開(kāi),再比如您會(huì)考慮把您的業(yè)務(wù)邏輯配置到XML或者數(shù)據(jù)庫(kù)中,這樣整個(gè)項(xiàng)目就很容易擴(kuò)張了。
五、 熟悉主流數(shù)據(jù)庫(kù)。其實(shí)真正比較大的項(xiàng)目都是有人專(zhuān)門(mén)做數(shù)據(jù)庫(kù)的,但往往很多項(xiàng)目要求作為(高級(jí))工程師的您也參與數(shù)據(jù)庫(kù)的設(shè)計(jì)以及SQL的編寫(xiě)。所以為了
更好的為國(guó)家做貢獻(xiàn),建議您還是多了解一些主流數(shù)據(jù)庫(kù),比如SQLSERVER,ORACLE,多連接SQL和存儲(chǔ)過(guò)程以及觸發(fā)器。如果您不是“科班”出
身,您還需要補(bǔ)充一些數(shù)據(jù)庫(kù)原理方面的知識(shí)。
六、 精通一種或兩種WEBServer。
因?yàn)樽鳛镴AVA工程師,特別時(shí)
想成為高級(jí)JAVA工程師的您,您不可避免地要部署您的項(xiàng)目到WebServer上,而且只有當(dāng)您精通一種WebServer,您才可能最大限度地使用它
的資源,這往往可以節(jié)省很多時(shí)間和精力。
七、 UML。
您肯定想成為高級(jí)工程師,因此您有必要了解或熟練或精通UML,這取決于您有多大決心想成為高級(jí)工程師和項(xiàng)目經(jīng)理。在比較正規(guī)的開(kāi)發(fā)團(tuán)隊(duì)
中,UML是討論項(xiàng)目的交流工具,您要想做一個(gè)軟件工程師,您至少要能看懂,您要想做高級(jí)工程師,您要能通過(guò)它來(lái)描述您對(duì)項(xiàng)目的理解,盡管這不是必須,但
卻很重要。
八、 站在高度分析問(wèn)題:
這不是一個(gè)知識(shí)點(diǎn),也不是通過(guò)書(shū)本就能學(xué)得到的。只所以提到這一點(diǎn),是因?yàn)槲冶饶€著急,我希望您更快的成為一個(gè)高級(jí)的軟件工程師,而
不是一個(gè)一般的軟件工程師。希望您在工作中多向您的系統(tǒng)分析員、需求分析員、系統(tǒng)設(shè)計(jì)員學(xué)習(xí),多站在他們角度上去看您在開(kāi)發(fā)的項(xiàng)目。在最好在項(xiàng)目之初先在
您的腦海里對(duì)項(xiàng)目有個(gè)大致的分析、設(shè)計(jì),然后和他們進(jìn)行比較,找找差別,想想缺點(diǎn)。
九、 工具。
您在這個(gè)階段可能接觸到不同的工具了,盡管您還需要使用JB或者IDEA,但能可能對(duì)
ROSE,Together要多了解一些,因?yàn)槟?huà)UML了。不要再對(duì)Dreamweaver等HTML編輯器情有獨(dú)鐘了,那些JSP頁(yè)面讓初級(jí)程序員去寫(xiě)吧
微觀方面
1.Core Java部分
這是最基礎(chǔ)的,對(duì)于一個(gè)java高級(jí)開(kāi)發(fā)/設(shè)計(jì)人員,你需要對(duì)這一部分達(dá)到精通的水平,重點(diǎn)內(nèi)容如下:
a.面向?qū)ο缶幊趟枷?封裝繼承多態(tài)接口)
b.字符串處理
c.java.lang包,java.util包等常用包
d.java異常處理
2.Java高級(jí)部分
a.Java I/O流
b.Java多線(xiàn)程技術(shù)
c.Java網(wǎng)絡(luò)編程
d.Java Swing
后兩項(xiàng)可以了解即可,如果項(xiàng)目需要可以深入研究
3.前端基本技能
* HTML + CSS網(wǎng)頁(yè)開(kāi)發(fā)
* JavaScript
* Jquery
* 瀏覽器兼容性 CSS hack(了解)
4.熟練使用JSP + Servlet進(jìn)行開(kāi)發(fā)
5.MVC設(shè)計(jì)模式,原理,以及相關(guān)框架,如Struts
6.SSH框架
7.緩存技術(shù) session cookie
8.熟練使用一種以上Java開(kāi)發(fā)工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟練使用XML
JDOM w3c.dom SAX
10.Java設(shè)計(jì)模式
工廠(chǎng)模式,單例模式 ==
11.Java反射機(jī)制
反射的各種用法
12.了解或熟悉 C, C++, .NET
13.熟悉JDK的配置,環(huán)境變量
14.數(shù)據(jù)庫(kù)oracle必學(xué),其他最好了解一種以上(mysql,sql server,access==)
oracle:視圖,索引,存儲(chǔ)過(guò)程,觸發(fā)器,游標(biāo),包,常用函數(shù) ==
15.數(shù)據(jù)庫(kù)原理
事務(wù)的原理,鎖機(jī)制,表連接,復(fù)雜查詢(xún)語(yǔ)句(工作經(jīng)驗(yàn)),性能調(diào)優(yōu),鎖表以及解決方案==
16.JDBC,連接池
17.Ajax,反向Ajax
18.HTTP協(xié)議,request 和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用過(guò)Linux/Unix系統(tǒng),可以編寫(xiě)shell腳本,可以在Linux上部署項(xiàng)目
20.了解windows系統(tǒng)批處理腳本bat
21.了解HTML5,最好學(xué)習(xí)過(guò)
22.熟悉一種JS框架,如Prototype
23.J2EE原理 熟悉一種以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一門(mén)腳本語(yǔ)言,如python ,ruby
26.了解php/ asp
27.了解ftp協(xié)議及原理
28.熟練使用Junit測(cè)試,熟悉Mockito等測(cè)試工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究過(guò)一些的算法。
31.了解Flex(不學(xué)也沒(méi)關(guān)系)
32.了解敏捷開(kāi)發(fā)模式
33.工作流workflow至少用過(guò)一種,如OSworkflow,了解原理
34.使用過(guò)VPN了解其原理
35.熟悉jstl表達(dá)式和el表達(dá)式
36.熟悉webservice,WSDL,SOAP
37.圖片處理,如圖片上傳,預(yù)覽,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技術(shù),JSON+AJAX
40.分頁(yè)技術(shù),最好自己實(shí)現(xiàn)過(guò)不僅僅是用過(guò)要知道原理
41.Java Mail
42.Java讀寫(xiě)txt,excel,JXL技術(shù)
43.JVM原理,JVM內(nèi)存管理,GC,Java堆棧池
44.熟練使用下面的工具:
office辦公軟件,word,excel,ppt等
plsql,sqldevelop 數(shù)據(jù)庫(kù)開(kāi)發(fā)工具
outlook大公司都用
ue編輯器
瀏覽器控制臺(tái),調(diào)試
SHH/PUTTY 遠(yuǎn)程
45.UML建模工具Rational Rose等
46. 使用log4j
47.使用過(guò)開(kāi)放Api如百度,騰訊街景,新浪微博等
48.頁(yè)面靜態(tài)化技術(shù)(偽靜態(tài)頁(yè)面)
49.報(bào)表技術(shù),使用過(guò)報(bào)表制作工具,如水晶易表。
50.定時(shí)任務(wù),如Spring batch ,學(xué)會(huì)自定義batch任務(wù)(不適用第三方工具)
51.了解uuid
52.b/s 和 c/s架構(gòu)
53.正則表達(dá)式
54.了解jndi jms
55.ERP
56.UNICODE編碼,亂碼解決
57.開(kāi)源網(wǎng)絡(luò)編輯器,如ckEditor
58.二進(jìn)制原理
59.使用過(guò),了解過(guò)開(kāi)源論壇框架,如discuzz
60.GWT,Closure框架
61.了解大數(shù)據(jù),云計(jì)算
62.搜索引擎搜索技術(shù)
63.軟件工程,項(xiàng)目管理
職業(yè)要求
教育培訓(xùn)
計(jì)算機(jī)相關(guān)專(zhuān)業(yè),大專(zhuān)及以上學(xué)歷。相關(guān)專(zhuān)業(yè)證書(shū)有:Sun Certified Java Programmer(SCJP)和Sun Certified Java Developer(SCJD) 認(rèn)證。
工作經(jīng)驗(yàn)
有一定的軟件分析設(shè)計(jì)能力;熟悉Java、Servlet、JSP、EJB等開(kāi)發(fā)技術(shù);熟練使用Eclipse或jbuilder等java開(kāi)發(fā)工具;熟悉JAVA+STRUTS體系結(jié)構(gòu)和開(kāi)發(fā)工具;熟悉至少一種數(shù)據(jù)庫(kù)的開(kāi)發(fā)和設(shè)計(jì);具有良好的學(xué)習(xí)能力,具有強(qiáng)烈的工作責(zé)任心、有良好的溝通能力和團(tuán)隊(duì)合作精神。
薪酬參考
據(jù)智聯(lián)招聘上對(duì)上海java工程師的薪資據(jù)說(shuō)顯示,截止到2012年6月13日,java工程師的平均水平已達(dá)6435。根據(jù)現(xiàn)在移動(dòng)互聯(lián)網(wǎng)中安卓市場(chǎng)的份額,相信這一職業(yè)的工資水平會(huì)一直上升。
就業(yè)前景
Java是目前世界上最流行的計(jì)算機(jī)編程語(yǔ)言,是一種可以編寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。這可以概括JAVA有著自己獨(dú)特的優(yōu)勢(shì):語(yǔ)言簡(jiǎn)單、是一個(gè)面向?qū)ο?、分布式?yīng)用并且安全、體系結(jié)構(gòu)中立并且可移植,最重要,它是一個(gè)動(dòng)態(tài)語(yǔ)言。
權(quán)威統(tǒng)計(jì)機(jī)構(gòu)統(tǒng)計(jì)——在所有軟件開(kāi)發(fā)類(lèi)人才的需求中,對(duì) JAVA工程師的需求達(dá)到全部需求量的60%~70%。JAVA工程師的薪水相對(duì)較高,通常來(lái)說(shuō),具有3~5年開(kāi)發(fā)經(jīng)驗(yàn)的工程師,擁有年薪 10萬(wàn)元是很正常的一個(gè)薪酬水平。
JAVA發(fā)展方向
一是成為管理人員,例如產(chǎn)品研發(fā)經(jīng)理,技術(shù)經(jīng)理,項(xiàng)目經(jīng)理等繼續(xù);二是他的技術(shù)工作之路,成為高級(jí)軟件工程師、需求工程師等。
還是看看IDC Java工程師的薪水相對(duì)較高。 Java軟件工程師一般月薪范圍在4000-10000元,遠(yuǎn)遠(yuǎn)超過(guò)了應(yīng)屆畢業(yè)生月薪2500元的平均水平。通常來(lái)說(shuō),有一年工作經(jīng)驗(yàn)的Java高級(jí)軟件工程師的薪酬大致在年薪10—13萬(wàn)左右。
JAVA就業(yè)方向:可以從事JSP網(wǎng)站開(kāi)發(fā)、Java編程、Java游戲開(kāi)發(fā)、Java桌面程序設(shè)計(jì),以及其他與Java語(yǔ)言編程相關(guān)的工作??蛇M(jìn)入電信、銀行、保險(xiǎn)專(zhuān)業(yè)軟件開(kāi)發(fā)公司等從事軟件設(shè)計(jì)和開(kāi)發(fā)工作。
項(xiàng)目數(shù)據(jù)分析師分享:美國(guó)大數(shù)據(jù)工程師面試攻略
方法/步驟
先做一個(gè)自我介紹,本科南開(kāi)后,加入了一個(gè)創(chuàng)業(yè)公司kuxun,做實(shí)時(shí)信息檢索,后來(lái)進(jìn)入百度基礎(chǔ)架構(gòu)組,搭建了Baidu App Engine的早期版本,隨后去Duke大學(xué)留學(xué),在攻讀碩士期間,做跟Hadoop大數(shù)據(jù)相關(guān)的研究項(xiàng)目Starfish,之后在Amazon EC2部門(mén)實(shí)習(xí),了解它們的內(nèi)部架構(gòu),畢業(yè)后加入Linkedin,做廣告組的架構(gòu),涉及Hadoop調(diào)優(yōu),Data Pipeline, Offline/Online, 實(shí)時(shí)系統(tǒng)。最新是在Coursera從事數(shù)據(jù)工程師工作。在多年工作中,除了對(duì)技術(shù)的不懈追求,也積累了大量的面試經(jīng)驗(yàn),從國(guó)內(nèi)的一線(xiàn)互聯(lián)網(wǎng)百度,阿里巴巴,奇虎,人人,到美國(guó)一線(xiàn)公司Facebook,Google,Linkedin,Twitter,Amazon,到熱門(mén)Startup,Uber,Pinterest,Airbnb,Box,Dropbox,Snapchat,Houzz,拿到10+ offer,并且在Linkedin期間也面試過(guò)100+候選人,參與面試題制定,樂(lè)于分享并幫助很多人成功求職,實(shí)現(xiàn)目標(biāo)。
我們看一下這張硅谷地圖,它坐落于美國(guó)加州,從圣何塞到舊金山的狹長(zhǎng)地帶,中間是San francisco bay,簡(jiǎn)稱(chēng)灣區(qū)。它的由來(lái)是這邊有計(jì)算機(jī)核心處理器中離不開(kāi)的硅,30年來(lái),硅谷就發(fā)展成為無(wú)數(shù)技術(shù)性創(chuàng)業(yè)公司的搖籃。在20多年前,就有很多硬件公司的輝煌Intel,Oracle,Apple,Cisco成功上市,10年前,互聯(lián)網(wǎng)的興起,造就了Yahoo,Google,Ebay的神奇,而如今Tesla,F(xiàn)acebook,Twitter,Linkedin正扶搖直上,成為美股高科技股的領(lǐng)頭羊。這些公司的市值從幾十billion到幾百billion,PE從負(fù)數(shù)到上千。瘋狂的估值背后也改變了世界。
如果說(shuō)硅谷成功是有原因的,我覺(jué)得有兩點(diǎn)。地理位置是得天獨(dú)厚吸引大量人才,這里有Stanford和加州州立高校提供智力庫(kù)的支持,在硅谷可以看到來(lái)自全世界的最聰明的人,中國(guó)人,印度人,猶太人構(gòu)成這些Engineer的主力。雖然國(guó)內(nèi)做技術(shù)自嘲為碼農(nóng),但在硅谷成為一個(gè)優(yōu)秀工程師還是收獲頗豐。另一方面創(chuàng)業(yè)是一個(gè)永恒的話(huà)題,在Stanford有個(gè)說(shuō)法空氣中都飄揚(yáng)中創(chuàng)業(yè)的味道,一些早期員工通過(guò)上市套現(xiàn)又積累經(jīng)驗(yàn)成了天使投資,Y Combinator,各種技術(shù)forum,meetup,創(chuàng)業(yè)導(dǎo)師,都很活躍。資本的力量功不可沒(méi),早年VC通過(guò)投資,收購(gòu),上市放大形成一個(gè)雪球效應(yīng)。大家總喜歡問(wèn)什么是next big thing,哪一個(gè)是下一個(gè)facebook,下一個(gè)musk,根據(jù)統(tǒng)計(jì)10年能成就一個(gè)千億以上的公司,目前這個(gè)進(jìn)程正在縮短。
我就拿Linkedin作為例子,介紹高科技公司(FLG)是什么樣子。它是成立2003年的職業(yè)社交網(wǎng)站。在10年的發(fā)展中,也不是一下子爆發(fā)的,目前有3億的全球用戶(hù),雖然跟Facebook,Google 10億+用戶(hù)沒(méi)法比,但是它有很好的護(hù)城河,用戶(hù)定位高端精準(zhǔn),單位價(jià)值高。這張照片中左邊這位是創(chuàng)始人Reid Hoffman,是Paypal黑幫成員,在硅谷也是呼風(fēng)喚雨的大佬,目前是董事和投資人。中間這位是CEO Jeff,2013年被Glassdoor評(píng)為最佳CEO,作為職業(yè)經(jīng)理人,成功幫助linkedin高速成長(zhǎng),他最喜歡提到transformation,希望我們每個(gè)員工能挑戰(zhàn)自我,在各自崗位上進(jìn)化。Linkedin提供了員工很好的福利,有號(hào)稱(chēng)灣區(qū)最佳的免費(fèi)食堂,每個(gè)月一次的in day,hack day, 幫助員工內(nèi)部創(chuàng)業(yè)的incumbator計(jì)劃。它特點(diǎn)是數(shù)據(jù)驅(qū)動(dòng)的開(kāi)發(fā)產(chǎn)品,比如 People you may know, Job you may be interested, 我做過(guò)Sponroed Ads 都是需要很強(qiáng)數(shù)據(jù)背景和data scientist的支持。它的Biz model也很獨(dú)特,有3個(gè)line,面向公司的招聘服務(wù),面向廣告商的市場(chǎng)服務(wù),面向個(gè)人的訂閱服務(wù),還有最新Sales Solution,因?yàn)檫@么多可能性,成為華爾街的寵兒。
說(shuō)硅谷,除了那些已經(jīng)成功的大公司,不得不說(shuō)現(xiàn)在最新的創(chuàng)業(yè)動(dòng)向,這些代表了未來(lái)下一個(gè)FLG。我總結(jié)了一些領(lǐng)域和代表公司:云計(jì)算(box, dropbox),大數(shù)據(jù)(cloudera),消費(fèi)互聯(lián)網(wǎng)(pinterest),健康(fitbit),通訊(snapchat),支付(square),生活(uber)。 這里是華爾街網(wǎng)站更新的最新融資規(guī)模,比如Uber就達(dá)到18Billion的估值,我當(dāng)時(shí)拿到offer沒(méi)去,還是覺(jué)得很瘋狂,如果細(xì)看這張表,大家可以看到硅谷(藍(lán)色)尤其是舊金山它們的融資規(guī)模遠(yuǎn)遠(yuǎn)大于其他地區(qū),還是地理決定論。而在國(guó)內(nèi)的兩家xiaomi,jingdong都是在北京,而最近大家看到一些泡沫論,說(shuō)什么阿里巴巴上市是否美股到頂,經(jīng)緯VC創(chuàng)始人也提醒我們泡沫的風(fēng)險(xiǎn),我無(wú)法判斷。如果能參與到下一波浪潮里面去是很過(guò)癮的。我推薦大家去看看 浪潮之巔,奇點(diǎn)臨近,我還是很期待未來(lái)20年的技術(shù)革命。
我個(gè)人熱愛(ài)大數(shù)據(jù),在硅谷這也是大家津津樂(lè)道的,有個(gè)笑話(huà),big data is like teenage talking about sex, nobody know how to do it. 其實(shí)大家還是興趣驅(qū)動(dòng)就好,不要那么功利,大數(shù)據(jù)技術(shù)涉及太多,平常工作中也是慢慢積累,有無(wú)數(shù)的坑和技術(shù)細(xì)節(jié)需要克服。并不是說(shuō)那個(gè)技術(shù)最熱就要用哪個(gè),如果你用不好,你的壓力很大的,舉個(gè)例子,你用某個(gè)開(kāi)源數(shù)據(jù)庫(kù),發(fā)現(xiàn)它偶爾有數(shù)據(jù)丟失怎么辦,如果這是線(xiàn)上服務(wù),你不斷收到報(bào)警,這時(shí)候你當(dāng)時(shí)選用它的優(yōu)點(diǎn) scalable,容錯(cuò)性都沒(méi)意義了。接著說(shuō)大數(shù)據(jù),這里面Hadoop作為行業(yè)標(biāo)準(zhǔn),我面過(guò)的除了Google,微軟不用,幾乎所有的公司都在用,建議大家利用這個(gè)機(jī)會(huì)。這里面有三巨頭,cloudera是老牌Hadoop咨詢(xún)公司,Hadoop的創(chuàng)始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 編碼方式高效而著名,它們都是融了巨資,模式也很像,先推出社區(qū)免費(fèi)版,但有個(gè)商業(yè)版提供更好的管理。 而今年出現(xiàn)一匹黑馬,Spark,簡(jiǎn)單說(shuō)就是內(nèi)存級(jí)別的計(jì)算,比Hadoop框架里能節(jié)約IO,利用緩存,能適應(yīng)批處理,迭代,流式計(jì)算。
這里看一下它的生態(tài)系統(tǒng),如何學(xué)Hadoop是個(gè)循序漸進(jìn)過(guò)程,先要理解學(xué)習(xí)它的core系統(tǒng),HDFS, MapReduce, Common,在外圍有無(wú)數(shù)的系統(tǒng)工具方便開(kāi)發(fā),我個(gè)人用過(guò)的是 Avro作為數(shù)據(jù)格式,Zookeeper作為選主的高可靠性的組件,Solr作為搜索接口,Pig搭建工作流,Hive 數(shù)據(jù)倉(cāng)庫(kù)查詢(xún),Oozie管理工作流,HBase 作為KV 分布式存儲(chǔ),mahout數(shù)據(jù)挖掘的庫(kù),Cassandra nosql 數(shù)據(jù)庫(kù)。我建議初學(xué)的考慮Chinahadoop的課程。
而Hadoop本身也是個(gè)進(jìn)化過(guò)程,幾年前0.19版本,到0.20, 0.23分流成Yarn架構(gòu)最后進(jìn)化成Hadoop2.0, Hadoop1.0 和 2.0 它們的接口和組件是完全不同的,但總體上Hadoop 2.0 是趨勢(shì),因?yàn)樗衁arn這樣分離的資源管理平臺(tái),可以以插件的方式開(kāi)發(fā)上面的Application,解放了生產(chǎn)力,而像Spark,Storm這些新型處理器也是支持Hadoop 2.0的。這里是Hortonworks它們提出來(lái)的社區(qū)版本架構(gòu),可以說(shuō)標(biāo)準(zhǔn)的制定者,一流的公司制定標(biāo)準(zhǔn),其他的公司一般用只能用它們提供的穩(wěn)定版,沒(méi)有多少話(huà)語(yǔ)權(quán)。但從事大數(shù)據(jù),并不見(jiàn)得是要去這些制定標(biāo)準(zhǔn)的公司,大量的應(yīng)用也是非常考驗(yàn)架構(gòu)的靈活性。并且能看到實(shí)際的產(chǎn)品,很有成就感。
說(shuō)到今年火的,還是要看Spark。從去年至今,已經(jīng)開(kāi)了2屆Spark大會(huì),上千人的規(guī)模,無(wú)數(shù)人對(duì)比Hadoop 100倍的性能提升而興奮。這里說(shuō)它的背景是誕生于Berkeley的Amplab,它們有個(gè)很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已經(jīng)成為Apache的頂級(jí)項(xiàng)目。去年這個(gè)實(shí)驗(yàn)室的教授跟學(xué)生出去成立Databricks公司,拉到兩輪上千萬(wàn)的風(fēng)投,有人成Spark是Hadoop的終結(jié)者嗎?我看今年Spark大會(huì)上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放棄impala的一線(xiàn)支持而轉(zhuǎn)變成Spark。如果這么發(fā)展下去,星星之火可以燎原啊。它里面用到Scala是一種函數(shù)式語(yǔ)言。里面的組件也很多,有Shark支持SQL類(lèi)似Hive,有Spark Streaming,MLlib,Graphx,SparkR,BlinkDB。它的核心數(shù)據(jù)結(jié)構(gòu)是RDD,可以跑在各種分布式系統(tǒng)上??傮w上是個(gè)包容性+侵略性的系統(tǒng)。我個(gè)人也很看好它們的發(fā)展。
在應(yīng)用交付產(chǎn)品出現(xiàn)之前,用戶(hù)內(nèi)部通常是網(wǎng)絡(luò)管理員和應(yīng)用維護(hù)人員的對(duì)立,例如:當(dāng)一個(gè)應(yīng)用訪(fǎng)問(wèn)出現(xiàn)問(wèn)題的時(shí)候,網(wǎng)絡(luò)管理員會(huì)說(shuō),服務(wù)器IP能連通,所以不關(guān)我們的事;應(yīng)用維護(hù)人員會(huì)說(shuō),通過(guò)127.0.0.1能正常訪(fǎng)問(wèn)應(yīng)用,所以也不關(guān)我們的事。
那如何連接網(wǎng)絡(luò)和應(yīng)用?這就是交付工程師的由來(lái)。應(yīng)用交付的意義在于架設(shè)網(wǎng)絡(luò)與應(yīng)用之間的橋梁,并提升應(yīng)用的冗余性,穩(wěn)定性,提高用戶(hù)訪(fǎng)問(wèn)的體驗(yàn)。對(duì)于應(yīng)用交付工程師,經(jīng)常遇到的事,莫過(guò)于用戶(hù)打電話(huà)來(lái)說(shuō),在你們?cè)O(shè)備上做好配置,但是應(yīng)用訪(fǎng)問(wèn)有問(wèn)題;或者在你們?cè)O(shè)備上線(xiàn)之前應(yīng)用訪(fǎng)問(wèn)正常,而設(shè)備上線(xiàn)之后訪(fǎng)問(wèn)出現(xiàn)問(wèn)題等等。這個(gè)時(shí)候,和傳統(tǒng)網(wǎng)絡(luò)工程師和應(yīng)用維護(hù)工程師不同的是,交付工程師必須找到應(yīng)用出現(xiàn)問(wèn)題的具體原因,解決問(wèn)題,或者至少證明與自身設(shè)備無(wú)關(guān)。
交付工程師職位的要求如下:
1、作為項(xiàng)目工程的交付實(shí)施者,負(fù)責(zé)完成客戶(hù)網(wǎng)絡(luò)設(shè)備及環(huán)境的搭建、客戶(hù)個(gè)性化應(yīng)用業(yè)務(wù)軟件需求的代碼實(shí)現(xiàn)、系統(tǒng)上線(xiàn)運(yùn)行和使用培訓(xùn)全交付過(guò)程工作的開(kāi)展,確保項(xiàng)目高質(zhì)高效成功交付。
2、做為交付服務(wù)領(lǐng)域的技術(shù)專(zhuān)家,負(fù)責(zé)為客戶(hù)提供高級(jí)別網(wǎng)絡(luò)技術(shù)支持,保障客戶(hù)網(wǎng)絡(luò)穩(wěn)定運(yùn)行。
3、作為公司項(xiàng)目交付環(huán)節(jié)的主要執(zhí)行者,負(fù)責(zé)挖掘客戶(hù)服務(wù)需求,開(kāi)拓客戶(hù)服務(wù)機(jī)會(huì),為客戶(hù)提供整體服務(wù)解決方案,并通過(guò)客戶(hù)滿(mǎn)意度管理,提升服務(wù)質(zhì)量和品牌隨著電子產(chǎn)業(yè)的迅猛發(fā)展,Java技術(shù)也得到越來(lái)越廣泛的應(yīng)用,Java工程師隨之也成為受歡迎的IT崗位。由于廣泛的市場(chǎng)前景,較高的薪資待遇,讓Java工程師成為非常有前途的職位,那么Java工程師主要是做什么的呢?下面一同來(lái)看看吧。
Jaa交互工程師,直白點(diǎn)來(lái)說(shuō),就好比你在做家具時(shí),需要在模板上弄些花紋,但是需要一個(gè)工具來(lái)做花紋,Java也是一樣,它只是一個(gè)工具。Java應(yīng)用可以說(shuō)是無(wú)處不在,它的用途就是完成軟件的設(shè)計(jì),開(kāi)發(fā),測(cè)試,修改bug等工作,包括業(yè)務(wù)需求的溝通,功能模塊詳細(xì)設(shè)計(jì),業(yè)務(wù)功能實(shí)現(xiàn)與單元測(cè)試,系統(tǒng)維護(hù)等等。
Java交互工程師崗位職責(zé):
負(fù)責(zé)客戶(hù)端APP產(chǎn)品中服務(wù)器后端的工程設(shè)計(jì),架構(gòu)設(shè)計(jì)以及開(kāi)發(fā)工作
研究業(yè)界新技術(shù)及其應(yīng)用,解決創(chuàng)新研發(fā)過(guò)程中的關(guān)鍵問(wèn)題和技術(shù)難點(diǎn)
根據(jù)項(xiàng)目任務(wù)計(jì)劃按時(shí)完成軟件編碼和單元測(cè)試工作,按照開(kāi)發(fā)流程編寫(xiě)相應(yīng)模塊的設(shè)計(jì)文檔
與產(chǎn)品經(jīng)理、測(cè)試工程師、其他團(tuán)隊(duì)溝通合作,確保產(chǎn)品研發(fā)工作的質(zhì)量和進(jìn)度,協(xié)調(diào)或指導(dǎo)團(tuán)隊(duì)里其它開(kāi)發(fā)人員的工作。
熟悉設(shè)計(jì)模式,熟練掌握面向?qū)ο缶幊毯褪录?qū)動(dòng)編程風(fēng)格。
web前端開(kāi)發(fā)工程師簡(jiǎn)介
Web前端一直是占有重要的地位。尤其是近年來(lái)HTML5技術(shù)的突飛猛進(jìn),使Web前端技術(shù)有了更好的發(fā)展。Web前端開(kāi)發(fā)人員的薪資也是一路猛漲。下面我們一起了解一些web前端開(kāi)發(fā)工程師簡(jiǎn)介,歡迎大家參考!
Web前端和后端的差異
職能上的差異
首先,我們要分清Web designer(網(wǎng)頁(yè)設(shè)計(jì)師)和Web developer(網(wǎng)頁(yè)開(kāi)發(fā)者,也稱(chēng)程序員)的差異。兩者之間的差異主要表現(xiàn)在:一個(gè)是有關(guān)網(wǎng)站的視覺(jué)或美學(xué)方面,被稱(chēng)為“前端”;另一個(gè)則是看不見(jiàn)的編碼方面的設(shè)計(jì),被稱(chēng)為“后端”。簡(jiǎn)而言之,漂亮的網(wǎng)站界面都是出自網(wǎng)頁(yè)設(shè)計(jì)師之手,而牛逼強(qiáng)大的功能則是網(wǎng)頁(yè)開(kāi)發(fā)者的杰作。
除了職能上的差異之外,兩者還有其他許多差異。國(guó)外設(shè)計(jì)網(wǎng)站Downgraf特意制作了一張圖表來(lái)展示——網(wǎng)頁(yè)設(shè)計(jì)師和網(wǎng)頁(yè)開(kāi)發(fā)者(程序員)都留胡茬,一個(gè)沒(méi)錢(qián),一個(gè)沒(méi)時(shí)間;兩者都喜歡內(nèi)涵T恤,一個(gè)走字體設(shè)計(jì)路線(xiàn),一個(gè)走代碼風(fēng);兩者都配自家設(shè)備,一個(gè)必帶MacBook Pro,一個(gè)只挑小鍵盤(pán)??除了以上種種差異,他們還有一個(gè)共同點(diǎn):害怕MM,看來(lái)都是“宅”惹的禍。
技術(shù)上的差異
我們?cè)購(gòu)募夹g(shù)的方面,瞧瞧在實(shí)際的招聘中,各大企業(yè)要求前端人員與后端人員分別具備怎樣的能力。
Web前端:
1. 精通HTML,能夠書(shū)寫(xiě)語(yǔ)義合理,結(jié)構(gòu)清晰,易維護(hù)的HTML結(jié)構(gòu)。
2. 精通CSS,能夠還原視覺(jué)設(shè)計(jì),并兼容業(yè)界承認(rèn)的主流瀏覽器。
3. 熟悉JavaScript,了解ECMAScript基礎(chǔ)內(nèi)容,掌握1~2種js框架,如JQuery。
4. 對(duì)常見(jiàn)的瀏覽器兼容問(wèn)題有清晰的理解,并有可靠的解決方案。
5. 對(duì)性能有一定的要求,了解yahoo的性能優(yōu)化建議,并可以在項(xiàng)目中有效實(shí)施。
Web后端:
1. 精通jsp,servlet,java bean,JMS,EJB,Jdbc,F(xiàn)lex開(kāi)發(fā),或者對(duì)相關(guān)的工具、類(lèi)庫(kù)以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對(duì)Web開(kāi)發(fā)的模式有較深的理解。
2. 熟練使用oracle、sqlserver、mysql等常用的數(shù)據(jù)庫(kù)系統(tǒng),對(duì)數(shù)據(jù)庫(kù)有較強(qiáng)的設(shè)計(jì)能力。
3. 熟悉maven項(xiàng)目配置管理工具,熟悉tomcat、jboss等應(yīng)用服務(wù)器,同時(shí)對(duì)在高并發(fā)處理情況下的負(fù)載調(diào)優(yōu)有相關(guān)經(jīng)驗(yàn)者優(yōu)先考慮。
4. 精通面向?qū)ο蠓治龊驮O(shè)計(jì)技術(shù),包括設(shè)計(jì)模式、UML建模等。
5. 熟悉網(wǎng)絡(luò)編程,具有設(shè)計(jì)和開(kāi)發(fā)對(duì)外API接口經(jīng)驗(yàn)和能力,同時(shí)具備跨平臺(tái)的API規(guī)范設(shè)計(jì)以及API高效調(diào)用設(shè)計(jì)能力。
總而言之,兩者的差異在于
職能上,前端主要負(fù)責(zé)界面的設(shè)計(jì);后端主要是制作界面后的功能。
形象上,前端注重形式、美觀;后端注重功能、實(shí)用性(為此,我還特地去了喬布堂的研發(fā)部做了實(shí)地考察,發(fā)現(xiàn)我們的前端工程師買(mǎi)了2臺(tái)Macbook,而后端工程師買(mǎi)了2個(gè)鍵盤(pán)。驚人的符合!)
企業(yè)招聘中,前端工程師需要精通JS,能熟練應(yīng)用JQuery,懂CSS,能熟練運(yùn)用這些知識(shí),進(jìn)行交互效果的開(kāi)發(fā);后端開(kāi)發(fā)人員需要會(huì)寫(xiě)Java代碼,會(huì)寫(xiě)SQL語(yǔ)句,能做簡(jiǎn)單的數(shù)據(jù)庫(kù)設(shè)計(jì),會(huì)Spring和iBatis,懂一些設(shè)計(jì)模式等。
不論是前端還是后端,都屬于軟件開(kāi)發(fā)的范疇。因此在寫(xiě)簡(jiǎn)歷時(shí)可以參考 《軟件開(kāi)發(fā)工程師》 ,對(duì)童鞋們可是很有幫助的喲!
要成為一名高效的Web開(kāi)發(fā)者,需要做很多工作,來(lái)提高工作方式并改善勞動(dòng)成果。而在開(kāi)發(fā)中難免會(huì)遇到一些困難。那么,前端與后端分別面臨的挑戰(zhàn)主要有哪些呢?來(lái)和我一起看一看吧!
Web前端開(kāi)發(fā)面臨的挑戰(zhàn)
前端開(kāi)發(fā)的五大挑戰(zhàn)
第一大挑戰(zhàn):兼容性
瀏覽器種類(lèi)非常多,IE、Firefox、Chrome、Opera、還有眾多的IE加殼瀏覽器,類(lèi)似搜狗、傲游、360,再加上這些瀏覽器的移動(dòng)終端版本。需要有Web標(biāo)準(zhǔn),前端的知識(shí)大部分通用于各個(gè)瀏覽器,但還是會(huì)有歷史遺留問(wèn)題,不同版本的瀏覽器有不同的問(wèn)題。特別是市場(chǎng)占有率最高的IE系,雖然IE 9/10看起來(lái)相當(dāng)標(biāo)準(zhǔn),但向之前版本間各有各的問(wèn)題,向前兼容非常頭疼。如果不積累點(diǎn)經(jīng)驗(yàn),面對(duì)疑難雜癥那是一頭霧水。
第二大挑戰(zhàn):交互的復(fù)雜度
CSS和DOM提供的接口水平過(guò)低,而B(niǎo)OM提供的控件只有input、select、textarea這幾種最基本的,稍復(fù)雜一點(diǎn)的UI效果,都要前端自己利用CSS和DOM去組合創(chuàng)造。看到一個(gè)需求,腦子里第一步要想如何利用CSS、DOM這些基本的零件組合成最終的效果,實(shí)現(xiàn)最終效果其實(shí)是一個(gè)“創(chuàng)造”的過(guò)程,比如說(shuō)tabView,treeView,richEditor,colorPicker這種看起來(lái)常見(jiàn)的組件,其實(shí)在前端里都是沒(méi)有現(xiàn)成可用的,需要自己去實(shí)現(xiàn)。
前端語(yǔ)言的 膠水性需求 太強(qiáng)。CSS、DOM、JS是三種不同的技術(shù),這也是前端知識(shí)系統(tǒng)中要掌握的最重要的三個(gè)基本功。前端的效果是通過(guò)CSS、DOM、JS三者配合起來(lái)最終呈現(xiàn)出來(lái)的,脫了任何一個(gè)技術(shù)都寸步難行,時(shí)刻要同時(shí)考慮多個(gè)方向的知識(shí)點(diǎn)。前端編程像是開(kāi)了三個(gè)線(xiàn)程同時(shí)在跑,復(fù)雜度成倍增長(zhǎng)。
第三大挑戰(zhàn):代碼可維護(hù)性
復(fù)雜度的提升直接影響代碼的維護(hù)性。CSS+DOM+JS的組合實(shí)在太強(qiáng)大了,同一個(gè)效果可以有多種完全不同的實(shí)現(xiàn)方式,每一種實(shí)現(xiàn)方式都會(huì)有不同的開(kāi)發(fā)難度、擴(kuò)展性、可維護(hù)性。解決方案太多,看到一個(gè)效果首先會(huì)先想到如何用CSS和DOM里那些low level的接口實(shí)現(xiàn),這是一個(gè)“創(chuàng)造”的過(guò)程,這時(shí)腦子里可能冒出好多種不同的實(shí)現(xiàn)方法,“創(chuàng)造”完了之后還要“比較”,權(quán)衡各種解決方案的優(yōu)劣,糾結(jié)一陣之后,才能選出最適合的方案。當(dāng)然,并非前端都是完美主義,一定要選一個(gè)最好的方式出來(lái),而是因?yàn)榍岸耸荊UI編程,直接面向用戶(hù),是最直接的產(chǎn)品呈現(xiàn)的'部分,是門(mén)面。正因?yàn)槿绱耍岸艘彩亲钊菀妆环磸?fù)修改的部分。反復(fù)“修改”有多可怕,是個(gè)程序員都懂的,如果可維護(hù)性不好,那簡(jiǎn)直是惡夢(mèng)。所以前端不得不重視可維護(hù)性,不重視可維護(hù)性直接等于自虐。
第四大挑戰(zhàn):性能
第五大挑戰(zhàn):個(gè)人成長(zhǎng)
開(kāi)發(fā)者的思路很重要
前端的開(kāi)發(fā),如果沒(méi)有總體的設(shè)計(jì)思路,會(huì)成為一種碎片似地程序,一個(gè)效果一堆代碼,一個(gè)功能一灘腳本,一個(gè)需求片邏輯。曾經(jīng)遇到過(guò),因?yàn)閡e調(diào)整,把整個(gè)前端的代碼除了核心數(shù)據(jù)處理函數(shù)保留,其余的全部修改的情況?;旧锨岸说拈_(kāi)發(fā),處于DOM操作,數(shù)據(jù)處理,數(shù)據(jù)交互三部分,如果合理的分配這三部分的功能,那么前端的代碼就很容易擴(kuò)展和調(diào)整。
真正的前端開(kāi)發(fā)挑戰(zhàn),還在于開(kāi)發(fā)者的思路。兼容性,布局,CSS和JS都不是問(wèn)題,問(wèn)題在于如何合理地組織語(yǔ)言邏輯;如何正確抽象出需求中的模塊;如何用代碼處理,清楚地用代碼表達(dá)出思路、寫(xiě)好注釋?zhuān)o后續(xù)維護(hù)者一個(gè)可閱讀的思路。前端的改動(dòng)量,是后端的數(shù)倍,前端沒(méi)有絕對(duì),只有跟隨需求不停的修改。
Web后端開(kāi)發(fā)面臨的挑戰(zhàn)
后端開(kāi)發(fā)的五大挑戰(zhàn)
第一大挑戰(zhàn),后端開(kāi)發(fā)最重要的挑戰(zhàn),來(lái)自于規(guī)模
規(guī)模的擴(kuò)大,比如訪(fǎng)問(wèn)量擴(kuò)大,文件存儲(chǔ)量擴(kuò)大,數(shù)據(jù)量擴(kuò)大,服務(wù)器數(shù)量擴(kuò)大等。一個(gè)前端看起來(lái)一模一樣的網(wǎng)站,某一種指標(biāo)如果擴(kuò)大十倍,幾乎都會(huì)面臨一大堆的問(wèn)題和挑戰(zhàn)。另一方面,在規(guī)模擴(kuò)大以后,后端系統(tǒng)架構(gòu),一定會(huì)復(fù)雜化。原來(lái)只有一臺(tái)Server,LAMP都裝在一起。然后數(shù)據(jù)庫(kù)分出來(lái),反向代理,負(fù)載均衡,分庫(kù)分表,Memcache,Message Queue,事務(wù)處理,CDN,NOSQL,種種架構(gòu),Server,就逐漸的演化出來(lái)了。架構(gòu)的復(fù)雜化,自然會(huì)帶來(lái)更多的問(wèn)題和更多的挑戰(zhàn)。
第二大挑戰(zhàn),來(lái)自于安全
安全問(wèn)題層出不窮,防不勝防。需要技術(shù)手段,也需要管理制度。
第三大挑戰(zhàn),來(lái)自于效率
能否提供足夠的處理速度,能否提供足夠的帶寬,能否保證響應(yīng)能力,這些是對(duì)外的效率。能否使用更少的服務(wù)器,能否使用更加便宜的服務(wù)器,能否使用更加節(jié)省能源的服務(wù)器,這些是對(duì)內(nèi)的效率。
第四大挑戰(zhàn),來(lái)自于需求變更
無(wú)論前端后端,都會(huì)面臨需求變更,只要是軟件開(kāi)發(fā),這都是大挑戰(zhàn)。但是當(dāng)一個(gè)系統(tǒng)已經(jīng)穩(wěn)定的,高效的運(yùn)行時(shí),需求變更來(lái)了,在滿(mǎn)足需求之后,原本來(lái)沒(méi)有問(wèn)題的部分,會(huì)不會(huì)突然崩潰,一旦崩潰,就是后端工程師的噩夢(mèng)。
第五大挑戰(zhàn),來(lái)自于教條
這個(gè)世界上有無(wú)數(shù)IT大公司,他們都很開(kāi)放,都愿意分享自己的架構(gòu)與技術(shù)。于是,對(duì)于“眼界開(kāi)闊”的后端工程師而言,困難不在于如何解決,而在于如何從眾多的解決方案中做出挑選。框架、實(shí)踐不斷涌現(xiàn),成功案例也不斷涌現(xiàn)。人家都用得好好的,你敢用嗎?到底是勇于嘗鮮,還是保守要緊呢?這個(gè)很難。
后端開(kāi)發(fā)的三大法則
Design for failure
后端相當(dāng)比例的代碼不是為了一般情況下正確而存在,而是為了保證特殊或者極端情況下系統(tǒng)可接受的響應(yīng)而存在的。這里有非常多的折衷要做:漸進(jìn)改進(jìn)還是超前設(shè)計(jì)?水平擴(kuò)展、業(yè)務(wù)優(yōu)化、前臺(tái)還是后臺(tái)處理?大量的折衷都是要根據(jù)不斷變化的環(huán)境和需求去權(quán)衡的,所以很容易犯錯(cuò)。
Architecture is about abstract
為什么要抽象?因?yàn)槌橄蟮母拍钣懈玫倪m應(yīng)性,更易于復(fù)用,更能靈活適應(yīng)變化。但是抽象是很難的,不恰當(dāng)?shù)某橄蟾琴O害無(wú)窮,要命的是,這些并沒(méi)有很好的方法論,多數(shù)是依靠一組基本的原理,憑經(jīng)驗(yàn)作出的。而Web后端開(kāi)發(fā)在很長(zhǎng)時(shí)間里并沒(méi)有很重視這些,很多網(wǎng)站都是粗放型設(shè)計(jì)和開(kāi)發(fā)出來(lái)的,所以補(bǔ)丁疊補(bǔ)丁的結(jié)構(gòu)就順理成章的成為了主流。
Architecture is product
為架構(gòu)本身即產(chǎn)品,一個(gè)軟件產(chǎn)品包含了不同的視角,其中最重要的包括用戶(hù)看到的視角、以及軟件骨架即架構(gòu)的視角。但產(chǎn)品就是產(chǎn)品,所有這些視角都是必須統(tǒng)一和一致的,這就要求架構(gòu)必須理解產(chǎn)品的靈魂,而產(chǎn)品要理解架構(gòu)的困難所在,否則很容易出現(xiàn)想做的事情做不到或者以巨大的架構(gòu)代價(jià)實(shí)現(xiàn)一個(gè)邊角功能這類(lèi)悲劇。
;
一.語(yǔ)言
1.推薦一本看過(guò)最好的python書(shū)籍? 拉開(kāi)話(huà)題好扯淡
2.談?wù)刾ython的裝飾器,迭代器,yield?
3.標(biāo)準(zhǔn)庫(kù)線(xiàn)程安全的隊(duì)列是哪一個(gè)?不安全的是哪一個(gè)?logging是線(xiàn)程安全的嗎?
4.python適合的場(chǎng)景有哪些?當(dāng)遇到計(jì)算密集型任務(wù)怎么辦?
5.python高并發(fā)解決方案?我希望聽(tīng)到twisted-tornado-gevent,能扯到golang,erlang更好
二.操作系統(tǒng)
可以直接認(rèn)為是linux,畢竟搞后端的多數(shù)是和linux打交道。
1.tcp/udp的區(qū)別?tcp粘包是怎么回事,如何處理?udp有粘包嗎?
2.time_wait是什么情況?出現(xiàn)過(guò)多的close_wait可能是什么原因?
3.epoll,select的區(qū)別?邊緣觸發(fā),水平觸發(fā)區(qū)別?
三.存儲(chǔ)
存儲(chǔ)可能包含rdbms,nosql以及緩存等,我以MySQL,Redis舉例
mysql相關(guān)
1.談?wù)刴ysql字符集和排序規(guī)則?
2.varchar與char的區(qū)別是什么?大小限制?utf8字符集下varchar最多能存多少個(gè)字符
3.primary key和unique的區(qū)別?
4.外鍵有什么用,是否該用外鍵?外鍵一定需要索引嗎?
5.myisam與innodb的區(qū)別?innodb的兩階段鎖定協(xié)議是什么情況?
6.索引有什么用,大致原理是什么?設(shè)計(jì)索引有什么注意點(diǎn)?
redis相關(guān)
1.什么場(chǎng)景用redis,為什么mysql不適合?
2.談?wù)剅edis的事務(wù)?用事務(wù)模擬原子+1操作?原子操作還有其它解決方案嗎?
3.redis內(nèi)存滿(mǎn)了會(huì)怎么樣?
四.安全
web安全相關(guān)
1.sql注入是怎么產(chǎn)生的,如何防止?
2.xss如何預(yù)防?htmlescape后能否避免xss?
3.csrf是什么?django是如何防范的?
密碼技術(shù)
1.什么是分組加密?加密模式有哪些?ecb和cbc模式有什么區(qū)別?為什么需要iv向量?
2.簡(jiǎn)單說(shuō)說(shuō)https的過(guò)程?
3.對(duì)稱(chēng)加密與非對(duì)稱(chēng)加密區(qū)別?
3.如何生成共享秘鑰? 如何防范中間人攻擊?
五.雜
是否關(guān)注新技術(shù)啊?golang,Rust是否了解?numpy,pandas是啥鳥(niǎo)?
是否緊跟時(shí)代潮流?逛不逛微博,刷不刷知乎?
可能你覺(jué)得我問(wèn)的好細(xì),但這好多都是平常經(jīng)常遇到,并需要解決的,細(xì)節(jié)更能體現(xiàn)一個(gè)人。
如果你覺(jué)得小kiss,歡迎投簡(jiǎn)歷給我yihaibo@longtugame.com,龍圖游戲運(yùn)營(yíng)支持中心數(shù)據(jù)分析部招人;覺(jué)得有點(diǎn)問(wèn)題,那還等什么,趕快來(lái)和我交流交流。
更新:討論區(qū)挺熱鬧,有人說(shuō)好簡(jiǎn)單,有人說(shuō)好難,其實(shí)我覺(jué)得這只適合面試2~3年工作經(jīng)驗(yàn)的后端工程師。真的沒(méi)有問(wèn)
很難的題目,只是可能你平時(shí)沒(méi)有注意。
在這里我推薦幾本書(shū)吧
python參考手冊(cè),絕對(duì)讓你更上一層樓
圖解密碼技術(shù),密碼入門(mén)不二之選
mysql技術(shù)內(nèi)幕第五版,有點(diǎn)厚當(dāng)手冊(cè)讀讀,要有耐心,高性能mysql也強(qiáng)烈建議讀讀
effective tcp/ip programming
為什么評(píng)論區(qū)有這么大差異?我想是個(gè)人經(jīng)歷不一樣吧,如果是搞web的對(duì)操作系統(tǒng)這塊和密碼技術(shù)會(huì)偏弱,但如果是系統(tǒng)工程師或是游戲服務(wù)端這塊會(huì)明顯偏強(qiáng)。
六.后記
最近我也面試了不少童鞋,我發(fā)現(xiàn)能達(dá)到要求的真的少之又少,很多hr都說(shuō)Python是最難招聘的崗位,我想是有道理的,這真的很值得我們?nèi)ド钏迹?/p>
我想有一部分原因是Python這門(mén)語(yǔ)言造成的,會(huì)寫(xiě)Python的人很多,但寫(xiě)的好的人很少,大部分都把Python當(dāng)做腳本來(lái)寫(xiě),缺乏面向?qū)ο?,模式的思想。想想Java,大家都習(xí)慣了接口,實(shí)現(xiàn)分離,設(shè)計(jì)模式在Java中也喊了很多年,尤其是ssh三大框架一出,用著用著就理所當(dāng)然的認(rèn)為就該這么做,雖然也有點(diǎn)壞處,但對(duì)企業(yè)級(jí)Java開(kāi)發(fā)無(wú)疑是一大進(jìn)步。
反觀Python,尤其是生成器,協(xié)程,元類(lèi)給Python注入了很大的靈活性,想寫(xiě)的Pythonic有不小難度,但其實(shí)Python高級(jí)特性就那么幾個(gè),干掉了也就沒(méi)有了。
當(dāng)你覺(jué)得Python遇到了瓶頸,不妨停下來(lái)好好想想。研究研究設(shè)計(jì)模式,想想重構(gòu),了解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),敏捷開(kāi)發(fā),再回來(lái)讀讀以前寫(xiě)的代碼,當(dāng)眼界變高了,代碼也就美了。
當(dāng)然思想的提高不是一朝一夕,模式,原則會(huì)經(jīng)常讓你糾結(jié),糾結(jié)就會(huì)思索,思考就走出了自己的路,當(dāng)然條條大路通羅馬。
數(shù)據(jù)庫(kù)等存儲(chǔ)技術(shù)是研發(fā)工程師邁不過(guò)的坎,對(duì)關(guān)系數(shù)據(jù)庫(kù)以mysql舉例來(lái)說(shuō),你必須清楚的知道什么字段選擇什么類(lèi)型,類(lèi)型字節(jié)大小,限制條件,這東西也很容易理解,多想想即可,比如set類(lèi)型,要支持交并等操作,1個(gè)字節(jié)只能存8個(gè)類(lèi)別。數(shù)據(jù)類(lèi)型搞定了,下面就是索引了,mysql索引種類(lèi)?主鍵,唯一索引,普通索引。索引類(lèi)別,BTree索引,hash索引。索引的優(yōu)缺點(diǎn),mysql的索引查找原理,join原理(大部分都是nested loop),以及一些特殊的情況,比如mysql子查詢(xún)慢等。其實(shí)到這里研發(fā)工程師就差不多,當(dāng)然你可以繼續(xù)深入下去,比如讀寫(xiě)分離,集群管理,甚至一些參數(shù)調(diào)優(yōu)。
前端開(kāi)發(fā)可以自學(xué),也可以選擇口碑好、信譽(yù)佳的機(jī)構(gòu)學(xué)。
互聯(lián)網(wǎng)的發(fā)展帶動(dòng)了多種行業(yè)的發(fā)展,Web前端在互聯(lián)網(wǎng)行業(yè)也發(fā)揮著越來(lái)越重要的作用。Web前端開(kāi)發(fā)不僅在形式、內(nèi)容和功能上也有了極大的豐富,而且對(duì)前端開(kāi)發(fā)人員的要求越來(lái)越高。
web全棧工程師5.0課程學(xué)習(xí)內(nèi)容包括:
①計(jì)算機(jī)基礎(chǔ)以及PS基礎(chǔ)
②前端開(kāi)發(fā)基礎(chǔ)(HTML5開(kāi)發(fā)、JavaScript基礎(chǔ)到高級(jí)、jQuery網(wǎng)頁(yè)特效、Bootstrap框架)
③移動(dòng)開(kāi)發(fā)
④前端高級(jí)開(kāi)發(fā)(ECMAScript6、Veu.js框架開(kāi)發(fā)、webpack、前端頁(yè)面優(yōu)化、React框架開(kāi)發(fā)、AngularJS 2.0框架開(kāi)發(fā)等)
⑤小程序開(kāi)發(fā)
⑥全棧開(kāi)發(fā)(MySQL數(shù)據(jù)庫(kù)、Python編程語(yǔ)言、Django框架等)
⑦就業(yè)拓展(網(wǎng)站SEO與前端安全技術(shù))
互聯(lián)網(wǎng)行業(yè)目前還是最熱門(mén)的行業(yè)之一,學(xué)習(xí)IT技能之后足夠優(yōu)秀是有機(jī)會(huì)進(jìn)入騰訊、阿里、網(wǎng)易等互聯(lián)網(wǎng)大廠(chǎng)高薪就業(yè)的,發(fā)展前景非常好,普通人也可以學(xué)習(xí)。
想要系統(tǒng)學(xué)習(xí),你可以考察對(duì)比一下開(kāi)設(shè)有相關(guān)專(zhuān)業(yè)的熱門(mén)學(xué)校,好的學(xué)校擁有根據(jù)當(dāng)下企業(yè)需求自主研發(fā)課程的能力,能夠在校期間取得大專(zhuān)或本科學(xué)歷,中博軟件學(xué)院、南京課工場(chǎng)、南京北大青鳥(niǎo)等開(kāi)設(shè)相關(guān)專(zhuān)業(yè)的學(xué)校都是不錯(cuò)的,建議實(shí)地考察對(duì)比一下。
祝你學(xué)有所成,望采納。