zoukankan      html  css  js  c++  java
  • 从面试中查漏补缺

    工作以来换了几个地方,这次打算认真找一个合适的公司。总结一下部分最近遇到的面试题

    1.宏队列和微队列

    宏队列:dom事件回调、ajax回调、定时器回调

    微队列:promise回调、mutation回调

    执行时下一个宏队列时会先执行微队列。

    const first = () => (new Promise((resolve, reject)=>{
        console.log(3);
        let p = new Promise((resolve, reject)=>{
            console.log(7);
            setTimeout(() => {
                console.log(5)
                resolve(6)
            }, 0);
            resolve(1);
        })
        resolve(2);
        p.then(value=>{
            console.log(value)
        })
    }))
    
    first().then(value=>{ 
        console.log(value)
    })
    
    console.log(4);
    
    输出结果为:3 7 4 1 2 5 

    2.闭包

    用途:函数传参

    函数防抖,

    封装私有变量,

    作为回调

    定义行为,然后把它关联到某个用户事件上(点击或者按键)。代码通常会作为一个回调(事件触发时调用的函数)绑定到事件。

    <body>
        < a href=" " id="size-12">12</ a>
        < a href="#" id="size-20">20</ a>
        < a href="#" id="size-30">30</ a>
    
        <script type="text/javascript">
            function changeSize(size){
                return function(){
                    document.body.style.fontSize = size + 'px';
                };
            }
    
            var size12 = changeSize(12);
            var size14 = changeSize(20);
            var size16 = changeSize(30);
    
            document.getElementById('size-12').onclick = size12;
            document.getElementById('size-20').onclick = size14;
            document.getElementById('size-30').onclick = size16;
    
        </script>
    </body>
    </html>

    优点:
    1.保护函数内的变量安全,加强了封装性
    2.在内存中维持一个变量(用的太多就变成了缺点,占内存)
    闭包之所以会占用资源是当函数a执行结束后, 变量i不会因为函数a的结束而销毁, 因为b的执行需要依赖a中的变量。

    缺点:会占用大量内存,

    3.深拷贝和浅拷贝

    拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存。

    4.promise

    5.指向与强制更改指向(call,apply,bind)

    6.判断一个对象是否为数组

      1.通过instanceof判断

    let a = [];
    a instanceof Array; //true
    let b = {};
    b instanceof Array; //false

      2.Object.prototype.toString().call()获取到对象的不同类型

      3.Array.isArray() 

    7. css画三角形(设置border属性即可)

    8.立即执行函数

    9.$.ref

      1、ref 加在普通的元素上,用this.ref.name 获取到的是dom元素

      2、ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法

      3、如何利用 v-for 和 ref 获取一组数组或者dom 节点(ref是作为渲染结果被创建的,所以在初始渲染时ref并不能被访问$ref也不是响应式的

        ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用

        如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。)

    10...

  • 相关阅读:
    安装pip
    Jmeter查看吞吐量
    maven打包为jar文件时,解决scope为system的jar包无法被打包进jar文件的解决方案。
    spring cloud unavailable-replicas
    IDEA实用插件
    spring-mvc项目整合jetty实现单war包自启动webapp
    集成多数据源支持和REDIS后只有一个配置能起作用的处理。
    spring整合redis缓存,以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
    基于spring的aop实现多数据源动态切换
    安装Oracle11gR2先决条件检查失败的详细解决处理过程
  • 原文地址:https://www.cnblogs.com/wanghuanl/p/15077222.html
Copyright © 2011-2022 走看看