阿里巴巴_业务平台事业部_前端实习_笔试

前言

  博主投递了阿里巴巴 业务平台事业部 的 前端内推,但是还是要笔试。阿里的前端笔试编程难度不大,但是对于基础知识的考查十分仔细,挖死角,角度刁钻。
  阿里笔试不允许切换界面,截图也不行;需保持摄像头的开启;编程面板为白板,回车也不带缩进的那种。。。。
  把能记住的题目和自己的答案放上来,欢迎一起讨论。。。

笔试时长: 1h
一、单项选择题
  1. 以下事件中能监听 input 输入的内容变化的是:a

    a. change

    b. input

    c. blur

    d. hover

  2. http 1.1 和 http2.1 大部分考 请求头

  3. websocket 大部分考 请求头

  4. BFC

二、不定项选择题
  1. react 的生命周期函数中能使用 setState 的是:b

    a.componentWillMount

    b.componentDidMount

    c.componentWillUpdate

    d.componentDidUpdate

    e.render

  2. *关于Promise,下列说法正确的是:b d

    a.Promise.resolve 返回一个 Promise 对象,状态为 fufilled

    b.Promise.rejected 返回一个 Promise 对象,状态为 rejected

    c. Promise.all 中当所有 Promise 为 fufilled 或 rejected 时,状态为 fufilled

    d.Promise.race 中当有一个 Promise 为 fufilled 时,状态为 fufilled

    e.Promise.all 的所有参数都要是Promise 对象

    f.Promise.race 的所有参数都要是Promise 对象

  3. 关于异步,下列说法正确的是:微队列,宏队列,node 中的异步机制

  4. 关于node 的说法,下列说法正确的是:

三、编程输入题(白板)
  1. 根据规定生成二维数组

输入 column 和 target ;生成如下的 二维数组:
1.column: 4 target: 6
result: [
[1, 1, 1, 1],
[1, 1, 0, ‘’]
]
2.column: 3 target: 6
result: [
[1, 1, 1],
[1, 1, 1],
[0, 0, '
’]
]
二维数组中1的个数刚好等于 target;
多出来的部分用0填充,并且最后一项必须是 字符串 ‘*’

function createMatrix(column, target) {
    const matrix = [];

    // 在此处输入你的代码
    let count = 0;
    while(count < target) {
        const arr = [];
        for(let i = 0;i < column;i++) {
            if(count === target) {
                arr.push(0);
            } else {
                arr.push(1);
                count++;
            }
        }
        matrix.push(arr);
    }

    // 考虑特殊情况
    if(matrix[matrix.length - 1][column - 1] === 1) {
        matrix.push(Array(column).fill(0));
    }
    matrix[matrix.length - 1][column - 1] = '*';

    return matrix;
}
  1. 编写金额格式化功能函数 formateAmount

实现一个 formateAmount 函数,可以处理金额的格式
保留符号,小数点后两位,每三位加逗号
还需要判断是否为合法输入,如果输入不是金额,输出 ‘-’
例如:
formateAmount(23000000) => ‘23,000,000’
formateAmount(’-23.00000000’) => ‘-23.00’
formateAmount(‘2e6’) => ‘2,000,000’
formateAmount(‘Apple’) => ‘-’

function formateAmount(amount) {
    // 在这里输入你的代码
    let amountNum = Number(amount);
    
    if (isNaN(amountNum)) {
        return '-';
    }

    // 如果为负数
    let symbol = '';
    if (amountNum < 0) {
        symbol = '-';
    }

    const amountStr = amount + '';
    // 截取 整数部分
    const intStr = (Math.abs(amountNum) + '').split('.')[0];
    // 如果含有小数点
    const floatStr = (amountStr.indexOf('.') !== -1) ? amountStr.split('.')[1] : '';

    // 处理整数部分
    let result = '';
    const intLen = intStr.length;
    for (let i = intLen - 1; i >= 0; i--) {
        // 此处注意 下标是从大到小的
        const index = intLen - i - 1;
        if ((!(index % 3)) && index) {
            result = ',' + result;
        }
        result = intStr[i] + result;

    }

    // 处理小数部分
    const floatLen = floatStr ? floatStr.length : 0;
    if(floatLen) {
        result += '.';
    }
    for (let i = 0; i < 2 && i < floatLen; i++) {
        result += floatStr[i];
    }


    return symbol + result;
}

  1. 如果你来设计淘宝H5的首页,在 Disabled cache 的情况下,怎么实现秒加载

      当时想到的是 性能优化,图片处理懒加载 等。。。大佬说这个可能是考 PWA。。
      继续努力!

你可能感兴趣的:(面试,javascript)