Bytedance round 1.

1.高阶组件是什么?你设计这么一个水印组件,为什么用高阶组件。组件设计思路。
2.说一下水印组件的业务场景。如果有人要在控制台里通过删除dom的方式去除水印,怎么防范?(监听键盘事件F12禁止打开控制台假设用户在控制台中通过disable js来禁用js,监听事件无效了,又该怎么防范?(说了一下思路,比如点击disable js这个动作本身是可以监听到的,那么可以监听这个动作并且拦截,然后可以做一些自定义的操作,比如直接关闭掉页面)
3.Dvajs和umijs区别。
4.Dvajs中redux用处(展开聊聊状态管理的必要性和合理使用不滥用的思考)
5.React和redux是独立的,怎么关联起来使用(react-redux中的connect和provider作用)
6.react-redux的性能问题(?)
7.this指向问题(箭头函数定义时确定,普通函数执行时确定)

class Student {
  constructor(name) {
    this.name = 'Tom'
  }

  getInfo() {
    return {
      name: 'Jerry',
      getName() {
        return this.name
      }
    }
  }
}
let s = new Student()
console.log(s.getInfo().getName()) // Jerry
// 如何打印出Tom,只能修改class中代码(箭头函数,展开说一下this指向的问题)

8.obj实例化,修改属性和重新实例化的指针问题

function changeObjProperty(o) {
  o.siteUrl= 'http://a.com'
  o = new Object()
  o.siteUrl = 'http://b.com'
}

let s = new Object()
changeObjProperty(s)
console.log(s.siteUrl)

9.0.1 + 0.2 !== 0.3(精度丢失问题:IEEE 754。如何解决?比如按小数点拆分整数部分与小数部分,分别按位相加,注意进位处理。)
10.简述一下SPA与前端路由(扩展讲一下ajax -> pjax -> history api的pushState, popState, replaceState。浏览器url的出栈入栈与这些api的关系,路由映射管理与组件渲染。)
11.编码:

/* 
实现一个randomString函数,返回一个数组,该数组内有一千个字符串,每串字符串为6位数0-9的随机验证码,不可重复。
*/
function randomString() {
    const resArr = [];
    const tempResMap = {}
    for(let i = 0;i < 1000;i++) {
      judgeCode(resArr, tempResMap)
    }
    
    return resArr;
}

function judgeCode(resArr, tempResMap) {
    let code = renderCode()
    if(tempResMap[code]) {
        judgeCode(resArr, tempResMap)
    } 
    tempResMap[code] = true
    resArr.push(code)
    return resArr
}

function renderCode() {
    let temp = []
    for(let i = 0 ;i < 6;i++) {
        let single = parseInt(Math.random()*10)
        temp.push(single)
    }
    return temp.join('')
}

console.log(randomString())

12.编码:

/*
实现一个sum函数,接收一个arr,累加arr的项,只能使用add方法,该方法接收两个数,模拟异步请求后端返回一个相加后的值
*/
function add(a,b) {
  return Promise.resolve(a+b)
}

function sum(arr) {
  // 思路可以二分,切成两部分beforeSum, afterSum。
}

/*
变种:如果后端设置了并发限制,一次不能请求超过三个,怎么办?
*/
tag(s): none
show comments · back · home
Edit with markdown

仅有一条评论

  1. 北京艺术培训

    感谢分享 赞一个

    北京艺术培训 May 10th, 2021 at 09:14 am回复