# 蓝湖

  1. 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[ s1 , e1 ] ,[ s2 , e2 ],…] (si < ei) ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。 例如: 输入: [[0, 30],[5, 10],[15, 20]] 输出: 2 面试现场讨论了算法原理,未有时间编码调试:
function fn(arr) {
    const sortArr = arr.sort((a,b) => a[0] - b[0]);
    console.log(sortArr);
    let number = 1;
    let end = sortArr[0][1];
    for (let i = 1; i < sortArr.length; i++) {
        if (sortArr[i][0] < end) {
            end !== sortArr[i][0] ? number++ : '';
        }
        end = sortArr[i][1];
    }
    return number;
}
console.log(fn([[0, 30],[5, 10],[15, 20], [10,35], [20, 30]]));
  1. 技术点---项目一些细的技术点
  2. 如果自己实现一个百度地图应该怎么做?
  3. react单向数据流

二面

jsBridge原理(callback) node 进程管理fork、exec()区别 算法

  1. 数组转对象
var arr = [
    {node: 'a', children: ['b', 'c']},
    {node: 'b', children: ['d', 'e']},
    {node: 'c', children: ['e', 'f']}
]
=> 
{
    a:  {
        b: {
            d:{}
            e: {}
        },
        c: {
            e:{}
            f:{}
        }
    }
}

function dfs(data, result, node) {
  for (const item of data) {
    if (item.node === node) {
      for (const m of item.children) {
        result[m] = {}
        dfs(data, result[m], m)
      }
    }
  }
}
function arrayToTree(data) {
  let result = {a: {}}; // 找到第一个节点,方法不写了
  dfs(data, result.a, 'a');
  return result;
}
console.log(arrayToTree(arr))


// dier
var arr = [
    {node: 'a', children: ['b', 'c']},
    {node: 'b', children: ['d', 'e']},
    {node: 'c', children: ['e', 'f']}
]

function reverserFlat(arr) {
    let map = {};
    for (let item of arr) {
        map[item.node] = {}
    }
    for (const item of arr) {
        const node = item.node;
        const children = item.children;
        for (const m of children) {
            if (map[m]) {
                map[node][m] = map[m]
            } else {
                map[node][m] = {}
            }
        }        
    }
    return {a: map.a};
}
console.log(reverserFlat(arr))
  1. promise并发最大限制,前面执行了后面才可以执行
var p = new asyncPool(max)
p.ajax({url, data});
p.ajax({url, data});

# 牛客网

  1. jquery的链式调用实现

    var myJq = function() {}
    myJq.prototype = {
        css: function() {
            console.log('设置样式');
            return this;
        },
        show: function() {
            console.log('将元素显示');
            return this;
        },
        hide: function() {
            console.log('将元素隐藏');
            return this;
        }
    }
    var myjq = new myJq();
    myjq.css().show().hide();
    
  2. canvas 分层实现 canvas叠加???

  3. 点在三角形内的判断

  4. 发布订阅者模式

  5. vuex 其他地方调用waring

  6. ime---input表单输入 请求

  7. 事件捕获、冒泡(为什么默认是冒泡)--说明兼容性更好

# 网易

  1. vue双向绑定原理、$nextTick()原理demo

  2. vue 模板字符串解析?正则

  3. https? http通道

  4. val变量提升

  5. protype-原型链-闭包

  6. indexOf实现(正则、subStr)

  7. 归并排序

  8. 链式调用 (opens new window)

  9. react-usememo

  10. webgl、three.js渲染过程

  11. 前端监控白屏?

  12. 前端模块化

二面

  1. 页面渲染过程

  2. 前端监控 app点击-白屏

  3. 后端接口监控

  4. 前端监控为什么用图片

  5. 组件按需加载问题?怎么第三方做按需加载

  6. 正则匹配ip、手机号

  7. 10个红球 10个白球 随机取出来10个球 要求红球不相连 有多少种方法???

  8. koa/express/egg不同

  9. fn() fn();第一个函数没有执行完后续阻塞?回调 (opens new window)、异步处理?

  10. node-cli流程?test.baidu.com/index.html

  11. 前端安全(详细攻击、防御)scp postmessage selft.window === top.window

  12. webpack原理

# 阿里生活

  1. 会议室问题

  2. 链表反转

  3. canvas性能优化

  4. 红绿灯 (opens new window)

  5. htmltocanvas 图片模糊

  6. 查找一个字符串中最长的回文子串

const longReverseStr = str => {
    if (str.length < 2>) return str;
    const len = str.length;
    let res = str[0];
    const dp = Array.from(Array(len), () => Array(len).fill(0));
    for (let i = 0; i < len; i++) {
        dp[i][i] = true;
    }
    for(let i = 1; i < len; i++) {
        for (let j = 0; j < i; j++) {
            if (j - i == 1 && str[i] === str[j]) {
                dp[i][j] = true;
            } else if(str[j] === str[j] && str[i] === str[j]) {
                dp[i][j] = true;
            }
            if (dp[i][j] && j - i + 1 > res.length) {
                res = str.substring(i, j + 1);
            }
        }
    }
    return res;
}

js实现找出字符串中的最长回文串 (opens new window)

  1. 两个非空链表两数相加--链表

  2. setInterval 丢帧问题 (opens new window)

  3. 剪头函数有arguments吗?(没有this, arguments, super new target)

  4. vue3 和react hook区别

  5. react hoos和类组件

# 其他

  1. h5和app区别
  2. webpack按需加载实现、webpack多入口
  3. 堆栈
  4. webpack chunk split?
  5. vue 父子组件、minxin声明周期顺序 (opens new window)

# 问题

项目一些细的技术点

  1. ts分片404问题,巡游视角卡顿问题、地图功能封装、微前端实践
  2. 项目中引入ts问题
window.BMAPGL_FORCE_RATIO = 1; // 是控制2.5D清晰度的
window.TGIS_FORCE_RATIO = 1; // 这个是TGIS清晰度
  1. 87年 大厂带人
  2. 职级低 高潜 hold不住专家岗?

京东60多 将近70 京东是一个offer,其他流程在走,对去**业务也挺兴趣 有机会还想过来的