面经

融都

  • CSS3特性
  • 闭包
  • 浏览器缓存
  • 事件委托
  • 项目难点
  • 对Vue的了解
  • 原型
  • 清除浮动
  • 小程序
  • 节流防抖

旷视科技

一:

  • 堆 栈

  • css position

  • mvvm/mvc

  • 高内聚低耦合

  • http状态码

  • vue组件通信

  • set map

  • 数组排序

  • 数组内置方法

  • 水平垂直居中

  • vue生命周期

    • destoryed使用场景
  • computed和watch

  • webpack热更新

  • 编译器

二:

  • vue路由原理
  • v-if v-show
  • vue - router
    • hash
    • history
  • 闭包缺点
  • nginx
  • vuex
  • 节流防抖函数优化
  • es6用过的
  • Promise All

联想

  • Promise
  • js异步
  • es6
  • vue生命周期 父子组件的生命周期顺序
    • 子组件在父组件的beforemounted生命钩子完后才能后就开始实例化自己,并走完自己的整个生命周期
      等子组件的生命周期构建完成后挂载到父组件上,父组件的mounted才会执行,所以子组件先父组件完成生命周期。这也就是为什么在只有在mounted中的children属性才能看有子组件值,而不是空数组
  • webpack原理
  • 项目
  • 1px
  • 响应式原理
    • Object.defineProptey 源码
  • 模块化
  • 父子组件传值
  • 前后端分离
  • 网站语言切换

猫眼一面(校)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  <a rel="noopener noreferrer" target="_blank" href=“url">111</a>

function A(a){
this.a = a;
}

A.prototype.b = 3;
A.prototype.f1= function(k){
this.b = k;
}

let m = new A(1);

m //{a: 1}

let n = {a:1}

m.b = 5;

let c = new A(1);
c.b
c.f1(6)
c.b


实现一个once函数,传入函数参数只执行一次

function once (fn){
once = function(){}
}


  • src href

  • rel=”noopener noreferrer”

    • 当您的页面链接至使用 target="_blank" 的另一个页面时,新页面将与您的页面在同一个进程上运行。 如果新页面正在执行开销极大的 JavaScript,您的页面性能可能会受影响。

      target="_blank"也是一个安全漏洞。新的页面可以通过window.opener 访问您的窗口对象,并且它可以使用 window.opener.location = newURL将您的页面导航至不同的网址

      rel=noreferrer 是为了兼容旧浏览器。

  • 构造函数

  • 原型

  • vue 2.0 3.0 双向绑定区别

  • http缓存

    • 缓存对应状态码
    • 资源变化返回什么
  • 三次握手为什么握三次

  • 浮点数问题

  • BFC

  • translate

  • css position

  • 盒子

  • defer async

个推 (校)

一面

  • BFC
  • ES6
  • Promise实现同步 async. awiat同步的方式
  • 浏览器渲染
  • 盒子模型
  • Js
    • Map中对象做键问题
    • 继承问题 ES6和ES5区别
    • 箭头函数
  • vue
    • 计算属性和watch
    • Vue响应式原理
    • Vue改变对象不实现响应式解决办法
    • Vue diff算法
    • Nexttick
  • 前端工程化
  • 浏览器缓存
  • 输入url流程
  • 三次握手和四次挥手原因

二面

二面的问题并没有偏技术 而是问了一些学习上的问题 比如如何学习前端 为什么学习前端 学习前端的方法 在学习前端时遇到的问题 为什么想来杭州 反问环节问了公司开发方式以及是否使用其他框架 面试的时间比较短

shopee

一面凉经

  • 垂直水平居中

  • 输入URL到界面展示

    • 浏览器解析渲染界面
    • 三次握手
  • web安全

  • 浏览器缓存

  • 算法

    • 链表 (回环)
  • vue双向绑定

  • 做题

    • 原型
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var a = 0
    function Test(){
    this.a = 1
    }
    Test.prototype.test2=function(){
    console.log(this.a)
    }
    var x = new Test()

    x.test2.call(null)

  • 写题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 实现一个add方法,使计算结果能够满足如下预期:
add(1)(2)(3) = 6;
add(1, 2, 3)(4) = 10;
add(1)(2)(3)(4)(5) = 15;

function add() {
// 第一次执行时,定义一个数组专门用来存储所有的参数
var _args = Array.prototype.slice.call(arguments);

// 在内部声明一个函数,利用闭包的特性保存_args并收集所有的参数值
var _adder = function() {
_args.push(...arguments);
return _adder;
};

// 利用toString隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
_adder.toString = function () {
return _args.reduce(function (a, b) {
return a + b;
});
}
return _adder;
}

add(1)(2)(3) // 6
add(1, 2, 3)(4) // 10
add(1)(2)(3)(4)(5) // 15
add(2, 6)(1) // 9