美文网首页
前端最全面试题-一直更新中

前端最全面试题-一直更新中

作者: 将心比心_59bf | 来源:发表于2020-04-08 10:37 被阅读0次

    1 HTML

    2 css

    2.1 三栏布局

    2.2 弹性盒

    设置了display:flex属性以后,float和vertical-align,clear属性将失效。

    有6个主要属性:flex-direction,flex-wrap,flex-flow,justify-content,align-item,align-content

    flex-direction:row(默认,从左到右);row-reverse(从右到左);column(从上到下);column-reverse(从下到上)

    flex-wrap:nowrap(默认不换行);wrap(换行,第一行在上);wrap-reverse(换行,第一行在下)

    flex-flow:是flex-firection和flex-wrap的结合,默认是row nowrap

    justify-content:flex-start(默认,从左到右);flex-end(右对齐);center(居中);spac-between(两端对齐,中间间距相等);space-around(两侧间距相等,项目中间距比项目与边框的间距大一倍)

    align-items:stretch(默认,如果项目未设置高度或者设为auto,将占满整个高度);center(垂直居中);flex-start(在上面对齐);flex-end(在下面对齐);baseline(项目第一行文字基线对齐)

    3 js

    3.1 ajax的原理:

    是不需要重新刷新页面,减少网络请求,提高用户体验。浏览器让xrh跟服务器要数据,自己可以做其他操作,xhr像服务器请求数据返回给xhr,xhr通知浏览器带回数据,浏览器将数据异步刷新到页面。

    3.2 原型链

    3.3 闭包

    闭包就是能够读取其他函数内部的函数,所以闭包实际是一个函数.

    闭包也可以理解为定义在函数内部的函数,本质就是函数内部和外部连接起来的桥梁.

    如果函数内部的子函数并没有引用父函数作用域里的变量,这个子函数就不是闭包.

    作用:读取函数内部的变量,让变量始终保存在内存中.

    缺点:让变量始终保存在内存中就容易内存消耗大造成性能问题,可以在不用该变量的时候将其delete

    3.4 promise

    在promise出现之前,js的异步一直是依靠回调函数实现,但当多个异步操作有依赖关系就容易出现多层嵌套形成回调地狱,不利于代码维护.promise的出现主要是解决异步操作回调地狱问题;

    1 promise本身是同步的,返回的是promise对象;

    2 promise有三种状态:bending,resolved,rejected.由bending到resolved就不能再到reject,Promise的状态和值发生改变就不会再改变,不管后续怎么调用resolve或者reject方法,状态和值是不可逆转的

    3.5 类型判断和undefined和null的区别

    3.6 深拷贝和浅拷贝

    4 vue

    4.1 虚拟dom的优点

    可以解决浏览器性能问题,如果一次操作中有10次更新dom的动作,虚拟dom不会立即操作dom,而是将10次更新的diff保存到本地一个js对象中,最终将这个js对象一次性attch到dom数上,再进行后续操作,避免了大量无谓的计算量。

    4.2 v-if和v-show的区别

    v-if是节点的消失和隐藏,v-show是display:none或者是block;如果是频繁操作的话用v-show比较合适,性能较高.v-if切换消耗性能,v-show初始的消耗性能大.

    4.3 computed,属性观测和methods的区别

    计算属性是依赖的数据发生改变就会重新计算返回新的结果,如果依赖的项没有变化,则返回上一次计算过后的数据,所以性能较高,但不能做异步操作,页面初始加载的时候回触发;属性观测只是单纯的观测data中的数据,属性值发生变化则触发相应的回调,可以做一些异步操作,初始页面不触发,但可以设置immidetely:true,对于层级较深的可以设置deep:true来观测。

    4.4 vue的different算法

    4.5 动态路由

    4.6 组件通讯

    4.7 状态管理

    4.8 路由守卫

    4.9 响应式原理

    主要是采用数据劫持和订阅发布的模式实现的。通过object.defineProperty来劫持各个属性的getter,setter,在数据变动时发布消息给订阅者,触发响应的监听回调。

    但是根据数组的下标修改数组,或者新增的对象属性不会响应式,这个用this.$set/vue.set可以解决。

    5 数据结构

    6 算法

    7 常见网络知识

    7.1 常见的状态码

    8 其他

    8.1 URL到浏览器经历的过程

    9 浏览器兼容问题:

    1. 不同浏览器的margin和padding不同,这个设置通配符margin:0,padding:0;(遇到100%)

    2.块元素设置float以后,横向的margin会比设置的大一些,这个可以将块元素设置为行内元素解决

    3. 设置较小高度的时候,IE会比设置的大一些,这个可以通过overflow:hidden结局

    参考:https://www.cnblogs.com/fxwoniu/p/11973326.html

    10 登陆

    11 状态管理

    Ajax和fetch的区别

    浏览器中的事件循环

    箭头函数和普通函数(4点)

    伪数组转真数组

          Array.from;

        Array.protype.slice.call(obj);

        [...obj];

    v-for中的key  是否可以用随机数

    vue中mixin的合并规则

        钩子函数都会调用,而且mixin中的比组件的更先调用;

        如果是data的话,则用组件的data,如果是对象的话,则合并,

        如果是methods同名的话,也用组件的

    如何手动销毁一个vue实例

    如何区分一个数组或者对象

    arr instanceof  Array(判断对象的原型链是否是指向构造函数的prototype)

    obj instanceof Object

    arr.constructor === Array(对象的constructor属性)

    obj.constructor === Object

    Object.prototype.toString.call(arr)

    "[object Array]"

    Object.prototype.toString.call(b)

    "[object Object]"

    Array.isArray(arr)  es6

    相关文章

      网友评论

          本文标题:前端最全面试题-一直更新中

          本文链接:https://www.haomeiwen.com/subject/tzcbbctx.html