2020 面试经历(上)

2020-04-27 ~ 2020-08-12

  1. 【2020-04-27 18:30】翎阳网络(React前端研发工程师)
    • FetchPromise 对象返回什么?resolve 还是 reject
    • 如果遇到网络故障,fetch() promise 将会 reject,带上一个 TypeError 对象。虽然这个情况经常是遇到了权限问题或类似问题——比如 404 不是一个网络故障。想要精确的判断 fetch() 是否成功,需要包含 promise resolved 的情况,此时再判断 Response.ok 是不是为 true
      fetch('flowers.jpg').then(function(response) {
      if(response.ok) {
        return response.blob();
      }
      throw new Error('Network response was not ok.');
      }).then(function(myBlob) { 
      var objectURL = URL.createObjectURL(myBlob); 
      myImage.src = objectURL; 
      }).catch(function(error) {
      console.log('There has been a problem with your fetch operation: ', error.message);
      });
      
    • 自己封装过哪些组件?(GitHub
    • CSS HLS 最后两个参数是干嘛用的?
  2. 【2020-04-27 20:30】上海积途信息科技有限公司(前端开发工程师)
    • 讲一讲 Vue 的生命周期
    • MVC 和 MVVM 的区别?(单向 双向)
    • 最大回文数乘积。
  3. 【2020-04-28 18:30】字节跳动(商业化)
    • 讲一讲箭头函数不适用的场景。
    • ES6 对数组新增了哪些功能?
    • 描述一下暂时性死区,并写一个例子。typeof 是一个安全操作符吗?
    • 实现 template:(实现一个 template 方法
      str = "my name is {{name}}, age is {{age}}"
      data = { name: 'tom', age: '15'}
      template(str, data)
      
    • vue-router 的实现。
    • Virtual Dom 优势。
  4. 【2020-04-29 18:30】链盟(区块链)
    • 前端网络安全问题有哪些?
    • new 一个函数后发生了什么?(实现 new
    • this 在函数中指向问题。
    • 如何优化一个页面。
    • 了解 Proxy 吗?
  5. 【2020-04-29 19:30】函子科技(建站)

    • Code Battle:(附当时草稿)

      // f([1,2,3,4,5], 9) => true
      // f([1,2,3,4,5], 10) => false
      function foo (arr, sum) {
        // const i, j
      let ret = false
      for (let i = 0, max = arr.length; i < max - 1; i = i + 1) {
        for (let j = i + 1, max1 = arr1.length; j < max1 - 1; ++j) {
            let t = arr[i] + arr[j]
          if (t === sum) {
            ret = true
          }
        }
      }
      return ret
      }
      
      function bar (arr, sum) {
        const map = {}
      let ret = false
      for (let i = 0, max = arr.lenght; i < max; ++i) {
        map[String(arr[i])] = arr[i]
      }
      for (let i = 0, max = arr.length; i < max - 1; ++i) {
        if (ret) break
        let remain = sum - arr[i]
        if (map[String(remain)]) {
            ret = true
        }
      }
      
      return ret
      }
      
      function foz (arr, sum) {
        const map = {}
      for (let i = 0, max = arr.length; i < max - 1; i = i + 1) {
        for (let j = i + 1; j < max; ++j) {
            let s = arr[i] + arr[j]
          if (map[String(s)]) {
            map[String(s)].push([i, j])
          } else {
            map[String(s)] = [[i, j]]
          }
        }
      }
      for (let i = 0, max = arr.length; i < max; ++i) {
        const remain = sum - arr[i]
        if (map(String(remian))) {
            let arr2 = map(String(remian))
          for (let j = 0, max1 = arr2.length; j < max1; ++j) {
            let arr3 = arr2[j]
            if (arr3[0] !== arr[i] && arr3[1] !== arr[i]) {
                return true
            }
          }
        }
      }
      return false;
      }
      
  6. 【2020-04-30 10:00】晓信(高级前端开发工程师)
    • for...of 和普通 forasyncawait 时区别?(顺序,乱序)
  7. 【2020-04-30 15:00】掌门1对1(教育)
    • 埋点上报如何优化?
  8. 【2020-05-06 11:00】链盟 - 二面
    • 各种循环哪个性能更好?(for)
  9. 【2020-05-06 14:30】哔哩哔哩(高级/资深前端开发工程师)
    • 协商缓存和强制缓存区别?(强缓存和协商缓存
    • HTTPS 和 HTTP 的区别?
    • 页面渲染的过程。
    • 函数形式模拟实现 new实现 new
    • 模拟实现 Array.prototype.flat()
  10. 【2020-05-06 21:36】阿里巴巴
    • Vue 的原理?
    • Virtual Dom 的优势?node 树如何 diff 差异,复杂度是什么?
    • 协商缓存和强制缓存。
    • 词法分析和词法作用域生成什么?
    • 前端安全相关,邮件中链接(XSS、XSF?)攻击如何预防?
    • 如何模拟多线程?(Worker)
  11. 【2020-05-07 13:00】函子科技 - 二面
    • 题 1:
      两个单向有序链表合并 & 排序
      
    • 题 2:
      /*
      合并两个有序链表,返回合并后的有序链表
      输入:1->2->4, 1->3->4
      输出:1->1->2->3->4->4
      */
      
    • GraphQL 相关。
  12. 【2020-05-11 11:00】贝壳找房
  13. 【2020-05-12 17:00】阅文集团
  14. 【2020-05-12 18:30】贝壳找房 - 二面
  15. 【2020-05-14 17:00】贝壳找房 - 三面
    • 做过比较有成就性 / 挑战性的事情是什么,有什么事情是可以改善的。
    • 对经纪人怎么看?觉得经纪人有哪些特征是最重要的。(???)
  16. 【2020-05-19 18:45】贝壳找房 - 四面
    • 如何定制 UI 组件。
    • 在带领新人的过程中有哪些自豪的事情。
    • 职业规划。
  17. 【2020-06-24 10:00】贝壳找房 - 五面
    • 职业规划。
  18. 【2020-06-24 10:00】掌门1对1
    • 子序列宽度之和。
  19. 【2020-06-24 17:00】二三四五
    • 如何判断一个动画何时结束?
      // animationend 事件在 CSS 动画完成后触发。(IE9及更早 IE 版本不支持)
      var x = document.getElementById("myDIV");
      // Chrome, Safari 和 Opera 代码
      x.addEventListener("webkitAnimationEnd", myStartFunction);
      // 标准语法
      x.addEventListener("animationend", myStartFunction);
      // transitionend 事件在 CSS 完成过渡后触发。 (IE9及更早 IE 版本不支持)
      // Safari 3.1 到 6.0 代码
      document.getElementById("myDIV").addEventListener("webkitTransitionEnd", myFunction);
      // 标准语法 document.getElementById("myDIV").addEventListener("transitionend", myFunction);
      // 其他注意:
      // Internet Explorer 8 及更早 IE 版本不支持 addEventListener()方法。
      
    • 职业规划。
    • CSS 三列布局。
    • 如何控制元素的层级。
  20. 【2020-06-24 21:00】找钢网
    • babel 如何工作。(ast)
    • 讲讲 Vue 里面 v-model
    • Webpack 如何做 tree shaking。
    • 冒泡和捕获,父元素和子元素点击顺序。
  21. 【2020-06-28 14:00】中通快递
    • Webpack 和 Rollup、gulp 区别。
    • 讲讲 ES6 熟悉的部分。
    • Ajax 请求进行封装。
    • 兴趣爱号。
    • Vue 生命周期。
    • 排序,二分,边界情况怎么办。
    • 前端性能优化,预加载。
  22. 【2020-06-29 10:00】掌门1对1
    • TCP 为何要进行三次握手。
    • 跨域的情况何时要进行 options 请求。
    • BFC 如何产生,以及有什么特性。
  23. 【2020-07-06 10:00】腾讯
    • 跨域问题。
    • 实现节流。(节流和去抖的简单实现
    • Node 和浏览器端 JavaScript 事件管理机制的区别。
    • 前端安全相关的问题。
    • 数组方法的 Polyfill 实现。
    • for 相关问题。
  24. 【2020-07-22 10:00】平安好医生
    • Vue (相对于其他框架)有什么优势?
    • 一个需要反转四次的图形。(总体比较抽象)
    • 两个不相关的组件通信。(eventBus 观察者/被观察者)
    • CSS 布局,等高左边固定宽度。
  25. 【2020-08-04 14:00】百度(VR)
    • 反转二叉树 / 旋转红黑树。
    • 原型的理解。
    • 什么时候用闭包,用闭包会存在的问题。
    • 浏览器端的缓存。
    • 虚拟 Dom 的性能一定最优吗。
    • 跨域哪种情况前端没有办法?
    • 读取 Map 的复杂度,什么时候用 Array 什么时候用 Map。
    • 能接受加班吗?
    • 现在的薪资。
    • HTTP3 了解吗,HTTP 和 (web)socket 区别,为什么要三次握手?(TCP 为什么是三次握手,而不是两次或四次?
    • 遇到的比较难受的事情?
    • 让你主导一个需求该怎么做?
    • 多个直线构建最大多边形。
  26. 【2020-08-05 19:00】平安银行
    • 事件循环。
  27. 【2020-08-06 16:00】力扣(LeetCode)
    • 天际线问题。
    • 实现 reduce
    • 实现轮播,大数据量的情况下设计数据结构。
    • 三行布局顶部吸顶。
    • JS 中的多线程。(???)
    • 如何优化用户体验,做了什么事情?
    • 最近在学习什么。
    • 设计点赞和踩的前后端。
  28. 【2020-08-07 10:00】平安银行 - 二面
    • 每个打包工具使用的理由,Webpack 相对于 Rollup 的优势。
    • 如何写 / 设计一个组件。
  29. 【2020-08-07 15:00】得物
  30. 【2020-08-10 15:00】平安银行 - 三面
    • 职业规划。
  31. 【2020-08-12 19:30】得物 - 二面
    • 二叉树最大宽度。

发表评论

电子邮件地址不会被公开。 必填项已用*标注