2020前端面试题 --- 金三银四把握的住吗

硬是把7天的过年小长假过成了寒暑假,这个年对所有人来说都是不好的。如今各大公司也开启了远程办公的模式,在家宅了半个多月,敲代码的手都生疏了。马上就是金三银四了,拿完年终奖的程序员也都开始在各大招聘网站上活跃。我也是其中之一,放假前也还面两三家公司。我整理一份之前遇到过比较好的面试题分享给大家,错的地方也请大家及时纠正。(大神请绕路,哈哈)

1 说一下css预处理器的优势,并使用预处理器less实现1物理像素边框

答:css预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为css增加一些编程的特性,将css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

解决移动端1像素边框的问题,用的transform(倍数) 加上媒体查询实现

.border-1px(@color: #ccc, @radius: 2PX, @style: solid){
  position: relative;
  &::after {
    content: "";
    pointer-events: none;
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    transform-origin: 0 0;
    border: 1PX @style @color;
    border-radius: @radius;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    @media (min-resolution: 2dppx){
      width: 200%;
      height: 200%;
      border-radius: @radius * 2;
      transform: scale(.5);
    }
    @media (min-resolution: 3dppx){
      width: 300%;
      height: 300%;
      border-radius: @radius * 3;
      transform: scale(.333);
    }
  }
}

2 使用JavaScript实现深度克隆函数deepClone

首先说一下 深拷贝和浅拷贝的区别  浅拷贝只复制指向某个对象的指针,不复制对象的本身。深拷贝会创造一个一模一样的对象,新对象和旧对象不会公用内存。

var deepClone = function(obj){
    var obj2 = Array.isArray(obj) ? [] : {}
    if(obj && typeof obj === 'object'){
        for(let i in obj){
            if( obj.hasOwnProperty(i)){
                if(obj[i] && typeof obj[i] == 'object'){
                    obj2[i] = deepClone(obj[i])
                }else{
                    obj2[i] = obj[i]
                }
            }
        }
    }
    return obj2
}

3 什么是闭包,闭包有什么作用?

答:闭包就是指有权访问另一个函数作用域中的变量的函数。

function outer() {
    var a = 1;//定义一个内部变量
    return function() {
        return a
    }
}
var b = outer()
console.log(b()); //1

4 如何发送一个ajax请求

发送ajax请求的五个步骤

  1. 创建异步请求,即XMLHttpRequest 对象
  2. 设置请求的参数,包括:请求的方法,请求的url
  3. 发送请求
  4. 注册事件,onreadystatechange事件,状态改变时就会调用
  5. 获取返回的数据

5 简述vue数据双向绑定的原理

通过MVVM(model-view-viewModel)实现vue双向绑定,监听器(Observe)监听数据的变化,具体利用Observe中的object.definePrototype()函数实现监听数据。

当数据变化时通知订阅者(Watcher)通知并执行绑定的更新函数,从而更新视图

最后需要Compile解析器,解析v-model,v-on等节点,绑定对应的更新函数并初始化这类节点的模版数据。

发布了6 篇原创文章 · 获赞 3 · 访问量 4195
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览