精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

TikTok 面試:四個你可能感興趣的前端題

開發 前端
最近,我的好朋友正在換工作,在網上收到了很多offer。其中之一就有來自一家名為 TikTok 公司的Offer,你可能非常熟悉該公司,也有可能不是很熟悉它。

最近,我的好朋友正在換工作,在網上收到了很多offer。

其中之一就有來自一家名為 TikTok 公司的Offer,你可能非常熟悉該公司,也有可能不是很熟悉它。

朋友在面試的時候,他們讓我的朋友當場寫代碼來實現4個復雜方法的功能。

1. 嘗試實現Promise.all API

Promise.all() 方法將可迭代的 Promise 作為輸入,并返回單個 Promise,該 Promise 解析為輸入 Promise 結果的數組。

當所有輸入的 Promise 都已解決,或者輸入的可迭代對象不包含 Promise 時,返回的 Promise 將得到解決。

它會在任何輸入Promise拒絕或非承諾拋出錯誤時立即拒絕,并將拒絕第一個拒絕消息/錯誤。

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

現在,自己實現了一個

Promise.myAll = (promises) => {
  return new Promise((rs, rj) => {
    // counter
    let count = 0
    // Storage results
    let result = []
    const len = promises.length


    if (len === 0) {
      return rs([])
    }


    promises.forEach((p, i) => {
      // Some array items may not be Promise and need to be converted manually
      Promise.resolve(p).then((res) => {
        count += 1
        // Collect the return value of each Promise 
        result[ i ] = res
        // Set the value of Promise to result, when all Promises are successful
        if (count === len) {
          rs(result)
        }
        // As long as one promise fails, the result is failure
      }).catch(rj)
    })
  })
}

進行測試如下:

const p1 = Promise.resolve(1)
const p2 = new Promise((resolve) => {
  setTimeout(() => resolve(2), 1000)
})
const p3 = new Promise((resolve) => {
  setTimeout(() => resolve(3), 3000)
})
const p4 = Promise.reject('err4')
const p5 = Promise.reject('err5')
// 1. All promise succeeded
const p11 = Promise.myAll([ p1, p2, p3 ])
  .then(console.log) // [ 1, 2, 3 ]
      .catch(console.log)


// 2. One promise failed
const p12 = Promise.myAll([ p1, p2, p4 ])
  .then(console.log)
      .catch(console.log) // err4


// 3. Two promises failed. The final output is err4. The return value of the first failure
const p13 = Promise.myAll([ p1, p4, p5 ])
  .then(console.log)
      .catch(console.log) // err4

2.設計一個可以設置過期日期的localstorage API

localstorage不會像cookie一樣自動過期,所以過期時間需要自己維護。

我的思路是:

使用setItem時,保存過期時間。使用getItem時,將時間與當前時間進行比較,如果大于當前時間,則返回該值,否則,需要通過removeItem移除該值,并返回null。

const storage = {
  prefix: 'fatFish',
  timeSign: '|fatFish|',
  setItem (key, value, time) {
    // Protect the key from being overwritten
    key = `${this.prefix}${key}`
    // There is no incoming time, the default expiration time is one month, of course, it can be other times or not set
    time = time ? new Date(time).getTime() : Date.now() + 24 * 60 * 60 * 31 * 1000
    // Constructs a string of the form 1646094676134|fatFish|"Front-end Fat Fish"
    window.localStorage.setItem(key, `${time}${this.timeSign}${JSON.stringify(value)}`)
  },
  getItem (key) {
    key = `${this.prefix}${key}`
    let value = window.localStorage.getItem(key)
    if (value) {
      let index = value.indexOf(this.timeSign)
      let time = +value.slice(0, index)
      // Determine if time has expired
      if (time > Date.now()) {
        value = JSON.parse(value.slice(index + this.timeSign.length))
      } else {
        value = null
        window.localStorage.removeItem(key)
      }
    }
    return value
  }
}

現在,進行測試

storage.setItem('name', 'front-end-fat-head', Date.now() + 100 * 1000) // fatFishname  1646095230191|fatFish|"front-end-fat-head"
storage.getItem('name') // front-end-fat-head
// 100s later
storage.getItem('name') // null
storage.setItem('obj', { name: 'front-end-fat-head', age: 100 }, Date.now() + 100 * 1000) // fatFishobj  1646095311366|fatFish|{"name":"front-end-fat-head","age":100}
storage.getItem('obj') // {name: 'front-end-fat-head', age: 100}

基本上符合題主的要求。當然,我們也可以處理異常情況,比如空間已滿、設置錯誤等。

3.找到兩個節點最近的公共父節點,包括節點本身

介紹:

oNode1 和 oNode2 位于同一文檔中,并且不會是同一節點。

function findCommonParent(oNode1, oNode2) {
  // fill here
}

相信看到這道題你一定會用遞歸,但是沒有明確的思路。

這個時候不要緊張。從問題中找出更有效的信息,盡量用更多的筆來畫(如果是現場面試,記得只帶一支鉛筆,有時候畫多了想法就出來了)。

1.1 兩個節點處于同一級別

讓我們嘗試畫出這兩個節點之間可能的關系。如下圖所示,它們的直接父節點就是答案。

1.2 兩個節點互為祖先

oNode1 是目標節點。當然,反過來也是一樣的。oNode2 也可以是 oNode1 的祖先。

1.3 兩個節點之間沒有關系

如下圖所示,兩個節點之間的距離很遠,看似沒有任何關系,但從其中任意一個向上查找,肯定能找到包含oNode1或oNode2的點。

1.4 遞歸實現版本

根據上面的分析,相信你很快就能寫出下面的代碼。

function findCommonParent(oNode1, oNode2) {
  // Cases 1 and 2
  if (oNode1.contains(oNode2)) {
    return oNode1
    // Cases 1 and 2
  } else if (oNode2.contains(oNode1)) {
    return oNode2
  } else {
    // Case 3, if you look up one of the nodes, you will find a common ancestor node
    return findCommonParent(oNode1.parentNode, oNode2)
  }
}

1.5 遍歷實現版本

遞歸很好理解,僅僅通過遍歷就可以實現嗎?事實上,遞歸問題往往可以通過遍歷來解決。

function findCommonParent (oNode1, oNode2) {
  // Using oNode2 here is the same
  // If a node contains another node, return directly, otherwise keep looking up
  while (!oNode1.contains(oNode2)) {
    oNode1 = oNode1.parentNode 
  }
  return oNode1
}

4.使用reduce實現map功能

這個問題會比較簡單,我們直接寫代碼吧。

Input: [1, 2, 3]
Output: [2, 4, 6]
Array.prototype.map2 = function (callback, ctx = null) {
  if (typeof callback !== 'function') {
    throw('callback must be a function')
  }
  return this.reduce((result, cur, index, array) => {
    return  result.concat(callback.call(ctx, cur, index, array))
  }, [])
}
let arr = [ 1, 2 ]
let arr2 = arr.map2(function (it, i, array) {
  console.log(it, i, array, this)
  return it * 2
}, { name: 'fatfish' })
console.log(arr2)

最后

看到這里,我想你已經明白了,如果還不明白的話,那就是我還沒有說清楚,下次,我爭取說的更加清楚一些。當然,如果你覺得這個內容對你有幫助的話,請記得點贊我,關注我,以便學習能夠內容,同時,也不會錯過我們的優質內容。

責任編輯:華軒 來源: web前端開發
相關推薦

2012-07-09 11:20:59

2009-07-27 17:59:27

博科資訊物流管理

2018-10-19 10:43:13

營銷物聯網IOT

2009-03-20 08:34:11

2015-02-10 10:08:59

JavaScript

2009-07-17 11:28:07

TwitterGoogle

2012-10-17 13:28:59

Windows 8

2017-09-05 13:55:07

windowsHTML5Chrome

2017-03-16 22:22:26

2009-06-25 09:11:58

鮑爾默雅虎搜索

2011-03-28 19:18:00

手機輻射iPhone應用

2010-09-17 10:31:14

VMworld 201

2025-02-27 08:33:13

2015-03-18 10:33:27

2021-05-10 14:50:03

.NETRust語言

2021-09-26 22:23:45

iPhone 13安卓手機

2011-01-27 11:48:44

職場

2024-05-23 17:16:36

2012-03-26 21:56:58

WP

2024-11-20 12:21:37

點贊
收藏

51CTO技術棧公眾號

好看的日韩精品视频在线| 亚洲国产日韩欧美综合久久| 一区国产精品| 精品国自产拍在线观看| 亚洲精品护士| 在线观看日韩av| 曰本三级日本三级日本三级| 欧美aa在线观看| 中文字幕av在线一区二区三区| 91在线观看免费高清| 91浏览器在线观看| 99久久婷婷国产综合精品电影√| 精品久久一区二区三区| 欧美一级片中文字幕| 操你啦在线视频| 久久蜜桃av一区二区天堂| 91亚洲精品在线| 国产精品免费精品一区| 欧美在线首页| 中文字幕亚洲一区| aaaa黄色片| 亚洲在线资源| 在线观看区一区二| 久久综合九色综合88i| 久热国产在线| 欧美国产97人人爽人人喊| 国产精品一区二区三区在线观 | 亚洲v在线看| 亚洲精品视频免费| 潘金莲一级淫片aaaaa| 成人涩涩视频| 欧美性jizz18性欧美| 免费看日本黄色| 日本电影在线观看网站| 久久亚洲精华国产精华液| 福利视频久久| www.日韩高清| 国产无套在线观看| 99香蕉久久| 制服丝袜激情欧洲亚洲| 久久综合伊人77777麻豆最新章节| sqte在线播放| 亚洲一区二区三区中文字幕在线 | 国产女人18毛片水真多18| 99久久99九九99九九九| 欧美日韩精品一区二区天天拍小说 | 好吊视频一区二区三区四区| 久久久国产91| 久久久久人妻一区精品色| 日韩电影二区| 中国人与牲禽动交精品| 亚洲av毛片基地| 成人毛片免费看| 在线播放精品一区二区三区 | 亚洲欧美日韩三级| 成人黄色在线| 欧美日本韩国一区二区三区视频| 亚洲一级片网站| 99久久久国产精品无码网爆| 欧美视频免费看| 欧美三级资源在线| xxxx一级片| 欧美aaaaaaa| 国产精品成人网| 欧美 日韩 国产 在线观看 | 成人av免费网站| 5566av亚洲| 国产麻豆一精品一男同| 九一九一国产精品| 国产欧美日韩最新| 在线观看免费高清视频| 快she精品国产999| 欧美亚洲国产精品| 免费黄色网址在线| 久久成人国产| 国产不卡在线观看| 波多野结衣一区二区三区在线 | 色综合天天色综合| 成人在线免费av| 欧美群妇大交群的观看方式| 国产喷水theporn| 免费一级欧美在线观看视频| 欧美日韩一级视频| 无限资源日本好片| 五月亚洲婷婷| 亚洲黄色片网站| 亚洲av无码一区二区三区网址 | 久久精品aaaaaa毛片| 水莓100在线视频| 国产午夜精品久久久久久免费视| 日本在线观看一区二区| 日韩免费啪啪| 一区二区成人在线观看| 日本福利视频一区| 波多野结衣亚洲一二三| 欧美亚洲国产一卡| 在线视频观看一区二区| 波多野结衣欧美| 国产一区二区日韩| 青娱乐免费在线视频| 亚洲经典自拍| 国产精品久久久久久久久| 91尤物国产福利在线观看| 国产精品一区二区在线看| 国产成人看片| 成人精品福利| 亚洲一区二区三区四区不卡 | 蜜臀va亚洲va欧美va天堂| 成人午夜小视频| 污视频在线免费观看| 国产欧美日韩激情| 成人毛片100部免费看| 亚洲精品成人图区| 欧美一区二区视频在线观看2020| 蜜桃色一区二区三区| 国产精选一区| 久久97精品久久久久久久不卡| 天天操夜夜操视频| 欧美香蕉爽爽人人爽| 久久成人免费网站| 国产精品视频免费观看| 国产理论电影在线观看| 亚洲综合一二三区| 最新中文字幕免费视频| 精品视频高潮| 久久久久北条麻妃免费看| 日本a级c片免费看三区| 国产成人综合自拍| 亚洲国产另类久久久精品极度| 三级网站视频在在线播放| 色老头久久综合| 久久久久久久穴| 99视频精品全国免费| 欧美一级淫片丝袜脚交| 精品人妻一区二区三区日产乱码| 国产亚洲制服色| 成年人视频大全| 国产精品一区二区精品视频观看| 亚洲精品国精品久久99热| 中文字幕第28页| 精品一区二区影视| 亚洲国产高清国产精品| 碰碰在线视频| 亚洲电影免费观看高清完整版在线观看 | 日韩欧美在线影院| 国产一区二区三区精品在线| 久久久久中文| 久久福利电影| free性护士videos欧美| 日韩一区二区电影在线| aa一级黄色片| 99精品视频免费| 国产精品日韩欧美一区二区| av免费看在线| 91精品国产综合久久国产大片| 在线观看日本中文字幕| 亚洲欧美网站| 99影视tv| www555久久| 亚洲电影免费观看高清完整版在线| 欧美毛片在线观看| 国产成人午夜电影网| 黄色免费高清视频| 国产一区二区三区黄网站| 北条麻妃99精品青青久久| 在线观看xxxx| 国产精品久久久久久久裸模| 国产三级三级三级看三级| 欧美色网址大全| 国产区精品视频| 日本在线视频观看| 91精品国产免费久久综合| 国产男女猛烈无遮挡在线喷水| 美女精品自拍一二三四| 亚洲国产一区二区三区在线| 成人黄色图片网站| 神马国产精品影院av| 国产无遮挡又黄又爽又色视频| 中文字幕一区二区三区精华液| 久久成年人网站| 亚洲国产精品成人| 国产精品一区二区a| 另类视频在线| 日韩禁在线播放| 天天干天天操天天操| 国产精品久久看| 久久久久久久久久久久国产精品| 亚洲黄色大片| 欧美日韩免费高清| 精品国模一区二区三区| 日韩一区二区三区xxxx| 精品久久久中文字幕人妻| 亚洲第一成年网| 久久成人激情视频| 精品一区二区三区免费视频| 国产九九九九九| av中文一区| 国产一区二区在线免费| 三级资源在线| 亚洲深夜福利在线| 国产日韩免费视频| 欧美日韩精品中文字幕| 免费看日本黄色片| 久久国产生活片100| 亚洲熟妇无码一区二区三区导航| 天堂99x99es久久精品免费| 国产成人鲁鲁免费视频a| 黄av在线播放| 日韩极品精品视频免费观看| 一区二区三区日| 亚洲第一福利一区| 国产成人精品视频免费| 国产精品2024| 日韩 国产 一区| 亚洲综合精品| 国产爆乳无码一区二区麻豆| 国产精品片aa在线观看| 99高清视频有精品视频| 浪潮色综合久久天堂| 欧美激情精品久久久久| 黄色av免费在线观看| 亚洲激情视频在线| av免费在线不卡| 欧美性色黄大片手机版| 国产成人精品a视频一区| 中文字幕在线观看不卡视频| 9.1成人看片| 国产精品99久| 天天干在线影院| 亚洲一本视频| 久久久无码中文字幕久...| 精品久久中文| 国内精品视频免费| 精品一区二区三区中文字幕| 国产精品激情av电影在线观看| 三级资源在线| 美日韩在线视频| 午夜视频在线| 日韩中文字幕在线看| 青青色在线视频| 欧美精品一区二区精品网| 97超碰人人草| 欧美日韩你懂得| 久久精品五月天| 午夜精品免费在线| a级片在线观看免费| 亚洲影院理伦片| 国产大学生自拍| 亚洲欧洲美洲综合色网| 一级肉体全黄裸片| 久久久一区二区| brazzers精品成人一区| 成人国产精品免费观看视频| 中文字幕在线观看视频www| 国产精品一区二区久久不卡| 亚洲精品国产一区二区三区| 蜜桃av一区二区| 天天干天天操天天做| 另类成人小视频在线| 一级片视频免费观看| 日韩电影免费在线| 污网站免费在线| 蜜桃一区二区三区四区| 亚洲国产精品三区| 美女www一区二区| 最新免费av网址| 国产一区二区三区免费| 日本美女久久久| 成人综合婷婷国产精品久久| 亚洲最大视频网| www.亚洲精品| 人妻在线日韩免费视频| 久久众筹精品私拍模特| 欧洲美一区二区三区亚洲 | 在线影院国内精品| 国产真人无遮挡作爱免费视频| 在线看一区二区| 中文字幕资源网| 欧美一区二区三区啪啪| 精品人妻少妇AV无码专区| 精品国产乱码久久久久久老虎| 韩国av在线免费观看| 亚洲韩国日本中文字幕| 九色在线免费| www.欧美三级电影.com| 在线中文字幕视频观看| 热久久这里只有| www.一区| 99re在线国产| 亚欧日韩另类中文欧美| 亚洲精品一区二区三区蜜桃久| 国产精品黑丝在线播放| 91精品国产吴梦梦| 亚洲在线黄色| www.99r| 成人午夜在线视频| 性欧美13一14内谢| 中文字幕亚洲在| www.天天色| 欧美影院午夜播放| 国产激情视频在线播放| 亚洲美女精品久久| 黄色成人影院| 91精品国产精品| 欧美一区二区三区婷婷| 亚洲影院高清在线| 欧美少妇性xxxx| 成人免费观看cn| 日本aⅴ亚洲精品中文乱码| 又色又爽又黄18网站| 久久久99精品免费观看| 九九热最新地址| 精品国产老师黑色丝袜高跟鞋| 97在线视频人妻无码| 日韩精品在线影院| 超碰人人在线| 国产精品成av人在线视午夜片| 国产精品久久久久久久久久白浆| 日韩欧美视频一区二区三区四区| 欧美粗暴jizz性欧美20| av免费网站观看| 成人成人成人在线视频| 精品在线观看一区| 婷婷综合五月天| 蜜臀久久99精品久久久| 色偷偷偷综合中文字幕;dd| 99re6在线精品视频免费播放| 国产精品无码专区在线观看| 激情小说一区| 肉大捧一出免费观看网站在线播放 | √天堂中文官网8在线| 一本大道久久a久久精二百| 亚洲第一免费视频| 精品国模在线视频| 日本另类视频| 久久久久久精| 亚洲天堂激情| 国内av一区二区| 国产精品久久久久影视| 欧美黄色一级大片| 亚洲欧美日韩第一区| 国产乱码精品一区二三赶尸艳谈| 91久久在线观看| 日本a级不卡| 爱情岛论坛亚洲首页入口章节| 粉嫩绯色av一区二区在线观看| 欧美成人精品欧美一级私黄| 欧美日韩不卡在线| 99re在线视频| 国产精品一区=区| 欧美伦理影院| 亚洲精品怡红院| 中文字幕第一区二区| 一级久久久久久| 亚洲欧美综合精品久久成人| 成人三级高清视频在线看| 高清视频一区二区三区| 久久精品久久久| 国产免费无码一区二区| 亚洲综合色区另类av| 亚洲av无码国产综合专区| 欧美激情中文字幕在线| 98视频精品全部国产| 日韩视频免费播放| 成人美女在线观看| 日韩精品一区三区| 亚洲国模精品一区| 最近在线中文字幕| 久久人人爽爽人人爽人人片av| 日韩国产高清影视| 亚洲一二三精品| 91精品国产综合久久精品性色| 黄色网址在线免费观看| www.久久艹| 久久国产精品久久久久久电车| 成人黄色免费网址| 欧美日韩夫妻久久| 在线视频中文字幕第一页| 7777精品久久久大香线蕉小说| 韩国在线视频一区| 大地资源二中文在线影视观看| 欧美香蕉大胸在线视频观看| 欧美r级在线| 电影午夜精品一区二区三区| 亚洲成人资源| 欧美日韩高清丝袜| 7777精品久久久大香线蕉| av中文资源在线资源免费观看| 蜜桃免费一区二区三区| 日韩精品电影在线| 日本黄色免费片| 亚洲白拍色综合图区| 成人在线免费电影网站| 免费看黄色a级片| 中文字幕欧美三区| 午夜久久久久久久久久| 国产成人高潮免费观看精品| 亚洲成av人电影| 天天操天天舔天天射| 日韩免费观看高清完整版在线观看|