入行兩個(gè)月抖所,受到的委屈比過往二十多年總和還要多。HR批評(píng)她不專業(yè)痕囱,候選人責(zé)備她不用心田轧。
其實(shí)Lily并非不努力,情商和溝通能力也非常好鞍恢。就是學(xué)管理出身的她傻粘,實(shí)在弄不懂J2SE、MySql帮掉、Spring弦悉、Oracle……學(xué)計(jì)算機(jī)出身的資深獵頭Daniel見狀,好為人師的他決定為Lily講講基礎(chǔ)專業(yè)知識(shí)蟆炊,以Lily在做的Java職位為例稽莉。
Lily:一個(gè)Java工程師的基本技能是什么呀?
Daniel:程序工程師涩搓,一般分前端污秆、后端和移動(dòng)開發(fā),Java屬于后端昧甘。
一個(gè)入門的Java工程師的基本要求是對(duì)JDK API的了解和熟悉良拼。這涉及到JDK和API兩個(gè)經(jīng)常遇到的概念,值得我們花時(shí)間了解一下充边。
理解JDK庸推,必須從SDK開始講起。SDK是一套軟件開發(fā)工具包。它有什么用呢贬媒?舉個(gè)例子:買機(jī)票刮吧。一種辦法是打開購票網(wǎng)站->輸入起始地、目的地和時(shí)間->選航班->輸入姓名掖蛤、手機(jī)和身份證號(hào)->下單支付杀捻;第二個(gè)辦法:請(qǐng)個(gè)助理,告知時(shí)間地點(diǎn)蚓庭,讓助理去完成整個(gè)買票過程致讥。
這個(gè)助理,你可以理解成一個(gè)SDK器赞,她集成了很多技能,會(huì)買票/安排會(huì)議/整理文檔等港柜,變身成為你的“工具包”请契,很多你需要一步一步去完成的工作,可以把其中環(huán)節(jié)交由她去完成夏醉,簡化你的工作爽锥。不同的平臺(tái)提供不同的SDK,完成的任務(wù)也是不一樣的畔柔,而JDK就是針對(duì)Java的SDK啦氯夷。
Lily:JDK理解了,那API呢靶擦?
Daniel:SDK里面有很多API腮考,就像一個(gè)助理(SDK)擁有很多技能(API)。一個(gè)API可理解是一個(gè)小功能玄捕,買票是一個(gè)API踩蔚,安排會(huì)議也是一個(gè)API。在老板眼中枚粘,助理是一個(gè)有多項(xiàng)小功能的集合體馅闽;同理,在開發(fā)者眼中赌结,SDK就是由一個(gè)個(gè)API構(gòu)成的捞蛋。老板使用小技能的過程孝冒,就是開發(fā)者“調(diào)用API”的過程柬姚,幫助開發(fā)者就完成一些任務(wù),減少開發(fā)者的工作量庄涡。
Lily:那JKD和API的關(guān)系我就明白了量承,那JD里面經(jīng)常提到的“跨平臺(tái)”和“JVM”又是什么關(guān)系呢?
Daniel:跨平臺(tái)里面的“平臺(tái)”可以簡單理解成操作系統(tǒng),PC的主流操作系統(tǒng)是Window撕捍、MacOS和Linux拿穴。Linux在服務(wù)器(區(qū)別于我們常用的桌面電腦,服務(wù)器性能更高忧风,穩(wěn)定性更好)的應(yīng)用非常廣泛默色,不夸張的說,大部分的服務(wù)器都運(yùn)行著Linux狮腿⊥仍祝跨平臺(tái)是指一份代碼無需重寫就可以在多個(gè)平臺(tái)上工作,這是開發(fā)人員夢寐以求的缘厢。
Java可以跨平臺(tái)是因?yàn)閾碛蠮VM吃度,它是一個(gè)虛擬機(jī)。怎么理解呢贴硫?虛擬機(jī)可以想象成一臺(tái)翻譯機(jī)椿每,它把一份代碼都翻譯成各個(gè)平臺(tái)都能理解的語言,這樣就可以正常運(yùn)作了英遭。
Lily:理清楚這些基本概念后间护,看JD就沒有那么懵逼了。那一個(gè)Java工程師必備的技能有哪些挖诸?
Daniel:好問題兑牡,不過也是一個(gè)非常大的問題。Java的技能樹可以分為幾類:核心基礎(chǔ)税灌、框架均函、數(shù)據(jù)庫、緩存數(shù)據(jù)庫菱涤、應(yīng)用服務(wù)器和網(wǎng)絡(luò)協(xié)議苞也。
核心基礎(chǔ)主要就是對(duì)J2SE的熟悉和理解。你可以把J2SE理解成一個(gè)基礎(chǔ)平臺(tái)粘秆,開發(fā)者使用Java在上面搭建網(wǎng)站如迟,處理數(shù)據(jù)、搜尋信息……開發(fā)者要知道這個(gè)基礎(chǔ)平臺(tái)提供了什么攻走,可以做什么以及如何去做殷勘。
Lily:明白了。那什么叫框架昔搂?
Daniel:我打個(gè)比方玲销。做一份PPT的時(shí)候,你可以有兩種做法:1.從無到有全部自己做摘符;2.找個(gè)優(yōu)秀的模板贤斜,修改和添加完成策吠。
類似的,寫代碼實(shí)現(xiàn)功能時(shí)瘩绒,從0開始自己寫猴抹,或者找個(gè)“模板”,在上面改寫锁荔。這個(gè)“模板”就是我們所說的“框架”了蟀给。第一種辦法幾乎沒人用了,耗時(shí)長阳堕,效率低坤溃,質(zhì)量還不高。
Lily:明白了嘱丢。那Java常用的框架有什么呢薪介?
Daniel:SpringMVC、Spring越驻、MyBatis汁政、Hibernate、Netty缀旁、Mina记劈、Struts2……前三者非常流行,簡稱“SSM”并巍;Hibernate不夠靈活目木,但易于上手,常用于性能要求不高的業(yè)務(wù)懊渡;Netty和Mina是網(wǎng)絡(luò)通訊框架刽射,常用于開發(fā)高性能的網(wǎng)絡(luò)服務(wù)器和客戶端。
Lily:框架有概念了剃执,那數(shù)據(jù)庫又是什么呢誓禁?
Daniel:顧名思義,數(shù)據(jù)庫就是用來存儲(chǔ)數(shù)據(jù)的肾档。舉個(gè)例子摹恰,你想把全家人的生日都記錄下來,可以選擇放在txt文檔怒见,excel表格或者云筆記等俗慈。你可以把它們想象成不同的“數(shù)據(jù)庫”。當(dāng)然遣耍,十條八條的數(shù)據(jù)闺阱,存放和查找起來都比較方便;當(dāng)數(shù)據(jù)有百萬千萬條的時(shí)候配阵,如何恰當(dāng)存放馏颂、快速查找,選擇不同的數(shù)據(jù)庫就各有利弊了棋傍。
Lily:那市面上常用的數(shù)據(jù)庫有什么呢救拉?
Daniel:哈哈,問到關(guān)鍵點(diǎn)了瘫拣。有Oracle亿絮、MySQL、SQL Server麸拄、DB2等派昧。Oracle常用于銀行這種不差錢的大機(jī)構(gòu),付費(fèi)使用拢切;MySQL免費(fèi)且開源蒂萎,在互聯(lián)網(wǎng)公司擁有大量擁躉;SQL Server是微軟家產(chǎn)品淮椰,如果服務(wù)器是Windows五慈,選用這個(gè)數(shù)據(jù)庫無疑更恰當(dāng)。
Lily:那緩存數(shù)據(jù)庫又是鬼主穗?
Daniel:剛才我們的數(shù)據(jù)庫都是針對(duì)數(shù)據(jù)存放在硬盤上的而言的泻拦。但我們知道,計(jì)算機(jī)里面還有個(gè)內(nèi)存忽媒,速度可比硬盤快多了争拐,成本也要高很多,所以容量比硬盤小晦雨。
一句話總結(jié):緩存數(shù)據(jù)庫就是內(nèi)存上的數(shù)據(jù)庫架曹,區(qū)別于之前硬盤上的數(shù)據(jù)庫。緩存數(shù)據(jù)庫用Redis闹瞧、Memcached和 MongoDB居多音瓷,它們都屬于NoSQL數(shù)據(jù)庫,區(qū)別于Oracle和MySQL這種關(guān)系型數(shù)據(jù)庫(用SQL語言查詢)夹抗。
Lily:這樣解釋就清晰多了绳慎。繼續(xù)解釋“應(yīng)用服務(wù)器”吧,網(wǎng)上說的那些都看不明白漠烧。
Daniel:比如我打開一個(gè)電商App杏愤,輸入“Java進(jìn)階”,返回圖書列表已脓,這中間就是應(yīng)用服務(wù)器完成指令接收珊楼、查詢數(shù)據(jù)庫、返回搜索結(jié)果等一系列業(yè)務(wù)邏輯的過程度液。常見的有Tomcat厕宗、Jetty画舌、Jboss、Weblogic已慢、Glassfish曲聂、Websphere 和Oracle9i/AS等。
Lily:因?yàn)楹蠖诵枰颓岸藚f(xié)作佑惠,所以也需要了解HTTP等網(wǎng)絡(luò)協(xié)議朋腋,是這樣意思嗎?
Daniel:對(duì)啦膜楷!你慢慢走上正軌了旭咽,加上耐心和努力,一定可以成單的赌厅。
獵必得人才庫擁有30000+份Java簡歷穷绵,注冊搜索Java免費(fèi)獲得簡歷