最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

成都8K筆試題分享,看看你值不值8K?

2023-06-10 16:45 作者:蛋糕前端  | 我要投稿

今天剛收到一個(gè)前端筆試邀請(qǐng)(來(lái)自于中石油董小姐拍照地方的公司)


在這個(gè)環(huán)節(jié),你需要完成以下2個(gè)題目

題目一:匹配算法 match-algo

假設(shè)有兩組數(shù)組

const A = []
const B = []

他們的元素?fù)碛邢嗨频臄?shù)據(jù)結(jié)構(gòu)

A的元素

{
? ?name: "Alan",
? ?credit: 10,
? ?address: "10 Peter St.",
? ?skill: ["climbing", "cooking"]
},
{
? ?name: "Jack",
? ?credit: 21.0,
? ?address: "192 Kinsington Ave.",
? ?skill: ["programing"]
},
...

B的元素

{
? ?name: "Jessica",
? ?credit: 10,
? ?address: "82 Lafei St.",
? ?backpack: ["candy", "eyelash"]
},
{
? ?name: "Muse",
? ?credit: 26.3,
? ?address: "33 Udon Drive",
? ?backpack: ["torch"]
},
...

目標(biāo)

輸入任意的A和B數(shù)組,然后進(jìn)行匹配,匹配的輸出示意:

[
? ?{
? ? ? ?aName: "Alan"
? ? ? ?aCredit: 10,
? ? ? ?aAdress: "10 Peter St.",
? ? ? ?aSkill: ["climbing", "cooking"],
? ? ? ?bName: "Jessica",
? ? ? ?bCredit: 10,
? ? ? ?bAddress: "82 Lafei St.",
? ? ? ?bBackpack: ["candy", "eyelash"]
? ? ? ?creditSum: 20,
? ? ? ?composite: [
? ? ? ? ? ?AElement,
? ? ? ? ? ?BElement
? ? ? ?]
? ?}
? ?...
]
// 其中 AElement,BElement分別來(lái)自數(shù)組A和B的匹配元素。

匹配需要滿足如下規(guī)則:

  1. A數(shù)組的一個(gè)元素與B數(shù)組的一個(gè)元素的credit相等

  2. A數(shù)組的多個(gè)元素的credit之和與B元素的credit相等

  3. B數(shù)組的多個(gè)元素的credit之和與A元素的credit相等

同時(shí),你需要輸出未匹配的A數(shù)組元素和B數(shù)組元素,按照其數(shù)組元素原始的數(shù)據(jù)結(jié)構(gòu)輸出即可。

題目二:發(fā)布訂閱模式和自動(dòng)監(jiān)聽

本題的目標(biāo)分為3個(gè)Section

Section 1

subscribe函數(shù)允許輸入訂閱事件和callback,當(dāng)另一個(gè)函數(shù)publish隨著訂閱事件和一系列參數(shù)輸入被調(diào)用時(shí),應(yīng)該運(yùn)行正確callback,并產(chǎn)生正確的輸出。subscribe的訂閱事件應(yīng)該允許stringSymbol,同時(shí)為了方便,函數(shù)返回的handler可以直接進(jìn)行發(fā)布調(diào)用并允許傳參。要求之后需要實(shí)現(xiàn)的訂閱函數(shù)自然具有此能力,不再贅述。即

const pubA = subscribe("A", (name) => console.log(`helloworld ${name}`);
pubA("Candidate");
// 打印 helloworld Candidate

并且,你應(yīng)該實(shí)現(xiàn)once函數(shù),函數(shù)允許的輸入與subscribe函數(shù)相同,但只會(huì)響應(yīng)一次publish

Section 2

實(shí)現(xiàn)debounceSubscribe,函數(shù)允許輸入訂閱事件、callbackdebounceTimer,在publish第一次觸發(fā)后的debounceTimer毫秒內(nèi),不應(yīng)該再次被publish觸發(fā),但如果在debounceTimer毫秒內(nèi)有其它的publish調(diào)用,在此次調(diào)用的debounceTimer毫秒后,應(yīng)該正確調(diào)用publish并產(chǎn)生正確的callback的輸出。

實(shí)現(xiàn)unsubscribe函數(shù),允許輸入訂閱事件,對(duì)訂閱進(jìn)行注銷。注銷后,不再響應(yīng)發(fā)布事件,

改造你的publish函數(shù),使得其如果callback的返回是一個(gè)Promise對(duì)象時(shí),確保最后resolve的Promise鏈被調(diào)用。

注意你的內(nèi)存管理。

Section 3

實(shí)現(xiàn)一個(gè)reactive函數(shù),允許輸入一個(gè)Token或一個(gè)對(duì)象、數(shù)組、數(shù)字、字符串、布爾值,該Token可以是一個(gè)對(duì)象、數(shù)組、數(shù)字、字符串、布爾值的reference,如果輸入的是Token,你不應(yīng)該改變此Token的任何屬性。該函數(shù)應(yīng)該返回一個(gè)handle用于保存輸入?yún)?shù)的響應(yīng)式對(duì)象。

實(shí)現(xiàn)一個(gè)watch函數(shù),允許輸入一個(gè)Token,該Token必須是一個(gè)響應(yīng)式對(duì)象的reference,函數(shù)同時(shí)也允許輸入一個(gè)callback,該callback允許接收兩個(gè)參數(shù)oldValnewVal。

當(dāng)Token對(duì)應(yīng)的值改變時(shí),應(yīng)該運(yùn)行正確的callback并且其參數(shù)應(yīng)該等于Token對(duì)應(yīng)的舊值和新值。

當(dāng)輸入的Token不是一個(gè)由你的reactive函數(shù)生成的響應(yīng)式對(duì)象時(shí)請(qǐng)拋出錯(cuò)誤Cannot watch non-reactive object

你的watch函數(shù)仍需要考慮其callback返回Promise的情況,并與Section 2的要求一致。

注意

  • 單元測(cè)試用例和用例的Coverage也是考核因素之一,請(qǐng)合理設(shè)計(jì)測(cè)試用例,請(qǐng)?jiān)趩卧獪y(cè)試完全通過(guò)后再提交你的代碼。你可以使用新建Terminal來(lái)開啟新終端會(huì)話,請(qǐng)使用yarn test來(lái)啟動(dòng)你的測(cè)試

  • 請(qǐng)?jiān)谔峤磺斑\(yùn)行yarn coverage生成測(cè)試用例覆蓋報(bào)告

  • 問(wèn)題一中數(shù)組的元素的credit字段可能為小數(shù)

  • 請(qǐng)注釋你的代碼,良好的注釋可以幫助審查者閱讀你的代碼

  • 你可以在package.json中添加你需要的依賴

  • 請(qǐng)勿過(guò)于依賴輪子,這可能會(huì)影響你的筆試結(jié)果


成都8K筆試題分享,看看你值不值8K?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桓仁| 横山县| 庆元县| 泸西县| 马边| 枞阳县| 瑞安市| 淄博市| 清流县| 慈溪市| 胶州市| 洞口县| 东丽区| 修水县| 塘沽区| 宣化县| 衡阳县| 耒阳市| 靖远县| 二连浩特市| 浦县| 永宁县| 赣榆县| 金华市| 西吉县| 奉新县| 九寨沟县| 内黄县| 邻水| 沂南县| 德兴市| 扎赉特旗| 大安市| 同心县| 尚义县| 宁陵县| 红河县| 南皮县| 泗水县| 禄劝| 会泽县|