# 深信服

# 一面

  • 自我介绍
  • 最成功的项目
  • Webpack 打包优化有哪些方法
  • 如何优化页面性能
  • Webpack 的热更行原理
  • JS 是如何执行的(事件循环)
  • ES6 的 Map、Set 等数据结构和 Object、Array 的区别
  • reduce 的作用
  • 防抖节流的作用、原理和实现方式
  • 算法:爬楼梯 (opens new window)

# 二面

  • 实现题

    // 题目:实现一个对树型结构进行过滤的函数,其中树形结构的格式如下:
    // ' tree = [
    // '     {name: 'A'},
    // '     {name: 'B', children: [
    // '         {name: 'A'},
    // '         {name: 'AA', children: [...]}
    // '     ]},
    // '     {name: 'C'}
    // ' ]
    
    // ' 1. 假设我输入的 str 为 A 则过滤后返回的结果为
    // [
    //  {name: 'A'},
    //  {name: 'B', children: [
    //    {name: 'A'}
    //  ]}
    // ]
    
    // ' 2. 假设我输入的 str 为 AA 则过滤后返回的结果为
    // ' [
    // '     {name: 'B', children: [
    // '         {name: 'AA', children: [...]}
    // '     ]}
    // ' ]
    
    // ' 3. 假设我输入的 str 为 B 则过滤后返回的结果为
    // ' [
    // '     {name: 'B', children: [
    // '         {name: 'A'},
    // '         {name: 'AA', children: [...]}
    // '     ]}
    // ' ]
    
    
    // 实现该函数,要求不允许对原有的tree做任何修改,最终返回结果是一棵新结构出来的树
    
  • 项目中迁移 ts 的实现