面经练习(十四)

1.async/await执行原理

async/await执行原理

2.mouseover和mouseenter的区别

在这里插入图片描述

3.快速判断二叉树前序或后序遍历

快速判断二叉树前序或后序遍历

4.找出字符串中连续出现次数最多的字符和次数

function chaozhao(str) {
            let arr = str.split('')
            let map = new Map();
            let max = 1;
            let max1 = 1;
            for (let i = 0; i < arr.length; i++) {
                if (!map.has(arr[i])) {
                    if (arr[i + 1] == arr[i]) {
                        max++;
                    } else if (arr[i + 1] !== arr[i]) {
                        map.set(arr[i], max);
                        max = 1;
                    }
                } else if (map.has(arr[i])) {
                    if (arr[i + 1] == arr[i]) {
                        max1++;
                    } else if (arr[i + 1] !== arr[i]) {
                        let max2 = map.get(arr[i]);
                        max1 > max2 ? max1 : max2;
                        map.set(arr[i], max1);
                        max1 = 1;
                    }
                }
            }
            let result = [];
            map.forEach(function(value, key) {
                max = max > value ? max : value;
            })
            map.forEach(function(value, key) {
                if (value == max) {
                    result.push(`${key}:${max}`);
                }
            })
            return result;
        }
        let str = 'aaadjdoaaaaacccddaaaaaaaaaao';
        console.log(chaozhao(str));

5.输入输出题 立即执行函数里面的变量提升

        var v = 'hello';
        (function() {
            console.log(v);

            function v() {
                var v = 'happy';
                console.log(v);
            }
            v();
        })()

输出结果如下:
在这里插入图片描述

6.输入输出题 函数没有返回值输出undefined

        var i = 1;
        var n = m = 0;

        function myFun(x) {
            x = (x++) + 5;
        }
        n = myFun(1);

        function anotherFun(x) {
            x = (--x) + 5;
        }
        m = anotherFun(n);
        console.log(n);
        console.log(m);

两个函数里 都没有对x 进行 return 所以输出结果都是undefined

7.vue eventbus事件总线

vue eventbus事件总线

8.异步加载在Vue生命周期哪个阶段更合理

在这里插入图片描述

9.图片垂直居中的方法:

1.父:line-height和text-align:center 子:vertical-align: middle
2.父:display:table-cell, vertical-align: middle , text-align:center 子:display:inline-block
3.flex布局 父:display:flex justify-content: center;
align-items: center;
4.绝对定位布局
5.转换成背景图片:
background:url (img/logo.png) no-repeat center center

10.vuex的核心概念

在这里插入图片描述

11.为什么link用href获取资源 script和img用src

在这里插入图片描述

12.css引入的两种方法link和@import的区别和用法

css引入的两种方法link和@import的区别和用法

13.堆排序

function heapSort(array){
    //1、创建最大堆:从最后一个节点的父节点开始
    let len = array.length-1;
    let lastIndex = Math.floor((len-1)/2);
    for(let i=lastIndex; i>=0; i--){
        maxHeap(array, len, i); //从最后一个节点的父节点开始层层向上
    }
    for(let i=len; i>0; i--){
        let temp = array[0];
        array[0] = array[i];
        array[i] = temp;
        maxHeap(array, i, 0);//去掉已排好序的节点,剩余节点重新构堆。
    }
}
function maxHeap(array, heapSize, index){  //从最后一个子节点到第index节点构堆
    //左子节点
    let leftChild = 2*index+1;
    //右子节点
    let rightChild = 2*index +2;
    //最大元素下标
    let largestIndex = index;
    //分别比较当前假设的最大节点和它的左右节点,找出最大值
    if(leftChild<heapSize && array[leftChild]>array[largestIndex]){
        largestIndex = leftChild;
    }
    if(rightChild<heapSize && array[rightChild]>array[largestIndex]){
        largestIndex = rightChild;
    }
    if(largestIndex !== index){
        let temp = array[largestIndex];
        array[largestIndex] = array[index];
        array[index] = temp;
        //交换后,其子节点可能就不是最大堆了,需要对交换后的子节点重新调整
        maxHeap(array, heapSize, largestIndex)
    }
}
let array = [23,4,12,8,5,26,3,4,1];
heapSort(array);
console.log(array);  //[1,3,4,4,5,8,12,23,26]

14.浏览器渲染原理:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值