记一次uc面试

很有幸的去uc面试,面试过程问的顺序是从笔试到你简历上写的技术,最后到之前待过的公司,下面记录一下遇到的问题

笔试

1.写一个中间自适应,左右固定100px的三栏布局,这个问题基本都没问题,网上也很多答案。

参考 CSS三栏布局5种解决方案

问: 网格布局有什么问题,有没在实际中应用,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
5
const 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
3
Array.from(Array(100).keys())

[...Array(100).keys()]

4.根据上面生成的数组,乱序排列(同样不使用loop)

1
arr.sort( () => Math.random() > .5 ? -1 : 1 )

给出这个答案的时候,他问这样有什么缺点(涉及到计算复杂度)

5.不使用loop,根据上面乱序排序后生成的数组,将前十个数相加.
虽然这种答案很怪,但确实我是想不到其他的了…

1
2
var [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的级别,我当时仰慕的啊~~~)

文章目录
  1. 1. 笔试
  2. 2. 技能
  3. 3. 公司
  4. 4. 最后
|