面试题

作者: 大仙爷 | 来源:发表于2023-04-10 16:21 被阅读0次

    一、(单项选择)下面程序的执行结果是

    var name = 'World!';
    (function () {
      if (typeof name === 'undefined') {
        var name = 'Jack';
        console.log('Goodbye ' + name);
      } else {
        console.log('Hello ' + name);
      }
    })();
    
    
    • A、Goodbye Jack
    • B、Hello Jack
    • C、Hello undefined
    • D、Hello World

    答案:A


    二、(单项选择)

    var array1 = [1,2];
    
    var array2 = array1;
    
    array1[0] = array2[1];
    
    array2.push(3);
    
    console.log(array1);
    
    console.log(array2);
    

    执行上面的代码array1array2的值分别是什么?

    • A、Array1的值为[2,2];Array2的值为[1,2,3]
    • B、Array1的值为[2,2,3];Array2的值为[1,2,3]
    • C、Array1的值为[2,2,3];Array2的值为[2,2,3]
    • D、Array1的值为[1,2,3];Array2的值为[1,2,3]

    答案:C


    三、 实现一个简单数组排序算法

    答案 function arrSort(arr){

    const len = arr.length

    if(len<2) return arr

    for(let i = 0; i < len; i++){

    for(let j = 0; j < len - i - 1;j++>){

    if(arr[j]>arr[j + 1]){

    const temp = arr[j]

    arr[j] = arr[j + 1]

    arr[j+1] = temp

    }

    }

    }

    return arr

    }


    四、 使用Array.sort方法对对象数组进行排序

    如:

    let arr = [{a: 1, b: 2}, {a: 2, b: 1}, {a: 1, b: 1}]
    

    以a为升序,b降序排序

    答案 arr.sort((a, b) => (a.a < b.a ? 1 : -1)).sort((a, b) => (a.b <b.b ? 1 : -1))

    
    ------
    
    ## 五、对一个对象进行深拷贝,两种实现方式都写
    如:
    ```JavaScript
    var obj = {
        n1: 1,
        arr1: [1, 2, 3],
        f1: () => {
            console.log('f1');
        },
        o1: {
            s1: 'good luck'
        }
    }
    
    1. 使用函数库
    2. 使用递归方式自己实现

    答案 function deepClone(obj){

    const targetObj = obj.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象

    for(let keys in obj){ // 遍历目标

    if(obj.hasOwnProperty(keys)){

    if(obj[keys] && typeof obj[keys] === 'object'){ // 如果值是对象,就递归一下

    targetObj[keys] = obj[keys].constructor === Array ? [] : {};

    targetObj[keys] = deepClone(obj[keys]);

    }else{ // 如果不是,就直接赋值

    targetObj[keys] = obj[keys];

    }

    }

    }

    return targetObj;

    }


    六、说说对Promise的理解

    答案:在传统的异步编程中,如果异步之间存在依赖关系,我们就需要通过层层嵌套回调来满足这种依赖,

    如果嵌套层数过多,可读性和可维护性都变得很差,产生所谓“回调地狱”,而Promise将回调嵌套改为链式调用,增加可读性和可维护性。

    promise有三种状态pending 初始状态、fulfilled 成功状态、rejected 失败状态,状态一旦改变就不可逆。


    七、CSS相关单选

    <!DOCTYPE html>
    <html><head><style>
    div .con-span {
        color: blue;
    }
    #con-id span {
        color: red;
    }
    .con-div .con-span {
        color: black;
    }
    div.con-div .con-span {
        color: green;
    }
    </style></head>
    <body>
    <div class="con-div" id="con-id">
        <span class="con-span">my color</span>
    </div>
    </body></html>
    

    以上html中my color显示的颜色是什么:

    • A、red
    • B、blue
    • C、black
    • D、green

    答案A


    八、div水平垂直居中的方法

    答案:1:父元素相对定位 position:relative;

    子元素position:absolute;left:50%;top:50%;transform:(-50%.-50%);

    2:父元素display:flex;align-items:center;justify-content:center;


    八、响应式布局的实现方式有哪些

    答案:1:百分比布局;2:媒体查询布局;3:rem布局;4:flex弹性布局。


    九、网页请求数据时跨域的解决方案

    1:设置相同域名,相同http协议;2:vue的地址代理;


    十、HTTP 与 HTTPS 区别

    答案:1:https协议需要到ca申请证书,会产生费用;2:http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议;

    3:http和https的连接方式不一样,所用端口也不同,前者是80端口,后者是443端口;4:http的连接很简单,是无状态的,https是由ssl+http协议构建

    的可进行加密传输、身份认证的网络协议。

    相关文章

      网友评论

          本文标题:面试题

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