巅峰时期,一下午面了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');
}
}
网友评论