阿里钉钉前端开发一面凉经
首先钉钉的面试官实在是非常耐心,整场面了一个半小时,比起面试更像是在给我上课
原本约的周一晚上八点半的,面试官临时有事于是安排到周二晚上九点半。
说是面试其实由于自己菜鸡的原因就问了三道,顺便知道了面试官属于的是阿里钉钉的文档部门(应该是这样交的),比起使用框架更加重视原生js的交互实现,因此在基础考察上很详细。
- 虽然是电话面试但是开了视频手撕。实现函数parseCoord,给定Excel单元格字符串,输出对应的行列值。
- 重绘重排的原理,如果DOM下100个节点更新那会重排100次吗?
- 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 }