JD
職位描述
1.負(fù)責(zé)組件庫(kù)與業(yè)務(wù)頁(yè)面開發(fā)党饮。
2.帶領(lǐng)團(tuán)隊(duì)完成技術(shù)產(chǎn)品實(shí)現(xiàn)肝陪。
3.負(fù)責(zé)大型多應(yīng)用架構(gòu)設(shè)計(jì)。
4.利用前端技術(shù)與服務(wù)端協(xié)同完成團(tuán)隊(duì)業(yè)務(wù)目標(biāo)刑顺。
職位要求
1.熟練掌握J(rèn)avaScript氯窍。
2.熟悉常用工程化工具,掌握模塊化思想和技術(shù)實(shí)現(xiàn)方案蹲堂。
3.熟練掌握React前端框架荞驴,了解技術(shù)底層。同時(shí)了解vue以及angular等其他框架者優(yōu)先贯城。
4.熟練掌握react生態(tài)常用工具,redux/react-router等霹娄。
5.熟悉各種Web前端技術(shù)能犯,包括HTML/XML/CSS等鲫骗,有基于Ajax的前端應(yīng)用開發(fā)經(jīng)驗(yàn)。
6.有良好的編碼習(xí)慣踩晶,對(duì)前端技術(shù)有持續(xù)的熱情执泰,個(gè)性樂(lè)觀開朗,邏輯性強(qiáng),善于和各種背景的人合作渡蜻。
7.具有TS/移動(dòng)設(shè)備上前端開發(fā)/NodeJS/服務(wù)端開發(fā)等經(jīng)驗(yàn)者優(yōu)先术吝。
翻譯一下JD
為什么起這個(gè)標(biāo)題呢?因?yàn)橛泻芏嗳丝吹铰毼幻枋鋈孜赡芫驮诤妥约鹤龅氖虑橐灰槐葘?duì)排苍,把關(guān)鍵字都核對(duì)上。而很多前端同學(xué)看到職位要求第一條里的圖形學(xué)学密,可能就開始打退堂鼓了淘衙。或者看到幾個(gè)關(guān)鍵字自己都認(rèn)識(shí)腻暮,就覺得沒(méi)問(wèn)題彤守,還挺簡(jiǎn)單的。
就這樣望而卻步真的好嗎哭靖?為什么職位描述看著簡(jiǎn)單具垫,面試卻這么難呢?你真的讀懂這份職位描述了嗎试幽?
現(xiàn)在筝蚕,不妨先停一下,就上面的問(wèn)題抡草,我們來(lái)細(xì)細(xì)品一下饰及。什么叫讀懂職位描述呢?從我個(gè)人的理解康震,讀懂職位描述燎含,應(yīng)該是讀懂這個(gè)職位需要哪些基礎(chǔ)能力,以及可能遇到哪些挑戰(zhàn)腿短。我們寫自己簡(jiǎn)歷的時(shí)候屏箍,“精通react”和“熟練使用react”,相信大家不會(huì)隨意去寫橘忱。同樣的赴魁,JD里面的:掌握、熟練掌握钝诚、了解颖御、熟悉,也不是隨意寫的凝颇,這代表了團(tuán)隊(duì)對(duì)新同學(xué)的能力要求潘拱。
回想寫自己簡(jiǎn)歷的時(shí)候疹鳄,我們會(huì)對(duì)這個(gè)前綴捫心自問(wèn)一下。因?yàn)闀?huì)擔(dān)心一旦寫了精通芦岂,面試官的問(wèn)題會(huì)更難瘪弓,甚至覺得只有源碼倒背如流的人,才能稱得上精通禽最。當(dāng)然也會(huì)有同學(xué)非常自信腺怯,用react做過(guò)幾個(gè)項(xiàng)目,就寫上了精通react川无。
這兩種都可以稱為精通呛占,也都不可以。沒(méi)有客觀標(biāo)準(zhǔn)舀透,又怎么去衡量呢栓票?而標(biāo)準(zhǔn)在哪里呢?所以在這里愕够,我從阿里面試官角度走贪,給出我認(rèn)為的標(biāo)準(zhǔn),盡可能的做到客觀可量化惑芭。那么坠狡,基于上面這份職位標(biāo)準(zhǔn),我來(lái)翻譯一下職位要求:
首先遂跟,總覽全部的要求逃沿,會(huì)發(fā)現(xiàn)這個(gè)職位雖然提到了3d相關(guān)的技能,但是大部分卻是應(yīng)用開發(fā)相關(guān)的能力幻锁,所以這個(gè)職位并不是想找專業(yè)的3d領(lǐng)域同學(xué)凯亮,而是需要一個(gè)工程化能力強(qiáng),對(duì)3d有了解的同學(xué)哄尔。
1.熟練掌握J(rèn)avaScript假消。
初級(jí):
JavaScript各種概念都得了解,《JavaScript語(yǔ)言精粹》這本書的目錄都得有概念岭接,并且這些核心點(diǎn)都能脫口而出是什么富拗。這里列舉一些做參考:
知道組合寄生繼承,知道class繼承鸣戴。
知道怎么創(chuàng)建類function + class啃沪。
知道閉包在實(shí)際場(chǎng)景中怎么用,常見的坑窄锅。
知道模塊是什么创千,怎么用。
知道event loop是什么,能舉例說(shuō)明event loop怎么影響平時(shí)的編碼签餐。
掌握基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)寓涨,比如堆、棧氯檐、樹,并了解這些數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)基礎(chǔ)中的作用体捏。
知道ES6數(shù)組相關(guān)方法冠摄,比如forEach,map几缭,reduce河泳。
中級(jí):
知道class繼承與組合寄生繼承的差別,并能舉例說(shuō)明年栓。
知道event loop原理拆挥,知道宏微任務(wù),并且能從個(gè)人理解層面說(shuō)出為什么要區(qū)分某抓。知道node和瀏覽器在實(shí)現(xiàn)loop時(shí)候的差別纸兔。
能將繼承、作用域否副、閉包汉矿、模塊這些概念融匯貫通,并且結(jié)合實(shí)際例子說(shuō)明這幾個(gè)概念怎樣結(jié)合在一起备禀。
能脫口而出2種以上設(shè)計(jì)模式的核心思想洲拇,并結(jié)合js語(yǔ)言特性舉例或口噴基礎(chǔ)實(shí)現(xiàn)。
掌握一些基礎(chǔ)算法核心思想或簡(jiǎn)單算法問(wèn)題曲尸,比如排序赋续,大數(shù)相加。
2.熟悉常用工程化工具另患,掌握模塊化思想和技術(shù)實(shí)現(xiàn)方案纽乱。
初級(jí):
知道webpack,rollup以及他們適用的場(chǎng)景柴淘。
知道webpack v4和v3的區(qū)別迫淹。
脫口而出webpack基礎(chǔ)配置。
知道webpack打包結(jié)果的代碼結(jié)構(gòu)和執(zhí)行流程为严,知道index.js敛熬,runtime.js是干嘛的。
知道amd第股,cmd应民,commonjs,es module分別是什么。
知道所有模塊化標(biāo)準(zhǔn)定義一個(gè)模塊怎么寫诲锹。給出2個(gè)文件繁仁,能口噴一段代碼完成模塊打包和執(zhí)行的核心邏輯。
中級(jí):
知道webpack打包鏈路归园,知道plugin生命周期黄虱,知道怎么寫一個(gè)plugin和loader。
知道常見loader做了什么事情庸诱,能幾句話說(shuō)明白捻浦,比如babel-loader,vue-loader桥爽。
能結(jié)合性能優(yōu)化聊webpack配置怎么做朱灿,能清楚說(shuō)明白核心要點(diǎn)有哪些,并說(shuō)明解決什么問(wèn)題钠四,需要哪些外部依賴盗扒,比如cdn,接入層等缀去。
了解異步模塊加載的實(shí)現(xiàn)原理侣灶,能口噴代碼實(shí)現(xiàn)核心邏輯。
高級(jí):
能設(shè)計(jì)出或具體說(shuō)明白團(tuán)隊(duì)研發(fā)基礎(chǔ)設(shè)施朵耕。具體包括但不限于:
項(xiàng)目腳手架搭建炫隶,及如何以工具形態(tài)共享。
團(tuán)隊(duì)eslint規(guī)范如何設(shè)計(jì)阎曹,及如何統(tǒng)一更新伪阶。
工具化打包發(fā)布流程,包括本地調(diào)試处嫌、云構(gòu)建栅贴、線上發(fā)布體系、一鍵部署能力熏迹。同時(shí)檐薯,方案不僅限于前端工程部分,包含相關(guān)服務(wù)端基礎(chǔ)設(shè)施注暗,比如cdn服務(wù)搭建坛缕,接入層緩存方案設(shè)計(jì),域名管控等捆昏。
客戶端緩存及預(yù)加載方案赚楚。
3.熟練掌握React前端框架,了解技術(shù)底層骗卜。同時(shí)了解vue以及angular等其他框架者優(yōu)先宠页。
初級(jí):
知道react常見優(yōu)化方案左胞,脫口而出常用生命周期,知道他們是干什么的举户。
知道react大致實(shí)現(xiàn)思路烤宙,能對(duì)比react和js控制原生dom的差異,能口噴一個(gè)簡(jiǎn)化版的react俭嘁。
知道diff算法大致實(shí)現(xiàn)思路躺枕。
對(duì)state和props有自己的使用心得,結(jié)合受控組件兄淫、hoc等特性描述屯远,需要說(shuō)明各種方案的適用場(chǎng)景。
以上幾點(diǎn)react替換為vue或angular同樣適用捕虽。
中級(jí):
能說(shuō)明白為什么要實(shí)現(xiàn)fiber,以及可能帶來(lái)的坑坡脐。
能說(shuō)明白為什么要實(shí)現(xiàn)hook泄私。
能說(shuō)明白為什么要用immutable,以及用或者不用的考慮备闲。
知道react不常用的特性晌端,比如context,portal恬砂。
能用自己的理解說(shuō)明白react like框架的本質(zhì)咧纠,能說(shuō)明白如何讓這些框架共存。
高級(jí):
能設(shè)計(jì)出框架無(wú)關(guān)的技術(shù)架構(gòu)泻骤。包括但不限于:
說(shuō)明如何解決可能存在的沖突問(wèn)題漆羔,需要結(jié)合實(shí)際案例。
能說(shuō)明架構(gòu)分層邏輯狱掂、各層的核心模塊演痒,以及核心模塊要解決的問(wèn)題。能結(jié)合實(shí)際場(chǎng)景例舉一些坑或者優(yōu)雅的處理方案則更佳趋惨。
4.熟練掌握react生態(tài)常用工具鸟顺,redux/react-router等。
初級(jí):
知道react-router器虾,redux讯嫂,redux-thunk,react-redux兆沙,immutable欧芽,antd或同級(jí)別社區(qū)組件庫(kù)。
知道vue和angular對(duì)應(yīng)全家桶分別有哪些挤悉。
知道瀏覽器react相關(guān)插件有什么渐裸,怎么用巫湘。
知道react-router v3/v4的差異。
知道antd組件化設(shè)計(jì)思路昏鹃。
知道thunk干嘛用的尚氛,怎么實(shí)現(xiàn)的。
中級(jí):
看過(guò)全家桶源碼洞渤,不要求每行都看阅嘶,但是知道核心實(shí)現(xiàn)原理和底層依賴。能口噴幾行關(guān)鍵代碼把對(duì)應(yīng)類庫(kù)實(shí)現(xiàn)即達(dá)標(biāo)载迄。
能從數(shù)據(jù)驅(qū)動(dòng)角度透徹的說(shuō)明白redux讯柔,能夠口噴原生js和redux結(jié)合要怎么做。
能結(jié)合redux护昧,vuex魂迄,mobx等數(shù)據(jù)流談?wù)勛约簩?duì)vue和react的異同。
高級(jí):
有基于全家桶構(gòu)建復(fù)雜應(yīng)用的經(jīng)驗(yàn)惋耙,比如最近很火的微前端和這些類庫(kù)結(jié)合的時(shí)候要注意什么捣炬,會(huì)有什么坑,怎么解決