成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

有效評(píng)估JS開(kāi)發(fā)者軟實(shí)力的十條面試題

開(kāi)發(fā) 前端
為了順利的再進(jìn)職場(chǎng),最近一個(gè)月來(lái)都在做有目的訓(xùn)練,訓(xùn)練自己的實(shí)操能力(因?yàn)檫@是我的一個(gè)弱項(xiàng)——前端項(xiàng)目經(jīng)驗(yàn)薄弱,加上在特長(zhǎng)上,編碼和分析更傾向后者),而不是任意的自由的學(xué)習(xí)。

 為了順利的再進(jìn)職場(chǎng),最近一個(gè)月來(lái)都在做有目的訓(xùn)練,訓(xùn)練自己的實(shí)操能力(因?yàn)檫@是我的一個(gè)弱項(xiàng)——前端項(xiàng)目經(jīng)驗(yàn)薄弱,加上在特長(zhǎng)上,編碼和分析更傾向后者),而不是任意的自由的學(xué)習(xí)。然而,在具體的學(xué)習(xí)主題上,除了參考和對(duì)比常規(guī)面試題,找出一些基礎(chǔ)主題外,對(duì)什么是“最有價(jià)值”的學(xué)習(xí)主題,我沒(méi)有指引。

其實(shí)我一真很相信自己的直覺(jué),但是難免有盲區(qū),和價(jià)值沖突,我不清楚明天面對(duì)面的考官他希望我具備什么能力。我的擔(dān)心不是沒(méi)有原因的,因?yàn)檐浖_(kāi)發(fā)技術(shù)崗位向來(lái)都是既難招亦難找,企業(yè)不知道怎么考核應(yīng)聘者實(shí)力,求職者不知道學(xué)什么最重要。

這里邊有一個(gè)推理,在面試和通過(guò)面試的情景里,假設(shè)把企業(yè),和求職者分兩類:

  • 企業(yè) 分為懂得評(píng)估技術(shù)崗位(C1),和缺乏評(píng)估技術(shù)的企業(yè)(C2)
  • 求職者分為有實(shí)力但不懂求職技巧的(P1),實(shí)力很弱但是刷題是高手(P2)

那么會(huì)出現(xiàn)四種面試情況:C1P1 C1P2 C2P1 C2P2

如果假設(shè)成立,那么通過(guò)面試的只有 C1P1 和C2P2,但是真正算成功面試只有C1P1,因?yàn)橹挥羞@種結(jié)合才是良性的。

要?jiǎng)?chuàng)造一次良性的結(jié)合,關(guān)鍵點(diǎn)其實(shí)也很明顯了,就是 企業(yè)掌握了評(píng)估技術(shù)崗位候選者能力的技術(shù),包括考核的目標(biāo)(T),和考核的方法;同時(shí),求職者通過(guò)掌握同樣的學(xué)習(xí)目標(biāo)(T)和學(xué)習(xí)方法,更有效提高的水平。

這里 關(guān)于T的認(rèn)識(shí) 是重中之重,它是對(duì)招聘者和求職者都極具意義的一點(diǎn)。最近在研習(xí) 函數(shù)式編程過(guò)程中,從Eric Elliott(《Programming JavaScript Applications》一書的作者)的這篇文章《 10 Interview Questions Every JavaScript Developer Should Know 》中,找到了一些相關(guān)有價(jià)值的觀點(diǎn),嘗試轉(zhuǎn)譯出來(lái)。

Table of Contents

10 Interview Questions Every JavaScript Developer Should Know

我寫過(guò)一篇文章叫《 Why Hiring is So Hard in Tech 》, 其中給出評(píng)估 技術(shù)崗位候選者 的一些 常規(guī)原則,以什么是應(yīng)該和不應(yīng)該的形式羅列出來(lái),其中有一條:

The best way to evaluate a candidate is a pair programming exercise.

評(píng)估候選者最有效的方法是「和候選者結(jié)伴的完成編程練習(xí)」。

意思是說(shuō),與候選人坐一起,讓候選人敲鍵盤,你在旁邊多看多聽(tīng),少說(shuō)。例如演示例如從Twitter API中提取tweet數(shù)據(jù)項(xiàng),并在時(shí)間軸上顯示出來(lái)。

雖然結(jié)伴練習(xí)很有價(jià)值,但是不存在一個(gè)單獨(dú)的練習(xí)能決斷一切,面對(duì)面交談(的面試)也是一個(gè)非常有用的工具 [em] 。不過(guò), 不要浪費(fèi)時(shí)間詢問(wèn)語(yǔ)法或語(yǔ)言怪癖 。你需要看到大局,詢問(wèn)有關(guān)架構(gòu)設(shè)計(jì)(architecture)和編程范型(paradigms) 等對(duì)整個(gè)項(xiàng)目有重大影響的經(jīng)驗(yàn)知識(shí)。

EM:臨場(chǎng)小練習(xí)能測(cè)試到能力(種類)是有限的,有很多深層經(jīng)驗(yàn)或知識(shí)只能通過(guò) 別的手段探測(cè) 到,例如交談,主題試題;而且沒(méi)有很具體的答案(檢測(cè)標(biāo)準(zhǔn)),例如怎么檢測(cè)候選人 功能編程 的能力?

語(yǔ)法細(xì)節(jié)和API功能特性的知識(shí) 是很容易搜索的,但對(duì)于像 軟件工程的智慧或 JavaScript開(kāi)發(fā)人員 從經(jīng)驗(yàn)中獲得的 范型特性和習(xí)慣用法 這些經(jīng)驗(yàn)知識(shí),是很難短時(shí)間通過(guò)搜索學(xué)到的。

EM:這里提到了重點(diǎn),作為招聘方,測(cè)試 候選人 的那些 不能在半小時(shí)查資料能習(xí)得的技能,求職者同樣要明白這個(gè)道理。

EM:當(dāng)然,作者提到的工程智慧,和編程經(jīng)驗(yàn)具體指什么,有待研發(fā)

鑒于以上結(jié)論,對(duì)于Web開(kāi)發(fā)和Javascript方面,我認(rèn)為以下十個(gè)問(wèn)題用在面試中,能比較有效評(píng)估候選人開(kāi)發(fā)實(shí)力:

(EM:我不完成同意作者的這十條,并且翻譯上有所增刪,觀點(diǎn)和內(nèi)容都有,根據(jù)個(gè)人的看法,實(shí)則是我自己將這些問(wèn)題回答了一遍)

第一,你知道哪兩種 編程范型對(duì) JavaScript開(kāi)發(fā)者來(lái)很有用?

JavaScript 是一種多范型( multi-paradigm )編程語(yǔ)言,支持過(guò)程式編程,面向?qū)ο缶幊蹋秃瘮?shù)式編程,三種(實(shí)質(zhì)兩種)編程范型。JavaScript通過(guò) 原型繼承( prototypal inheritance) 支持面向?qū)ο缶幊蹋?函數(shù)作值(所謂一等公民)支持函數(shù)式編程。

第二,什么是函數(shù)式編程?

函數(shù)式編程是使用 純函數(shù)(或數(shù)學(xué)函數(shù))構(gòu)造 程序的一種編程范型,純函數(shù)的優(yōu)點(diǎn)是沒(méi)有副作用(避免使用共享數(shù)據(jù) shared state),和不使用可變數(shù)據(jù)(mutable data) [em] ;

Lisp(1958年)是最早支持函數(shù)式編程的語(yǔ)言之一,并且受到了lambda演算的極大啟發(fā)。Lisp和很多Lisp家族語(yǔ)言至今仍在流行。

JavaScript 支持函數(shù)式編程,并且越來(lái)越流行,例如JavaScript社區(qū)流行的閉包,高階函數(shù),函數(shù)作參數(shù)傳遞都是 重要表現(xiàn)。

EM:純函數(shù)的優(yōu)點(diǎn)有待實(shí)證,純函數(shù)(功能)和類對(duì)象的區(qū)別有待分析

第三,傳統(tǒng)類繼承和原型繼承的區(qū)別在哪里?

傳統(tǒng)類繼承是說(shuō),類(class)是「一個(gè)功能」的模板或設(shè)計(jì)樣板(blueprint),它可以用來(lái)派生子類(子類繼承父類所有功能,并可以有所擴(kuò)展),和創(chuàng)建多個(gè)對(duì)象實(shí)例(使用new操作); 通過(guò)類繼承的設(shè)計(jì)可實(shí)現(xiàn)程序的一種精致的分類層次結(jié)構(gòu)(hierarchical class taxonomies)。

但是,由于子類和父類繼承關(guān)系是一種白箱復(fù)用(父類不是完全封裝,對(duì)子類可見(jiàn)),最終的類層次結(jié)構(gòu)會(huì)高度耦合,這是類繼承最大的問(wèn)題。

與類繼承不同,原型繼承沒(méi)有類概念(類是一個(gè)抽象的功能的“模子”),一切都是對(duì)象實(shí)例。「功能代碼繼承復(fù)用」通過(guò) 直接連接兩個(gè)對(duì)象實(shí)例 實(shí)現(xiàn),例如通過(guò)一個(gè)特殊的對(duì)象工廠函數(shù)( factory functions)生成新復(fù)用的對(duì)象,或復(fù)制(Object.create())。一個(gè)「目標(biāo)新對(duì)象實(shí)例」 [em]可以將需要的功能小對(duì)象直接連入其中來(lái)實(shí)現(xiàn)復(fù)用功能,這是一種非常靈活的代碼復(fù)用方法。

EM:無(wú)論何種代碼復(fù)用技術(shù)(類繼承,或是原型組合,或是其它),目標(biāo)任務(wù)都是生成新的對(duì)象實(shí)例,實(shí)現(xiàn)軟件功能的開(kāi)發(fā)。

在 JavaScript中,原型繼承有以下幾種應(yīng)用表現(xiàn):

  • 原型鏈(concatenative inheritance),
  • 原型委托(prototype delegation),
  • 功能繼承/閉包(functional inheritance),
  • 對(duì)象構(gòu)成(object composition);

第四,函數(shù)式編程(FP)和面向?qū)ο缶幊蹋∣O)各自優(yōu)點(diǎn)和不足是什么?

FP和OOP作為完成編程這個(gè)「任務(wù)」的「工具」,有各自的適用和優(yōu)點(diǎn)與不足。

OOP的優(yōu)點(diǎn)

直觀,對(duì)象由數(shù)據(jù)和方法組成的概念很容易理解,也容易解釋方法調(diào)用的意義。OOP傾向于使用命令式風(fēng)格,而不是聲明式風(fēng)格,命令式風(fēng)格讀起來(lái)像是一組供計(jì)算機(jī)遵循的直接指令,很形象。

OOP的缺點(diǎn)

OOP通常依賴于共享狀態(tài)。對(duì)象和行為通常被綁定在同一個(gè)實(shí)體上,可以被任意數(shù)量的順序不確定的函數(shù)隨機(jī)訪問(wèn),這可能會(huì)導(dǎo)致不希望的行為,比如競(jìng)態(tài)事件(race conditions)。

FP的優(yōu)點(diǎn)

使用 純函數(shù)作為功能單元,程序員可以避免任何共享狀態(tài)或副作用 [em] ,從而消除多個(gè)功能競(jìng)爭(zhēng)相同資源所導(dǎo)致的bug。與OOP相比,F(xiàn)P的大功能的復(fù)合方式,例如所謂的無(wú)參數(shù)風(fēng)格(point-free ),大大簡(jiǎn)化復(fù)雜功能的組合方式,和改善代碼可重用方式。

EM:使用和不使用共享狀態(tài)都是技術(shù),重點(diǎn)是那個(gè)「功能的實(shí)現(xiàn)」的任務(wù);就是為什么一定要使用中間狀態(tài)?「純函數(shù)」和「類對(duì)象」是兩種編程范式最大「工具」區(qū)別。

另外,F(xiàn)P 傾向于 聲明式和符號(hào)指代(denotational)的功能命名風(fēng)格 [em] ,F(xiàn)P不傾向通過(guò)詳細(xì)說(shuō)明功能操作的步驟,而是關(guān)注「功能要做什么」。這為重構(gòu)和性能優(yōu)化留下了巨大的空間,它甚至允許你用更高效的算法替換整個(gè)舊算法,而代碼更改很少(例如,memoize,或者用惰性求值來(lái)代替eager 求值)。

EM:就是更傾向使用名詞, 而不是動(dòng)詞表達(dá)「功能」

EM:兩種工具思想?yún)^(qū)別在于,F(xiàn)P是關(guān)注功能的形式和邏輯關(guān)系,OOP關(guān)于功能實(shí)現(xiàn)的數(shù)據(jù)的處理

使用純函數(shù)實(shí)現(xiàn)的計(jì)算功能也很容易移植到多處理器,或分布式計(jì)算集群環(huán)境上,而不用擔(dān)心線程資源沖突、競(jìng)態(tài)事件(race conditions)等。

FP的缺點(diǎn)

過(guò)度使用FP風(fēng)格的代碼(例如大量使用無(wú)參數(shù)式風(fēng)格分割和組合 大功能 )可能會(huì)降低代碼可讀性,因?yàn)樯傻拇a通常很抽象,它簡(jiǎn)潔且不夠具體。

與函數(shù)式編程相比,習(xí)慣OOP和命令式編程的人會(huì)更多,更深厚,因此,即使是函數(shù)式編程中的常見(jiàn)習(xí)慣用法也會(huì)讓新團(tuán)隊(duì)成員感到困惑。

另外,F(xiàn)P的學(xué)習(xí)曲線要比OOP陡峭得多,因?yàn)镺OP的廣泛流行使得OOP的語(yǔ)言和學(xué)習(xí)材料變得更加對(duì)話化,而FP的語(yǔ)言則更加學(xué)術(shù)化和形式化。

總的來(lái)說(shuō),OOP使用共享狀態(tài)「 實(shí)現(xiàn)復(fù)合功 」能是有害的,雖然它很直觀;高度使用OOP的codebase比較“頑固”和脆弱,難改又錯(cuò)誤百出;FP除了沒(méi)有OOP的這些不足外,程序比較易讀易維護(hù),只是適應(yīng)FP風(fēng)格需要一些時(shí)間。

第五,在什么場(chǎng)景下最適合使用 類繼承?

幾乎沒(méi)有適用的場(chǎng)景, 類繼承能免則免,除非只有一層的繼承;

第六,在什么場(chǎng)景下最適合使用 原型繼承?

在JS中,當(dāng)需要復(fù)用代碼時(shí)都幾乎可以使用原型繼承,當(dāng)然包括不適用函數(shù)式復(fù)用(FP也提供了復(fù)用機(jī)制)的時(shí)候。JS中有三類的原型繼承:

  • 第一,委托(Delegation),例如使用原型鏈;
  • 第二,接合(Concatenative),例如mixins, `Object.assign()`;
  • 第三,創(chuàng)建新(Functional),例如閉包;

每一類 原型繼承都有各自適用場(chǎng)景,不過(guò),它們都?xì)w結(jié)為 構(gòu)成(composition)復(fù)用,是一種 has-a or uses-a or can-do 的關(guān)系,與類繼承的 is-a關(guān)系相反。

第七,“對(duì)象構(gòu)成優(yōu)于類繼承”是什么意思?

第八,什么是雙向綁定和單向數(shù)據(jù)流,它們有什么不同?

第九,單體架構(gòu)和微構(gòu)架的優(yōu)點(diǎn)和不足是什么?

第十,什么是異步編程,為什么說(shuō)它對(duì)Web開(kāi)發(fā)很重要?

 

責(zé)任編輯:張燕妮 來(lái)源: 推酷
相關(guān)推薦

2009-04-07 11:24:16

Java開(kāi)發(fā)注意事項(xiàng)

2011-05-16 16:11:21

java

2018-02-01 16:00:42

百度Python面試題

2012-09-28 09:12:39

移動(dòng)Web

2017-03-24 09:37:45

前端開(kāi)發(fā)者JavaScript面試題

2018-05-01 08:24:40

Python面試題開(kāi)發(fā)

2023-11-13 07:37:36

JS面試題線程

2022-10-21 16:11:52

數(shù)據(jù)治理安全IT

2012-05-15 01:38:18

編程編程技巧編程觀點(diǎn)

2025-05-21 00:10:00

2022-03-14 23:01:15

網(wǎng)絡(luò)安全云安全架構(gòu)

2022-05-31 17:36:25

技術(shù)面試編程

2009-05-19 10:14:44

Innodb字段MySQL

2012-03-06 16:01:04

項(xiàng)目管理

2025-03-19 08:21:15

2025-05-15 20:55:38

2012-08-02 09:14:13

編程戒律

2023-09-18 13:45:52

2017-04-11 09:33:12

JS面試題應(yīng)聘者

2016-12-26 15:27:13

大數(shù)據(jù)數(shù)據(jù)分析數(shù)據(jù)分析工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 四虎影视免费观看 | 亚洲社区在线 | 免费在线黄 | 欧美综合国产精品久久丁香 | 国产在线中文字幕 | 在线观看国产91 | 成av在线 | 久久久91精品国产一区二区三区 | www.久久久久久久久久久 | 超碰成人av | 国产精品亚洲视频 | 97在线超碰 | 国产欧美精品一区二区三区 | 福利视频一二区 | 国产在视频一区二区三区吞精 | 久久这里有精品 | 天天影视亚洲综合网 | 久久精品国内 | 日韩伦理一区二区 | 国产免费福利小视频 | 日韩欧美中文 | 国产精品久久久久久亚洲调教 | 欧美一区二不卡视频 | 成人激情视频免费观看 | 天天综合网天天综合色 | 国产精品视频久久久 | 99小视频 | 91极品欧美视频 | 狠狠做深爱婷婷综合一区 | 亚洲国产精品视频 | 久久久久久久一区 | 国产精品综合网 | 一区亚洲 | 亚洲精品 在线播放 | 亚洲 欧美 日韩 精品 | 中文字幕国产 | 91电影 | 国产电影一区二区 | 亚洲国产视频一区 | 韩日av在线| 免费观看视频www |