求职刷题神器

funit.cn

讨论区 > 求职面经 > 字节跳动前端视频面试 可能会凉

字节跳动前端视频面试 可能会凉

西柚纳纳米
发布于2021-02-24 16:53:20 103浏览

一共两面,第一面过了,感觉第二面凉凉,说如果还有面试,hr会通知你的。

1.实现一个repeat方法,要求如下:


function repeat(func, times, wait) {
    return (arg) => {
        for (let index = 1; index <= times; index++) {
            setTimeout(() => {
                func(arg)
            }, index * wait)
        }
    }
}


2.实现一个函数,输入是两个二进制数的字符串,输出两个数相加后的十进值结果。


 add('01', '10') = 3


3.从左往右看一棵树,输出看到的节点,我的想法是层序遍历,然后输出每一层的第一个数,代码也实现了


// 下面是面试官给的数的结构
interface Node {
//   left: Node;
//   right: Node;
//   value: string;
// }
// 我实现的代码
function levelNode(node,level){
  this.node = node
  this.level = level
}

const fn = (node) =>{
  const queue = []
  let result = []
  let ans = []
  let level = 0
  if(!node) {
    retun result
  }
  queue.push(new levelNode(node,0))
  while(queue.length){
    let tempNode = queue.shift()
    if(!result[tempNode.level]){
      result.push([])
    }
    result[tempNode.level].push(tempNode.level.value)
    if(tempNode.node.left){
      queue.push(new levelNode(tempNode.node.left,tempNode.level + 1))
    }
    if(tempNode.node.right){
      queue.push(new levelNode(tempNode.node.right,tempNode.level + 1))
    }
  }
  for(let i = 0; i < result.length; i++){
    ans.push(result[i][0])
  }
  return ans
}


4.实现数组的扁平化

这个比较简单,代码如下


const flat = (arr,result = []) => {
  if(Array.isArray(arr)){
    for(let i = 0; i < arr.length; i++){
      flat(arr[i],result)
    }
  }else{
    result.push(arr)
  }
  return result
}


let temp =[1, [2, [3, [4]]]]

console.log(flat(temp))


5.第五题就太有难度了


// 题目如下
fs.readFile('1.txt', (err, data) => {});

const newReadFile = promisify(fs.readFile);

newReadFile('1.txt')
  .then(data => {})
  .catch(err => {});

promisify

利用promisify函数封装fs.readFile函数,封装成promise的形式,请实现promisify


最后我问面试官我有哪些不足,总的来说,就是:写代码的时候,如果卡克了,抓紧时间说,不会的赶紧说,因为面试官想知道你会什么,如果你一直卡在不会的上面,那么时间就浪费了,你会的东西就展现不出来了。

本文首次发布于趣IT ,转载请注明出处,谢谢合作

字节跳动前端视频面试 可能会凉

全部评论0

成为第一个评论的人

还可以上传7

表情
  • 快速扫码进群
    加入职友圈
下一步
知道了