美文网首页
亲手带你简单的回答真实的前端面试题

亲手带你简单的回答真实的前端面试题

作者: WEB前端含光 | 来源:发表于2020-08-15 16:37 被阅读0次

    又说到了前端,怎么说呢,周围很多人走走停停,来来去去,感触很深。毕竟这个行业也是一条不归路,走深了,它带给你的将是不可估计的回报;走浅了,会觉得它好累啊,也就这样,还不如别的;那种不深不浅的,一个月上万了,就会想,还不错,就这样一辈子就好了。人这一辈子不能有贪心,但是需要有所野望,这将会成为你前进的动力。说一点点小小的感悟,下面正文开始。

    1.绝对定位+margin
    2.绝对定位+transform
    3.flex

    什么是盒模型?
    盒模型由这四个部分组成:

    content(内容区)
    padding(填充区)
    border(边框区)
    margin(外边界区)

    列举几种清除浮动
    1.clear
    2.伪元素
    3.创建BFC

    JS
    数组slice和splice的区别?
    1.splice非常霸道,它会改变数组,返回一个新的数组,
    2.slice比较温柔,不会修改数组,而是返回一个子数组。

    var、let、const三者的区别?
    var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。

    let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。

    const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

    下面的代码的结果是?

    var a = 2
    var fun = (function(){
        var a = 3;
        return function(){
            a++;
            alert(a)
        }
    })
    fun(); // 4
    fun(); // 5
    复制代码
    

    for of 和 for in区别 ?
    for in

    更适合对象----遍历数组和对象

    for of
    适合遍历数组
    遍历没有Symbol.iterator属性的对象是会报错的

    一个数组有重复元素,怎么用简单的方式去重?

    Array.from(new Set([1,1,1,1,1,1,4]))
    复制代码
    

    项目升级后,前端js脚本在不要求用户强刷浏览器的情况怎么更新?
    cookie,localstorage,sessionstorage区别?

    共同点:都保存在浏览器端,且是同源的(顺便解释一下同源:域名、协议、端口号相同)

    存储大小的不同:

    1.localStorage的大小一般为5M
    2.sessionStorage的大小一般为5M
    3.cookies的大小一般为4K
    有效期不同:

    1.localStorage的有效期为永久有效,除非你进行手动删除。
    2.sessionStorage在当前会话下有效,关闭页面或者浏览器时会被清空。
    3.cookies在设置的有效之前有效,当超过有效期便会失效。
    与服务器端的通信

    1.localStorage不参与服务器端的通信。
    2.sessionStorage不参与服务器端的通信。
    3.cookies参与服务器端通信,每次都会携带http的头信息中。(如果使用cookie保存过多数据会带来性能问题)
    4.localStorage和sessionStorage的作用域的区别详解不同浏览器无法共享localStorage或sessionStorage中的信息。 相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。

    Ajax-网络-http
    出现错误时会返回错误状态码,分别是什么?
    向服务器请求有哪些方式?请求有几种格式?
    前端向后端发送请求有几种方式?
    websocket是怎么与后端交互的?
    Vue
    Vue的双向数据绑定原理是什么?

    采用数据劫持结合发布者-订阅者模式的方式,通过 Object.definePorperty() 来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

    自定义指令如何定义,它的生命周期是什么?

    Vue.directive('red',{
        * bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作。
        * inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
        * update:被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
        * componentUpdated:被绑定元素所在模板完成一次更新周期时调用。
        * unbind:只调用一次,指令与元素解绑时调用。
    });
    复制代码
    

    子组件如何主动获取父组件中的数据?

    this.$parent.数组
    this.$parent.方法
    复制代码
    

    组件通信有哪些方案?
    数组变动
    这行代码是否正确,原因是什么? vm.items[1] = 'x';

    var vm = new Vue({
        data:{
            items:['a','b','c']
        }
    })
    vm.items[1] = 'x';
    复制代码
    

    computed和watch的区别?
    computed

    1.支持缓存,只有依赖数据发生改变,才会重新进行计算
    2不支持异步,当computed内有异步操作时无效,无法监听数据的变化
    3.c.omputed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过的数据通过计算得到的
    4.如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed
    5.如果computed属性属性值是函数,那么默认会走get方法;函数的返回值就是属性的属性值;在computed中的,属性都有一个get和一个set方法,当数据变化时,调用set方法

    watch

    1.不支持缓存,数据变,直接会触发相应的操作;
    2.watch支持异步;
    3.监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
    4.当一个属性发生变化时,需要执行对应的操作;一对多;

    页面中定义一个定时器,在哪个阶段清除?

    beforeDestroy 
    复制代码
    

    为什么销毁它: 在页面 a 中写了一个定时器,比如每隔一秒钟打印一次 1,当我点击按钮进入页面 b 的时候,会发现定时器依然在执行,这是非常消耗性能的。

    如果你现在也想学习前端开发技术,在学习前端的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以加入到我的Q群中:前114中6649后671,里面有许多前端学习资料以及2020大厂面试真题 点赞、评论、转发 即可免费获取,希望能够对你们有所帮助。

    相关文章

      网友评论

          本文标题:亲手带你简单的回答真实的前端面试题

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