區(qū)塊鏈面試:區(qū)塊鏈專家所必備的技術(shù)

背景

區(qū)塊鏈面試是一個(gè)挺新的話題,主要得益于區(qū)塊鏈行業(yè) 2018 年成為風(fēng)口行業(yè),不僅曝光度激增而且人才市場火爆,而我在年后也是接觸了許多來參加面試的候選人,大部分是沒有區(qū)塊鏈從業(yè)經(jīng)驗(yàn)的,為此我當(dāng)時(shí)寫了一篇《尋找適合戀愛的區(qū)塊鏈工程師》,從面試官的角度來講了如何尋找一個(gè)合格的候選人。

從經(jīng)歷來看,這個(gè)行業(yè)非常之新興,并且人才也相當(dāng)匱乏。作為我針對(duì)面試寫的第二篇文章,我決定從一個(gè)從技術(shù)的角度來詳盡闡述要成為一個(gè)區(qū)塊鏈專家所必備的技術(shù)。

前言

說到技術(shù),我所指的主要還是研發(fā)。由于我負(fù)責(zé)的是技術(shù)崗,因此我對(duì)于技術(shù)上要求會(huì)比較嚴(yán)格(嚴(yán)格并不等于高),簡單來說就是,基礎(chǔ)知識(shí)需要十分扎實(shí)。許多過來參加區(qū)塊鏈工程師面試的同學(xué),大部分人給我的印象是,看過一點(diǎn)介紹區(qū)塊鏈知識(shí)的書籍,問一點(diǎn)淺顯的知識(shí)是能夠答得上來,但是稍微具體一點(diǎn)的,就會(huì)變得含糊不清了。在我看來,區(qū)塊鏈所要求的知識(shí)并非什么特殊的或者新興的知識(shí),除了密碼學(xué)領(lǐng)域的知識(shí)需要專門了解之外,其他知識(shí)和技能幾乎都是一些比較通用的網(wǎng)絡(luò)開發(fā)核心知識(shí),如果是從事網(wǎng)絡(luò)服務(wù)端相關(guān)開發(fā)的,可能會(huì)對(duì)這部分知識(shí)比較熟悉。

由于區(qū)塊鏈整個(gè)行業(yè)涉及到的范圍非常廣泛,下到各種基礎(chǔ)設(shè)施,上到各種上層應(yīng)用,它們對(duì)技能的要求范圍是不一樣的。根據(jù)我的經(jīng)驗(yàn),大致把區(qū)塊鏈開發(fā)分為兩個(gè)大的部分:技術(shù)層和應(yīng)用層,以便候選人根據(jù)自己以往的專業(yè)技能背景選擇自己合適的領(lǐng)域。

一、核心層

核心層是區(qū)塊鏈最下面的一層,這一層是底層技術(shù)與基礎(chǔ)設(shè)施的開發(fā)。我們可以把這一層比作操作系統(tǒng)的內(nèi)核,而應(yīng)用層則是在操作系統(tǒng)之上構(gòu)建各種軟件。比如我們最常見的比特幣網(wǎng)絡(luò),它的核心技術(shù)就來源于它的共識(shí)機(jī)制(POW),當(dāng)然,對(duì)于大部分鏈來說,共識(shí)的原理都是其最核心的部件。要構(gòu)建這樣的共識(shí)機(jī)制,又需要更加底層的技術(shù)支持,比如:網(wǎng)絡(luò)通信,數(shù)據(jù)存儲(chǔ),加密安全等等。所以,這一層對(duì)于技術(shù)的內(nèi)涵要求比較高,這里的技術(shù)是一項(xiàng)綜合的能力,我把它總結(jié)為三個(gè)部分:理論基礎(chǔ)、專業(yè)經(jīng)驗(yàn)以及技術(shù)能力。

1)理論基礎(chǔ)

理論基礎(chǔ)主要是指分布式系統(tǒng)理論,如果是專業(yè)出身(比如計(jì)算機(jī)專業(yè)-分布式系統(tǒng)方向),或者有過從事過分布式數(shù)據(jù)庫,網(wǎng)絡(luò)等相關(guān)的經(jīng)驗(yàn),那么可能會(huì)對(duì)這一部分相對(duì)了解或熟悉,熟悉并深入理解分布式網(wǎng)絡(luò)的特點(diǎn)和各種算法是能夠在區(qū)塊鏈領(lǐng)域大有作為的前提之一。

這里,我簡單列舉需要掌握的一些分布式系統(tǒng)核心概念:

  • 全序/偏序,因果順序
  • 物理時(shí)鐘/邏輯時(shí)鐘
  • 兩階段算法(2PC)/三階段算法(3PC)
  • Safety && Liveness
  • FLP 不可能定理
  • Paxos/Multi-paxos
  • Raft/Multi-Raft
  • CAP 理論
  • 副本一致性,強(qiáng)/弱、最終一致性
  • 簡單哈希/一致性哈希
  • Base/ACID,分布式 ID 等等
  • BFT(Byzantine Fault Tolerance)

關(guān)于這部分內(nèi)容詳細(xì)介紹,可以參見我的系列文章之《區(qū)塊鏈核心技術(shù):分布式理論》。

2)專業(yè)經(jīng)驗(yàn)

專業(yè)經(jīng)驗(yàn)則是指對(duì)目前最主流的區(qū)塊鏈項(xiàng)目的掌握程度,比如 Bitcoin,Ethereum 等,了解賬戶模型,智能合約等等,而且,不僅是它們的運(yùn)行原理,而且能在它們的基礎(chǔ)上持續(xù)改進(jìn)、開拓以及創(chuàng)新,比如對(duì)側(cè)鏈,輕節(jié)點(diǎn)、分布式存儲(chǔ),擴(kuò)容方案等有一定的理解等等。

為此,我也做了一個(gè)列表,主要展示對(duì)區(qū)塊鏈的專業(yè)經(jīng)驗(yàn)的一些要求:

  • 目前區(qū)塊鏈主流共識(shí)算法之間的差異(比如 PBFT 與 POW 之間區(qū)別)
  • 聯(lián)盟鏈、公鏈及私鏈之間的區(qū)別,部署方式
  • 針對(duì)區(qū)塊鏈的攻擊方式:51%算力攻擊,Sybil 攻擊,Eclipse 攻擊,DDos 攻擊
  • P2P 網(wǎng)絡(luò)通信模式(Gossip,Totem,DHT 等)
  • Merkle Tree 數(shù)據(jù)結(jié)構(gòu)
  • Bitcoin UTXO 模型,以太坊轉(zhuǎn)賬流程(GAS 計(jì)算,Nonce 值等等)
  • 以太坊智能合約的編寫,Solidity 相關(guān)知識(shí)
  • 密碼學(xué)(公鑰/私鑰,ECDSA,RSA,哈希算法),簽名,多重簽名,盲簽名等等
  • 以太坊協(xié)議 ERC20 ERC721 ERC223 ERC875
  • 比特幣(P2SH 地址,交易腳本等)

這部分內(nèi)容可以詳見我的系列文章之《區(qū)塊鏈核心技術(shù):專業(yè)經(jīng)驗(yàn)》。

3)技術(shù)準(zhǔn)備

最后,技術(shù)能力則是一項(xiàng)通用能力,是網(wǎng)絡(luò)編程,內(nèi)存控制,操作系統(tǒng),編解碼,密碼學(xué),異步編程等等開發(fā)功底的一個(gè)綜合考核。它是一個(gè)日積月累的能力,扎實(shí)的技術(shù)背景可以讓我們快速適應(yīng)區(qū)塊鏈底層的開發(fā)。

為此,我列舉了一些比較核心的研發(fā)能力和技術(shù)準(zhǔn)備:

  • 數(shù)據(jù)結(jié)構(gòu)(二叉樹,trie 樹,數(shù)組,結(jié)構(gòu)體/類 等等)
  • 算法(回溯/遞歸,字符串編碼,排序,搜索等等)
  • 鎖(原子鎖,互斥鎖/自旋鎖),死鎖檢測,內(nèi)存泄露檢測
  • 多線程編程(共享內(nèi)存,線程/進(jìn)程/協(xié)程),用戶態(tài)/內(nèi)核態(tài)
  • 同步、異步,阻塞/非阻塞,多路復(fù)用 I/O
  • 異步編程/響應(yīng)式編程范式,事件驅(qū)動(dòng)
  • 網(wǎng)絡(luò)編程:TCP/IP/UDP 協(xié)議,time_wait 狀態(tài),socket/select/epoll, C10k 問題等
  • 服務(wù)器編程:熟悉 Linux 編程,系統(tǒng)資源(如:cpu/io, disk usage 等)
  • HTTP 協(xié)議,RPC 通信,負(fù)債均衡等等

這部分內(nèi)容可以想見我的系列文章之《區(qū)塊鏈核心技術(shù):技術(shù)準(zhǔn)備》。

2、應(yīng)用層

應(yīng)用層是區(qū)塊鏈最重要的一層,也是區(qū)塊鏈行業(yè)能蓬勃和持續(xù)發(fā)展的力量來源。應(yīng)用層主要涉及的是區(qū)塊鏈產(chǎn)品,我們常見的有比如:數(shù)字錢包(imToken),分布式交易所(Cosmos,bitshare),瀏覽器插件(MetaMask),區(qū)塊鏈游戲(CryptoKitties, FOMO3D),保險(xiǎn)產(chǎn)品等等。

開發(fā)這些應(yīng)用級(jí)別的產(chǎn)品,通常是與底層的區(qū)塊鏈系統(tǒng)進(jìn)行交互,因此,并不需要我們對(duì)區(qū)塊鏈底層技術(shù)達(dá)到非常專業(yè)的掌握。但是需要我們對(duì)區(qū)塊鏈的核心概念有了解,以便我們能與鏈的開發(fā)者能在同一語言上進(jìn)行溝通而不至于誤解。

當(dāng)然,應(yīng)用層的開發(fā)對(duì)技術(shù)的要求也是共同的,它雖然沒有核心層對(duì)技術(shù)能力要求的那么高,但是其更加側(cè)重對(duì)創(chuàng)新和落地

我會(huì)通過分析幾個(gè)典型區(qū)塊鏈應(yīng)用,來展示思路而不是技術(shù)本身在應(yīng)用層所展現(xiàn)的強(qiáng)大能量和生命力。

這部分內(nèi)容可以詳見我的系列文章值《區(qū)塊鏈核心技術(shù):編寫應(yīng)用》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容