2019阿里校招面试【前端】(二)他山之石

2019阿里校招面试【前端】(二)

首先钉钉的面试官实在是非常耐心,整场面了一个半小时,比起面试更像是在给我上课
原本约的周一晚上八点半的,面试官临时有事于是安排到周二晚上九点半。

说是面试其实由于自己菜鸡的原因就问了三道,顺便知道了面试官属于的是阿里钉钉的文档部门(应该是这样交的),比起使用框架更加重视原生js的交互实现,因此在基础考察上很详细。

  1. 虽然是电话面试但是开了视频手撕。实现函数parseCoord,给定Excel单元格字符串,输出对应的行列值。
  2. 重绘重排的原理,如果DOM下100个节点更新那会重排100次吗?
  3. https使用的是ssl协议,如果服务端分发公钥,浏览器端使用私钥解密会话密钥会不会不安全?为什么?(说实话我是也记不清当时脑子已经一团浆糊了)
  //评测题目: 无
    // 题目
    // 实现函数parseCoord,给定Excel单元格字符串,输出对应的行列值。
    // 输入输出样例
    // 样例一
    // 输入:parseCoord('A1')
    // 输出:{ col: 1, row: 1 }
    // 样例二
    // 输入:parseCoord('AB123')
    // 输出:{ col: 28, row: 123 }
     
    // 'AB123' -> { colStr: 'AB', rowStr: '123' }
    // -> 'AB' -> 28
    // A: 1
    // Z: 26
    // AA: 27
    // AB: 28
    // ...
    // AZ: 52
    // BA: 53
    // ...
    // ZZ: 26^2 + 26 = 26^1 * 26 + 26^0 * 26
    // AAA: 26^2 * 1 + 26 * 1 + 1
    // ABA: AAA + 26
    // ABC: ABA + 2 = AAA + 26 + 2 = 26^2 * 1(A) + 26 * 2(B) + 3(C)
    function transferAlpha(alpha) {
      let arr = alpha.split("")
      let result = 0
      for (let i=arr.length-1;i>=0;i--) {
          result += transfer(arr[i])*Math.pow(26,(arr.length-1-i))
      }
      return result
    }
    function transfer(al) {
      return al.charCodeAt(0)-64
    }
    function parseCoord(str) {
      const m = str.match(/(^[A-Z]+)([0-9]+$)/);
          if(m === null){
            return false
        }
     
      const [, alpha, num] = m;
     
        const obj = {
            col : transferAlpha(alpha),
              row : parseInt(num)
        }
     
        return obj
    }

总之,就是自己太菜还有对部门的不了解,复习上要更加针对对方的事务范围更好。

他山之玉。可以攻石。借鉴前人经验,大家一起讨论问题,成就更好的自己
有比较好的答案可以留言,也可以把每个问题写成一篇博客,下面留链接,会选出最有帮助的增加到本篇博客里,帮助更多的人学习

你可能感兴趣的:(阿里校招面试,面经,阿里,校招,面经汇总他山之玉)