1、可能會問nosql和關(guān)系型數(shù)據(jù)庫的區(qū)別:
創(chuàng)新新互聯(lián),憑借十余年的網(wǎng)站設(shè)計制作、做網(wǎng)站經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有成百上千案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。
優(yōu)點:
1)成本:nosql數(shù)據(jù)庫簡單易部署,基本都是開源軟件,不需要像使用Oracle那樣花費大量成本購買使用,相比關(guān)系型數(shù)據(jù)庫價格便宜
2)查詢速度:nosql數(shù)據(jù)庫將數(shù)據(jù)存儲于緩存之中,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲在硬盤中,自然查詢速度遠不及nosql數(shù)據(jù)庫
3)存儲數(shù)據(jù)的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎(chǔ)類型以及對象或者是集合等各種格式,而數(shù)據(jù)庫則只支持基礎(chǔ)類型
4)擴展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機制的限制導(dǎo)致擴展很艱難
缺點:
1)維護的工具和資料有限,因為nosql是屬于新的技術(shù),不能和關(guān)系型數(shù)據(jù)庫10幾年的技術(shù)同日而語。
2)不提供對sql的支持,如果不支持sql這樣的工業(yè)標準,將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本
3)不提供關(guān)系型數(shù)據(jù)庫對事物的處理
2、介紹下redis和mongodb:
自行g(shù)oogle。
3、應(yīng)用場景:
redis:
a.主要是做熱點數(shù)據(jù)緩存。
b.數(shù)據(jù)過期處理。
c.消息隊列等功能。
d.計數(shù),例如投票等。
mongodb:
mongodb的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢于一身。mongo適用于以下場景:
a.網(wǎng)站數(shù)據(jù):mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。
b.緩存:由于性能很高,mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由mongo搭建的持久化緩存可以避免下層的數(shù)據(jù)源過載。
c.大尺寸、低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較貴,在此之前,很多程序員往往會選擇傳統(tǒng)的文件進行存儲。
d.高伸縮性的場景:mongo非常適合由數(shù)十或者數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。
e.用于對象及JSON數(shù)據(jù)的存儲:mongo的BSON數(shù)據(jù)格式非常適合文檔格式化的存儲及查詢。
4、支持的數(shù)據(jù)類型:
內(nèi)容比較多,自行將網(wǎng)上的信息整理一下。
這個一般都比較簡單,我列出下面幾點你可以作為參考:
數(shù)據(jù)庫的增刪改查,基本會使用,深入點會問你怎么優(yōu)化sql語句和配置項。
簡單的數(shù)據(jù)庫表設(shè)計
php的函數(shù)熟悉情況,數(shù)組和字符串函數(shù)的了解程度
session的使用場景
js的異步請求(一般會考jquery),dom對象的獲取和簡單操作。
最后就是php框架,是否了解mvc思想,和會使用哪些框架
基本就這些了,深入的緩存一般不會考的,比如memcache,nosql之類的
第一步:自我介紹
第二步:公司介紹
第三步:技術(shù)基礎(chǔ)
第四步:項目介紹
第五步:待遇
自我介紹,簡單直接,姓名,籍貫,大學(xué),工作經(jīng)歷
示例如下:
你好,面試官,我叫XX,來自XX,本科畢業(yè)于XX,主修XX專業(yè),有X年工作經(jīng)驗,在上一家公司擔(dān)任python后端開發(fā)工程師的職位。
公司名稱是XX、公司主要做外包軟件、都有軟件定制/商城定制、前端2個后端2個運維1個
主要是根據(jù)你簡歷中填寫的技術(shù),根據(jù)我的簡歷中所寫的,總結(jié)幾點如下:
字典的查詢流程:
不可變對象可哈希, str , fronzenset , tuple ,自己實現(xiàn)的類,要重載 __hash__ 方法。
dict內(nèi)存花銷大,但是查詢速度快,自定義的對象或者python內(nèi)部的對象都是dict包裝的。
dict的存儲順序和元素添加順序有關(guān),添加順序可能改變已有數(shù)據(jù)的順序。
集合:是一個可以存放任意數(shù)據(jù)類型的可變無序的映射集合。
set和dict類似,set的核心也是散列表,但是表元只包含值的引用。 由于散列表的特性,set的元素不能重復(fù),且無序。 內(nèi)部由哈希實現(xiàn),查找的時間復(fù)雜度為O(1),所以性能很高,實現(xiàn)了魔法函數(shù) __contains__ 可以使用in來查找。 set的去重是通過兩個函數(shù) __hash__ 和 __eq__ 實現(xiàn)的。
(1)淺拷貝
定義:淺拷貝只是對另外一個變量的內(nèi)存地址的拷貝,這兩個變量指向同一個內(nèi)存地址的變量值。
淺拷貝的特點:
(2)深拷貝:
定義:一個變量對另外一個變量的值拷貝。
深拷貝的特點:
Python GC主要使用引用計數(shù)(reference counting)來跟蹤和回收垃圾。在引用計數(shù)的基礎(chǔ)上,通過“標記-清除”(mark and sweep)解決容器對象可能產(chǎn)生的循環(huán)引用問題,通過“分代回收”(generation collectio n)以空間換時間的方法提高垃圾回收效率。
GIL全稱 Global Interpreter Lock ,中文解釋為全局解釋器鎖。它并不是Python的特性,而是在實現(xiàn)python的主流Cpython解釋器時所引入的一個概念,GIL本質(zhì)上就是一把互斥鎖,將并發(fā)運行變成串行,以此來控制同一時間內(nèi)共享數(shù)據(jù)只能被一個任務(wù)所修改,從而保證數(shù)據(jù)的安全性。
GIL保護的是解釋器級別的數(shù)據(jù),但是用戶自己的數(shù)據(jù)需要自己加鎖處理。
既然有了GIL的存在,一個進程中同一時刻只有一個線程能夠被執(zhí)行,無法利用cpu的多核機制,導(dǎo)致多線程用于I/O密集型,多進程用于計算密集型,如金融分析等。
死鎖:兩個或兩個以上的進程或者線程在執(zhí)行過程中,因為爭奪資源而造成的互相等待現(xiàn)象,若無外力的作用,都將一直處于阻塞狀態(tài),這些互相等待的進程或者線程就被稱為死鎖。
解決方法,使用遞歸鎖(RLock)
這個RLock內(nèi)部有一個Lock和一個counter變量,counter記錄著acquire的次數(shù),從而使得資源可以被多次require。直到一個線程所有的acquire都被release,其他的線程才能獲得資源。上面的例子如果使用RLock代替Lock,則不會發(fā)生死鎖
可以直接認為是linux,畢竟搞后端的多數(shù)是和linux打交道。
那么如何避免粘包問題呢? 歸根結(jié)底就是一句話, 明確兩個包之間的邊界.
UDP不存在粘包問題,是由于UDP發(fā)送的時候,沒有經(jīng)過Negal算法優(yōu)化,不會將多個小包合并一次發(fā)送出去。另外,在UDP協(xié)議的接收端,采用了鏈式結(jié)構(gòu)來記錄每一個到達的UDP包,這樣接收端應(yīng)用程序一次recv只能從socket接收緩沖區(qū)中讀出一個數(shù)據(jù)包。也就是說,發(fā)送端send了幾次,接收端必須recv幾次(無論recv時指定了多大的緩沖區(qū))。
存儲可能包含rdbms,nosql以及緩存等,我以mysql,redis舉例**
這次的NoSQL專欄系列將先整體介紹NoSQL,然后介紹如何把NoSQL運用到自己的項目中合適的場景中,還會適當(dāng)?shù)胤治鲆恍┏晒Π咐M谐晒κ褂肗oSQL經(jīng)驗的朋友給我提供一些線索和信息。
NoSQL概念隨著web2.0的快速發(fā)展,非關(guān)系型、分布式數(shù)據(jù)存儲得到了快速的發(fā)展,它們不保證關(guān)系數(shù)據(jù)的ACID特性。NoSQL概念在2009年被提了出來。NoSQL最常見的解釋是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一詞最早于1998年被用于一個輕量級的關(guān)系數(shù)據(jù)庫的名字。)
NoSQL被我們用得最多的當(dāng)數(shù)key-value存儲,當(dāng)然還有其他的文檔型的、列存儲、圖型數(shù)據(jù)庫、xml數(shù)據(jù)庫等。在NoSQL概念提出之前,這些數(shù)據(jù)庫就被用于各種系統(tǒng)當(dāng)中,但是卻很少用于web互聯(lián)網(wǎng)應(yīng)用。比如cdb、qdbm、bdb數(shù)據(jù)庫。
傳統(tǒng)關(guān)系數(shù)據(jù)庫的瓶頸
傳統(tǒng)的關(guān)系數(shù)據(jù)庫具有不錯的性能,高穩(wěn)定型,久經(jīng)歷史考驗,而且使用簡單,功能強大,同時也積累了大量的成功案例。在互聯(lián)網(wǎng)領(lǐng)域,MySQL成為了絕對靠前的王者,毫不夸張的說,MySQL為互聯(lián)網(wǎng)的發(fā)展做出了卓越的貢獻。
在90年代,一個網(wǎng)站的訪問量一般都不大,用單個數(shù)據(jù)庫完全可以輕松應(yīng)付。在那個時候,更多的都是靜態(tài)網(wǎng)頁,動態(tài)交互類型的網(wǎng)站不多。
到了最近10年,網(wǎng)站開始快速發(fā)展?;鸨恼搲?、博客、sns、微博逐漸引領(lǐng)web領(lǐng)域的潮流。在初期,論壇的流量其實也不大,如果你接觸網(wǎng)絡(luò)比較早,你可能還記得那個時候還有文本型存儲的論壇程序,可以想象一般的論壇的流量有多大。
Memcached+MySQL
后來,隨著訪問量的上升,幾乎大部分使用MySQL架構(gòu)的網(wǎng)站在數(shù)據(jù)庫上都開始出現(xiàn)了性能問題,web程序不再僅僅專注在功能上,同時也在追求性能。程序員們開始大量的使用緩存技術(shù)來緩解數(shù)據(jù)庫的壓力,優(yōu)化數(shù)據(jù)庫的結(jié)構(gòu)和索引。開始比較流行的是通過文件緩存來緩解數(shù)據(jù)庫壓力,但是當(dāng)訪問量繼續(xù)增大的時候,多臺web機器通過文件緩存不能共享,大量的小文件緩存也帶了了比較高的IO壓力。在這個時候,Memcached就自然的成為一個非常時尚的技術(shù)產(chǎn)品。
Memcached作為一個獨立的分布式的緩存服務(wù)器,為多個web服務(wù)器提供了一個共享的高性能緩存服務(wù),在Memcached服務(wù)器上,又發(fā)展了根據(jù)hash算法來進行多臺Memcached緩存服務(wù)的擴展,然后又出現(xiàn)了一致性hash來解決增加或減少緩存服務(wù)器導(dǎo)致重新hash帶來的大量緩存失效的弊端。當(dāng)時,如果你去面試,你說你有Memcached經(jīng)驗,肯定會加分的。
Mysql主從讀寫分離
由于數(shù)據(jù)庫的寫入壓力增加,Memcached只能緩解數(shù)據(jù)庫的讀取壓力。讀寫集中在一個數(shù)據(jù)庫上讓數(shù)據(jù)庫不堪重負,大部分網(wǎng)站開始使用主從復(fù)制技術(shù)來達到讀寫分離,以提高讀寫性能和讀庫的可擴展性。Mysql的master-slave模式成為這個時候的網(wǎng)站標配了。
分表分庫隨著web2.0的繼續(xù)高速發(fā)展,在Memcached的高速緩存,MySQL的主從復(fù)制,讀寫分離的基礎(chǔ)之上,這時MySQL主庫的寫壓力開始出現(xiàn)瓶頸,而數(shù)據(jù)量的持續(xù)猛增,由于MyISAM使用表鎖,在高并發(fā)下會出現(xiàn)嚴重的鎖問題,大量的高并發(fā)MySQL應(yīng)用開始使用InnoDB引擎代替MyISAM。同時,開始流行使用分表分庫來緩解寫壓力和數(shù)據(jù)增長的擴展問題。這個時候,分表分庫成了一個熱門技術(shù),是面試的熱門問題也是業(yè)界討論的熱門技術(shù)問題。也就在這個時候,MySQL推出了還不太穩(wěn)定的表分區(qū),這也給技術(shù)實力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster集群,但是由于在互聯(lián)網(wǎng)幾乎沒有成功案例,性能也不能滿足互聯(lián)網(wǎng)的要求,只是在高可靠性上提供了非常大的保證。
MySQL的擴展性瓶頸
在互聯(lián)網(wǎng),大部分的MySQL都應(yīng)該是IO密集型的,事實上,如果你的MySQL是個CPU密集型的話,那么很可能你的MySQL設(shè)計得有性能問題,需要優(yōu)化了。大數(shù)據(jù)量高并發(fā)環(huán)境下的MySQL應(yīng)用開發(fā)越來越復(fù)雜,也越來越具有技術(shù)挑戰(zhàn)性。分表分庫的規(guī)則把握都是需要經(jīng)驗的。雖然有像淘寶這樣技術(shù)實力強大的公司開發(fā)了透明的中間件層來屏蔽開發(fā)者的復(fù)雜性,但是避免不了整個架構(gòu)的復(fù)雜性。分庫分表的子庫到一定階段又面臨擴展問題。還有就是需求的變更,可能又需要一種新的分庫方式。
MySQL數(shù)據(jù)庫也經(jīng)常存儲一些大文本字段,導(dǎo)致數(shù)據(jù)庫表非常的大,在做數(shù)據(jù)庫恢復(fù)的時候就導(dǎo)致非常的慢,不容易快速恢復(fù)數(shù)據(jù)庫。比如1000萬4KB大小的文本就接近40GB的大小,如果能把這些數(shù)據(jù)從MySQL省去,MySQL將變得非常的小。
關(guān)系數(shù)據(jù)庫很強大,但是它并不能很好的應(yīng)付所有的應(yīng)用場景。MySQL的擴展性差(需要復(fù)雜的技術(shù)來實現(xiàn)),大數(shù)據(jù)下IO壓力大,表結(jié)構(gòu)更改困難,正是當(dāng)前使用MySQL的開發(fā)人員面臨的問題。
NOSQL的優(yōu)勢易擴展NoSQL數(shù)據(jù)庫種類繁多,但是一個共同的特點都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴展。也無形之間,在架構(gòu)的層面上帶來了可擴展的能力。
大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的交互頻繁的應(yīng)用,Cache性能不高。而NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要性能高很多了。
靈活的數(shù)據(jù)模型
NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直就是一個噩夢。這點在大數(shù)據(jù)量的web2.0時代尤其明顯。
高可用NoSQL在不太影響性能的情況,就可以方便的實現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過復(fù)制模型也能實現(xiàn)高可用。
總結(jié)NoSQL數(shù)據(jù)庫的出現(xiàn),彌補了關(guān)系數(shù)據(jù)(比如MySQL)在某些方面的不足,在某些方面能極大的節(jié)省開發(fā)成本和維護成本。
MySQL和NoSQL都有各自的特點和使用的應(yīng)用場景,兩者的緊密結(jié)合將會給web2.0的數(shù)據(jù)庫發(fā)展帶來新的思路。
項目數(shù)據(jù)分析師分享:美國大數(shù)據(jù)工程師面試攻略
方法/步驟
先做一個自我介紹,本科南開后,加入了一個創(chuàng)業(yè)公司kuxun,做實時信息檢索,后來進入百度基礎(chǔ)架構(gòu)組,搭建了Baidu App Engine的早期版本,隨后去Duke大學(xué)留學(xué),在攻讀碩士期間,做跟Hadoop大數(shù)據(jù)相關(guān)的研究項目Starfish,之后在Amazon EC2部門實習(xí),了解它們的內(nèi)部架構(gòu),畢業(yè)后加入Linkedin,做廣告組的架構(gòu),涉及Hadoop調(diào)優(yōu),Data Pipeline, Offline/Online, 實時系統(tǒng)。最新是在Coursera從事數(shù)據(jù)工程師工作。在多年工作中,除了對技術(shù)的不懈追求,也積累了大量的面試經(jīng)驗,從國內(nèi)的一線互聯(lián)網(wǎng)百度,阿里巴巴,奇虎,人人,到美國一線公司Facebook,Google,Linkedin,Twitter,Amazon,到熱門Startup,Uber,Pinterest,Airbnb,Box,Dropbox,Snapchat,Houzz,拿到10+ offer,并且在Linkedin期間也面試過100+候選人,參與面試題制定,樂于分享并幫助很多人成功求職,實現(xiàn)目標。
我們看一下這張硅谷地圖,它坐落于美國加州,從圣何塞到舊金山的狹長地帶,中間是San francisco bay,簡稱灣區(qū)。它的由來是這邊有計算機核心處理器中離不開的硅,30年來,硅谷就發(fā)展成為無數(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從負數(shù)到上千。瘋狂的估值背后也改變了世界。
如果說硅谷成功是有原因的,我覺得有兩點。地理位置是得天獨厚吸引大量人才,這里有Stanford和加州州立高校提供智力庫的支持,在硅谷可以看到來自全世界的最聰明的人,中國人,印度人,猶太人構(gòu)成這些Engineer的主力。雖然國內(nèi)做技術(shù)自嘲為碼農(nóng),但在硅谷成為一個優(yōu)秀工程師還是收獲頗豐。另一方面創(chuàng)業(yè)是一個永恒的話題,在Stanford有個說法空氣中都飄揚中創(chuàng)業(yè)的味道,一些早期員工通過上市套現(xiàn)又積累經(jīng)驗成了天使投資,Y Combinator,各種技術(shù)forum,meetup,創(chuàng)業(yè)導(dǎo)師,都很活躍。資本的力量功不可沒,早年VC通過投資,收購,上市放大形成一個雪球效應(yīng)。大家總喜歡問什么是next big thing,哪一個是下一個facebook,下一個musk,根據(jù)統(tǒng)計10年能成就一個千億以上的公司,目前這個進程正在縮短。
我就拿Linkedin作為例子,介紹高科技公司(FLG)是什么樣子。它是成立2003年的職業(yè)社交網(wǎng)站。在10年的發(fā)展中,也不是一下子爆發(fā)的,目前有3億的全球用戶,雖然跟Facebook,Google 10億+用戶沒法比,但是它有很好的護城河,用戶定位高端精準,單位價值高。這張照片中左邊這位是創(chuàng)始人Reid Hoffman,是Paypal黑幫成員,在硅谷也是呼風(fēng)喚雨的大佬,目前是董事和投資人。中間這位是CEO Jeff,2013年被Glassdoor評為最佳CEO,作為職業(yè)經(jīng)理人,成功幫助linkedin高速成長,他最喜歡提到transformation,希望我們每個員工能挑戰(zhàn)自我,在各自崗位上進化。Linkedin提供了員工很好的福利,有號稱灣區(qū)最佳的免費食堂,每個月一次的in day,hack day, 幫助員工內(nèi)部創(chuàng)業(yè)的incumbator計劃。它特點是數(shù)據(jù)驅(qū)動的開發(fā)產(chǎn)品,比如 People you may know, Job you may be interested, 我做過Sponroed Ads 都是需要很強數(shù)據(jù)背景和data scientist的支持。它的Biz model也很獨特,有3個line,面向公司的招聘服務(wù),面向廣告商的市場服務(wù),面向個人的訂閱服務(wù),還有最新Sales Solution,因為這么多可能性,成為華爾街的寵兒。
說硅谷,除了那些已經(jīng)成功的大公司,不得不說現(xiàn)在最新的創(chuàng)業(yè)動向,這些代表了未來下一個FLG。我總結(jié)了一些領(lǐng)域和代表公司:云計算(box, dropbox),大數(shù)據(jù)(cloudera),消費互聯(lián)網(wǎng)(pinterest),健康(fitbit),通訊(snapchat),支付(square),生活(uber)。 這里是華爾街網(wǎng)站更新的最新融資規(guī)模,比如Uber就達到18Billion的估值,我當(dāng)時拿到offer沒去,還是覺得很瘋狂,如果細看這張表,大家可以看到硅谷(藍色)尤其是舊金山它們的融資規(guī)模遠遠大于其他地區(qū),還是地理決定論。而在國內(nèi)的兩家xiaomi,jingdong都是在北京,而最近大家看到一些泡沫論,說什么阿里巴巴上市是否美股到頂,經(jīng)緯VC創(chuàng)始人也提醒我們泡沫的風(fēng)險,我無法判斷。如果能參與到下一波浪潮里面去是很過癮的。我推薦大家去看看 浪潮之巔,奇點臨近,我還是很期待未來20年的技術(shù)革命。
我個人熱愛大數(shù)據(jù),在硅谷這也是大家津津樂道的,有個笑話,big data is like teenage talking about sex, nobody know how to do it. 其實大家還是興趣驅(qū)動就好,不要那么功利,大數(shù)據(jù)技術(shù)涉及太多,平常工作中也是慢慢積累,有無數(shù)的坑和技術(shù)細節(jié)需要克服。并不是說那個技術(shù)最熱就要用哪個,如果你用不好,你的壓力很大的,舉個例子,你用某個開源數(shù)據(jù)庫,發(fā)現(xiàn)它偶爾有數(shù)據(jù)丟失怎么辦,如果這是線上服務(wù),你不斷收到報警,這時候你當(dāng)時選用它的優(yōu)點 scalable,容錯性都沒意義了。接著說大數(shù)據(jù),這里面Hadoop作為行業(yè)標準,我面過的除了Google,微軟不用,幾乎所有的公司都在用,建議大家利用這個機會。這里面有三巨頭,cloudera是老牌Hadoop咨詢公司,Hadoop的創(chuàng)始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 編碼方式高效而著名,它們都是融了巨資,模式也很像,先推出社區(qū)免費版,但有個商業(yè)版提供更好的管理。 而今年出現(xiàn)一匹黑馬,Spark,簡單說就是內(nèi)存級別的計算,比Hadoop框架里能節(jié)約IO,利用緩存,能適應(yīng)批處理,迭代,流式計算。
這里看一下它的生態(tài)系統(tǒng),如何學(xué)Hadoop是個循序漸進過程,先要理解學(xué)習(xí)它的core系統(tǒng),HDFS, MapReduce, Common,在外圍有無數(shù)的系統(tǒng)工具方便開發(fā),我個人用過的是 Avro作為數(shù)據(jù)格式,Zookeeper作為選主的高可靠性的組件,Solr作為搜索接口,Pig搭建工作流,Hive 數(shù)據(jù)倉庫查詢,Oozie管理工作流,HBase 作為KV 分布式存儲,mahout數(shù)據(jù)挖掘的庫,Cassandra nosql 數(shù)據(jù)庫。我建議初學(xué)的考慮Chinahadoop的課程。
而Hadoop本身也是個進化過程,幾年前0.19版本,到0.20, 0.23分流成Yarn架構(gòu)最后進化成Hadoop2.0, Hadoop1.0 和 2.0 它們的接口和組件是完全不同的,但總體上Hadoop 2.0 是趨勢,因為它有Yarn這樣分離的資源管理平臺,可以以插件的方式開發(fā)上面的Application,解放了生產(chǎn)力,而像Spark,Storm這些新型處理器也是支持Hadoop 2.0的。這里是Hortonworks它們提出來的社區(qū)版本架構(gòu),可以說標準的制定者,一流的公司制定標準,其他的公司一般用只能用它們提供的穩(wěn)定版,沒有多少話語權(quán)。但從事大數(shù)據(jù),并不見得是要去這些制定標準的公司,大量的應(yīng)用也是非??简灱軜?gòu)的靈活性。并且能看到實際的產(chǎn)品,很有成就感。
說到今年火的,還是要看Spark。從去年至今,已經(jīng)開了2屆Spark大會,上千人的規(guī)模,無數(shù)人對比Hadoop 100倍的性能提升而興奮。這里說它的背景是誕生于Berkeley的Amplab,它們有個很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已經(jīng)成為Apache的頂級項目。去年這個實驗室的教授跟學(xué)生出去成立Databricks公司,拉到兩輪上千萬的風(fēng)投,有人成Spark是Hadoop的終結(jié)者嗎?我看今年Spark大會上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放棄impala的一線支持而轉(zhuǎn)變成Spark。如果這么發(fā)展下去,星星之火可以燎原啊。它里面用到Scala是一種函數(shù)式語言。里面的組件也很多,有Shark支持SQL類似Hive,有Spark Streaming,MLlib,Graphx,SparkR,BlinkDB。它的核心數(shù)據(jù)結(jié)構(gòu)是RDD,可以跑在各種分布式系統(tǒng)上。總體上是個包容性+侵略性的系統(tǒng)。我個人也很看好它們的發(fā)展。
PHP程序員在面試的時候一般應(yīng)該抓住以下幾個點。
一、應(yīng)該介紹自己掌握的開發(fā)一種,主要介紹PHP語言的獨特語法以及如何使用,比如PHP語言會比CGI更快的執(zhí)行動態(tài)頁面。
二、必須熟悉Oracle、Mysql等數(shù)據(jù)庫,并能簡單的介紹自己掌握的程度。由于php做出的動態(tài)頁面比用其他語言做出來的頁面在執(zhí)行效率以及CGI方面高得多,所以你還需要在面試中說出自己的文檔撰寫能力很強。
三、PHP程序員應(yīng)該具備獨立分析和解決問題的能力,可以在自我介紹中講講自己曾經(jīng)遇到過的問題是如何解決的。讓面試官看到你的能力,這將會直接影響到你自我介紹的成功與否。
四、一個PHP程序員必須有良好的職業(yè)道德和工作態(tài)度,所以在面試中應(yīng)該盡量講自己在做項目時的認真態(tài)度以及今后的工作規(guī)劃,表現(xiàn)出自己的進取心。
五、還有關(guān)于溝通能力和理解能力的體現(xiàn),這個在與HR的交談中就可以表現(xiàn)出來,所以需要做的工作就是從容的有條理的把自我介紹說完,回答每一個問題時都應(yīng)該簡潔明了,關(guān)于自我介紹可以提前做個草稿,背一下。
六、團隊合作能力也是企業(yè)非常看重的,在培訓(xùn)中老師一般都會帶領(lǐng)大家做項目,大的項目一般會分小組,每個人都有相對應(yīng)的任務(wù),這就模擬了公司中的團隊合作,在自我介紹過程中要把做項目的具體流程以及相互協(xié)作的過程說出來,讓HR看到自己具備團隊合作的能力。
七、最后就是執(zhí)行力,每當(dāng)任務(wù)分配下來的時候該如何執(zhí)行,還有自己講過職業(yè)規(guī)劃后該如何執(zhí)行,還有在學(xué)習(xí)的過程中是如何人字形的,遇到困難又是如何執(zhí)行的,這些都可以體現(xiàn)出php程序員的執(zhí)行力,回答的時候抓住發(fā)現(xiàn)及時尋找原因,快速展開行動的這個主線即可。
八、最重要的是你的能力、技術(shù)以及自己的項目