2018年遇到的一些前端面试题

2018-11-24  本文已影响0人  白羊座的黄同学

巅峰时期,一下午面了3家。虽然是带着去试水的心态,但是3轮技术面下来人确实是头昏脑涨,感觉身体被掏空。。。
首先给大家提醒一下,厉害的面试官是根据你简历上的内容来考查你的知识体系和技术栈,各位看官千万不要在简历上吹得太厉害了。不然受伤的总会是自己~,话不多说,上题:
1.做一个计算器功能。要求:可以连续计算,如输入1+2*3这种算式;每次刷新时候数字键1到9重新排列;有删除和退格键;类似这个样子的:



PS:小看了这道题,跟面试官夸下海口30分完成,然后灰溜溜的用了50分钟
解析:
①编写布局。。。随意
②数字乱序使用费雪耶兹随机置乱算法

var arr=[0,1,2,3,4,5,6,7,8,9];
//费雪耶兹随机置乱算法
(function(arr) {
  let i = arr.length;
  while (i) {
     let j = Math.floor(Math.random() * i--);
     [arr[j], arr[i]] = [arr[i], arr[j]];
   }
 })(arr);

③用代理注册按键的点击事件。活用event.target
④验证计算试是否合法!!!(正则计算)
⑤根据计算式计算结果。我是将表达式拆分为两个数组,一个数组是要计算的数字,一个数组是符号。根据符号数组,先计算乘除取余,再计算加减

2.写一个方法,可接受任意参数。但是必须讲传入的NaN,undefined,null判断出来。
记得区分‘NaN’,‘undefined’,‘null’这几个字符串

function checkType(obj){
        if(typeof(obj)==='undefined'){
          console.log('obj是undefined');
        }
        if(Number.isNaN(obj)){
          console.log('obj是NaN');
        }
        if (!obj && typeof(obj)!="undefined" && obj!==0){
          console.log('obj是null');
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读