很有幸的去uc面试,面试过程问的顺序是从笔试到你简历上写的技术,最后到之前待过的公司,下面记录一下遇到的问题
笔试
1.写一个中间自适应,左右固定100px的三栏布局,这个问题基本都没问题,网上也很多答案。
问: 网格布局有什么问题,有没在实际中应用,flex有哪些兼容性问题,兼容性写法有哪些
2.请阅读以下代码,并把运行结果写到下方注释中1
2
3
4
5
6 const foo = ((x, f = (y = x) => x + y) => {
let y = f();
x = y++;
return [x, y, f(y)]
})(2)
// foo =
解:1
2
3
4
5const foo = ((x, f = (y = x) => x + y) => { // x = 2 y = x = 2
let y = f(); // y = f() = x + y = 4
x = y++; // x = 5
return [x, y, f(y)] // [5, 4, 9]
})(2)
3.如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标?
答案很多 提供几个简洁的1
2
3Array.from(Array(100).keys())
[...Array(100).keys()]
4.根据上面生成的数组,乱序排列(同样不使用loop)1
arr.sort( () => Math.random() > .5 ? -1 : 1 )
给出这个答案的时候,他问这样有什么缺点(涉及到计算复杂度)
5.不使用loop,根据上面乱序排序后生成的数组,将前十个数相加.
虽然这种答案很怪,但确实我是想不到其他的了…1
2var [a, b, c, d, e, f, g, h, i, j, ...last] = arr3;
var total = a + b + c + d + e + f + g + h + i + j;
6.如果前端代码部署,主页面放在自己服务器,静态资源部署到cdn 应该怎么部署,怎么保证同步
参考: 大公司里怎样开发和部署前端代码?
技能
1.你用过nodejs的那些模块,当项目部署时你如何保证node热更新
2.怎么知道那个dom发生了变化,如何对比,有没可能存在跨节点对比,diff如何解决这个问题
3.webpack如何构建多页面,多页面命名有什么规范
4.有没读过jQuery与zepto的源码,两者有什么区别,和vue又有什么区别
5.Mv*思想,如何实现一个mvvm框架
公司
1.之前公司多少人,多人如何协作
最后
1.你平时如何提升自己,如何快速成长(他说他两年达到了p6p7的级别,我当时仰慕的啊~~~)