21年8.6面试总结

一、第一家

  1.项目中负责哪些功能

  2.js的基本数据类型,检测数据类型

  3.unfinde和null的区别

    undefined表示变量声明过但并未赋过值,null表示可能未来指向一个空对象,unfinde和null的值相等但是但是类型不等,要用全等来判断不能用双等

  4.js中new操作符做了那事情

    创建一个空对象,设置原型链,绑定this指向执行构造函数,返回这个对象。

  5.浏览优化

    5.1减少http请求:css精灵图,防抖和节流

    5.2使用CDN:cdn是一组分布在多个不同地理位置的web服务器,用于更加有效的向用户发布内容,web服务器离用户越近,http请求的响应意见越短

    5.3压缩代码体积,样式放在头部,脚本放在底部

    5.4减少DNS查找(DNS予解析)缓存

  6.js延迟加载的方式

    js延时加载,有利于提高网页的加载速度,可以通过defer属性、async属性、动态的创建DOM、使用setTimeout延时方法、让js最后加载

  7.es中promis和异步的区别

  8.es新增了let和const和var的区别

  9.js闭包,js还有哪些操作会造成内泄露(不会),let和const出现后还有需要需要闭包。

  10.解决跨域问题,jsonp的原理(不会)

  jsonp的原理:利用script标签的src属性来实现跨域,通过将前端方法作为参数传递到服务器,然后有服务器注入参数之后再返回,实现服务器端向客户端通讯,由于使用script标签src属性,之支持get请求

  11.for in 和object.key的区别:object.key将对象中所有的key值取出来只读取当前对象的key值不会走原型链,而for in会走原型链。forEach和map的区别,map得到一个新数组返回,forEadch方法没有返回值,会改变原数组的值

  12.原型链和作用域链的区别

  13.普通函数的箭头函数的区别

    箭头函数是匿名函数,不能作为构造函数,不能使用new关键字,没有this机制,没有原型属性

  14.vue的优点(答的不全)

    双向数据绑定,组件化,虚拟DOM

  15.vue组件间传值,

    父向子,定义自定属性props接收,子向父,定义自定义事件通过$emit触发这个事件。

    props父组件更新子组件中的数据是否会更新(不会),利用props传参时只在mounted周期中传递了一次,此 可以利用计算属性。

  16.让样式vue只在当前组件中起作用

    在组件中的style前面加上scoped就可以了,但是之一特性存在一个缺陷!如果再子组件的根元素上有一个类已经再这个父元素定义过了,那这个父组件的样式就会泄露到子组件中,因此要避免再父组件中书写和子组件同名的clss类

  17.如果发多个请求,在第一请求发起把logind显示出来,在最后一个返回时(每一个请求的时间都不确定)取消他

    解决方案一、可以定义一个变量变量数等于请求的数量,再每一个变量里让他减减,当变量等于0的时候让他消失。

    解决方案二、利用Promise有一个all方法,接收一参数,这个参数可以传入一个数组,再数组中可以写多个Promise抱起来,然后放到个数组里,all方法石凳数组中所有的Promise加载完成之后才去执行的

    

console.log('loading效果图旋转中')
    var p1 = new Promise(function(resolve,reject){
        setTimeout(() => {
            console.log('第一个加载完成了');
            resolve();
        }, 1000);
    })
    var p2 = new Promise(function(resolve,reject){
        setTimeout(() => {
            console.log('第三个加载完成了');
            resolve();
        }, 2000);
    })
    var p3 = new Promise(function(resolve,reject){
        setTimeout(() => {
            console.log('第二个加载完成了');
            resolve();
        }, 3000);
    })
    
    Promise.all([p1,p2,p3]).then(function(){
        console.log('loading效果图消失');
    })

  18.get和post的区别

    get请求能被缓存,post请求不能;get请求发送的数据很小,不安全;post请求数据量没有限制相对较安全。

二、第二家

  1.组件间传值

  2.v-if和v-show共同点和不同点

  3.v-if(v-show)和v-for可以一起使用麽?

  4.为什么data是一个函数

  5.介绍一下深浅拷贝

    引用数据类型,名字存在栈内存里,值存在堆内存中,通过地址引用堆内存中的值。引用数据类型存在深浅拷贝的问题。

  浅拷贝一个对象(直接赋值),赋值后两个变量使用的相同内容,一个操作,另一个也会变化(也有自己的适用场景)。

  深拷贝:1.通过递归的方式实现深拷贝,2.通过JSON对象实现深拷贝,3.展开运算符,4.lodash函数库中的lodash.cloneDeep()实现

  6.介绍一下vuex

  veux是vue项目开发是的状态管理工具,一个数据要在多个页面共同使用时要用到vuex,vuex有五个成员state,mutations,getters,actions,modules,mutations是操作state数据的方法集合,

  7.nextTick的原理()

  8.介绍一下vue-loder插件解决了哪些问题

  vue-loader是webpack下loader插件 可以把.vue文件 输出成组件

  9.vue路由的两种模式

  10.created和monuntd的区别

  11.路由传参

  12.js里的事件循环,js执行机制

  13.计算属性和监听属性的区别和使用场景

  14.webpack的配置优化配值

  15.v-model双向绑定的原理

三、第三家

  1.css盒模型包括什么

  2.清楚浮动有哪几种方式,为什么要清楚浮动

  3.行元素有哪些

  4.css四种定位的区别

  5.session和localg的区别

  6.vue兄弟组件通讯

  7.vue如何对数据响应式进行处理,数据改变了没有被检测到

  8.vue路由传参区别

  9.windon.onlod和docu.writ的区别

  10.事件委托

  11.基本数据类型

  12.jq随dom增删该

  13.如何遍历一个json对象的key和value

  14.数据库的基本操作

  

  

posted @ 2021-08-05 18:13  前端乔  阅读(221)  评论(0编辑  收藏  举报