Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[面经]-[猿辅导]-[电商产品方向]-[2020.03.20] #13

Open
L1116 opened this issue Mar 20, 2020 · 1 comment
Open

[面经]-[猿辅导]-[电商产品方向]-[2020.03.20] #13

L1116 opened this issue Mar 20, 2020 · 1 comment
Labels

Comments

@L1116
Copy link
Collaborator

L1116 commented Mar 20, 2020

猿辅导
一面

  1. css选择器,优先级

  2. 讲解promise,实现promiseAll
    3.节流和防抖是什么 ,区别,使用场景
    4.实现节流或防抖

  3. 格式化字符串"abc sdf dd" 变成[abc,sdf,dd]
    还是格式化字符串,"abc sdf,dd" 变成[abc,sdf,dd]

  4. 实现一个compare函数
    const DOGS = [
    {
    name: 'k',
    age: 3
    },
    {
    name: 'B',
    age: 10
    },
    {
    name: 'H',
    age: 10
    },
    {
    name: 'D',
    age: 10
    }
    ]
    // 将数组,按照age的从小到大排序 输出

  5. 还是上边的数组,如果年龄一致的话,根据name做比较,比较规则按照下方给定的数组元素出现的顺序排序
    const NAME_ORDER = ['kh','DAB']

  6. 求二叉树的最大深度

  7. 二叉树的最小深度

  8. 二叉树如果左子树为空,输出右子树的深度,若右子树为空,输出左子树的深度,若都不为空输出最小深度

  9. 移动端调试方法

  10. diff算法,react在哪些方面进行优化的
    12.还有一些小问题,忘了

二面
1.问项目,挨个问,做了什么,学到了什么,项目中涉及的东西也问
2.关于跨域,各种方式以及原理,跨域判断是浏览器做的还是后端做的
3.关于node,node进程管理,node单线程多线程
4.关于移动端真机调试,配置代理的原理是什么
5.关于发布流程,如何设置参数,都有什么过程
6.实现promise
7.axios在node中和前端中使用的区别
8.react中的connect
9.hooks中 useState的原理

三面

  1. 为什么要离职
  2. 堆和栈是什么?它们的区别是什么?为什么引用类型的变量需要堆和栈同时存?为什么要和基本类型的数据不一样?为什么要在栈中存指针?
  3. 栈中的数据量过大会出现什么情况?为什么会出现这种情况
  4. 如何实现一个聊天工具,服务端可以向客户端发消息
  5. websocket是什么,和http的区别是什么
  6. 讲解一下js单线程,是怎么检查一个setTimeout时间到了,然后怎么执行的,轮询机制,微任务和宏任务
  7. 如果让你设计一个js引擎,你会怎么设计引擎的轮询方式?假设任务队列中有上万个setTimeout,如何高效的判断哪些要执行了,哪些还需要继续等待。(分组;排序(堆排序)更优)
  8. tcp和udp,区别,tcp为什么安全
  9. 为什么要三次握手,两次握手会出现什么问题?为什么三次握手就可以解决问题
  10. 项目中遇到的印象最深刻的问题,产生的原因,如何解决的
  11. 数组a=[1,2,2,3,3,3,4],b=[2,2,3,3,4,4] 写一个函数,输出[2,3,3,4],尽量以较低的复杂度实现
    (其实就是找出两个数组中共有的元素,然后按照两个数组中该元素重复次数少的输出)
@xxx407410849
Copy link
Collaborator

第四题

const throtte = (fn,waitTime) => {
    if(!waitTime){
        throw new Error("please set waitTime");
    }
    if(!fn || typeof fn !== 'function'){
        throw new TypeError("fn is not a function");
    }
    let funcLock = false;
    return function mainFuc(...args){
        if(funcLock){
            return;
        }
        funcLock = true;
        setTimeout(funcLock = false , waitTime);
        fn.apply(this,agrs);
    }
}

const deBounce = (fn,waitTime) => {
    if(!waitTime){
        throw new Error("please set waitTime");
    }
    if(!fn || typeof fn !== 'function'){
        throw new TypeError("fn is not a function");
    }
    let timer = null;
    return function mainFuc(...args){
        let _this = this;
        timer && clearTimeout(timer);
        timer = setTimeout(()=>{
            fn.apply(_this,args);
        },waitTime);
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants