58同城2018秋招前端笔试试题分享

秋招的时候做了58前端的试卷,感觉难度还可以,本着有题共享,共同进步的精神,特意贴出,供各位牛友学习。

其中若有不对的答案敬请指出!


一、填空题(10题)

1. 号码段为131到139的11位手机号码正则校验: /^13[1-9][0-9]{8}$/


2. 移动端,如何在html中通过链接调起拨打电话<a href="tel:10086">10086</a>


3. 以下代码的输出结果: "teacher" ; Uncaught ReferenceError: s is not defined

{
    var t=‘teacher’;
    let s=‘student’;
}
console.log(t);
console.log(s);
 

4. HTTP协议的状态码200、400、500分别代表什么?200: OK; 400: Bad Request; 500: Internal Server Error


5. JavaScript算术运算:‘10’+ 1结果为‘101’ ‘10’-1结果为96. var ting = 1, shi=3, wei=2;用ES6字符串模板的方式输出:1室3厅2卫。`${ting}室${shi}厅${wei}卫`


7. 用ES6解构的方式,将下面代码中的obj.name赋值给n,obj.age赋值给a:let {name: n, age: a} = obj;

let obj = {name:’韩梅梅’, age:’20’};

let n, a;


8. HTTP协议默认的端口号__80__HTTPS协议的端口号__443__


9. 名词解释:MVCmodel-view-controller、MVPmodel-view-presenter、MVVMmodel-view-viewmodel


10. Flex布局实现容器box内部元素item垂直居中对齐。.box {display: flex; align-items: center }



二、简答题(5题)


1. CSS3的box-sizing的取值及各值的说明。


2. 请写出下列代码的执行结果:

function switchCase(value){
    switch(avlue){
        case ‘0’:console.log(‘case 0’);
        case ‘1’:console.log(‘case 1’);break;
        case undefined:console.log(‘undefined’);break;
        default:console.log(‘default’);
}
}
 
// 写出下列输出结果
switchCase(0);
switchCase(‘0’);
switchCase();


3. 列举出通过CSS样式隐藏元素的方法,并说明其区别。


4. 请写出下面代码的执行结果:

var s = {
    s: ‘student’,
    getS: function(){
    console.log(this.s);
}
};
var t = {
    s: ‘teaher’
};
 
var getS = s.getS;
var getS1 = getS.bind(s);
 
// 写出以下输出结果
s.getS();
s.getS.apply(t);    
getS();
getS1.call(t);


5. 列出移动端开发中适配各种屏幕尺寸的解决方案(至少3种)



三、应用题(2题)


1. 用js实现一个随机打乱数组顺序的函数,要求可以设定数组种任意1个元素的位置不变,其他位置的元素位置随机变化。


2. 用js实现一个比较APP版本号的大小的函数,版本号各市由数字和.组成。例如:1.1.0、1.10、1.2.3等。


#58集团##前端工程师#
全部评论
感觉这套笔试题蛮基础的
点赞 回复
分享
发布于 2018-04-19 23:39
// 第一题 var arr = [1, 2, 3, 4] function mess(index){     let res = arr.splice(index, 1)[0]     arr.sort((a, b)=>Math.random()-0.5)     arr.splice(index, 0, res)     console.log(arr) } // 第二题 var str1 = '3.1.1'; var str2 = '3.1.1.1'; // 返回较大的数 function compare(v1, v2){     let res1 = v1.split('.')     let res2 = v2.split('.')     function giveZero(arr, start, end){         for(let i = start; i <= end; i++){             arr[i] = '0';         }     }     if(res1.length > res2.length){         giveZero(res2, res2.length, res1.length - 1)     }else if(res1.length < res2.length){         giveZero(res1, res1.length, res2.length - 1)     }     return res1.join('') > res2.join('') ? v1 : v2 } let res = compare(str1, str2) console.log(res)
点赞 回复
分享
发布于 2018-10-27 09:38
阿里巴巴
校招火热招聘中
官网直投
列出移动端开发中适配各种屏幕尺寸的解决方案,rem,百
点赞 回复
分享
发布于 2018-03-02 19:59
//小白的比较版本号     function compare(s1,s2){         let arr1=s1.split('.');         let arr2=s2.split('.');         for(let i=0;i<Math.min(arr1.length,arr2.length);i++){             if (parseInt(arr1[i])>parseInt(arr2[i])){                 return 1;                 break;             }else if(parseInt(arr1[i])<parseInt(arr2[i])){                 return -1;                 break;             }else{                 return 0;             }         }     } let s1="1.1.0"; let s2="1.1"; console.log(compare(s1,s2));
点赞 回复
分享
发布于 2018-05-20 20:38
关于比较版本号:最高位:大的版本变化中间位:新增功能第三位:bug修复 所以我觉得:比较版从最高位开始依次比较就可以。 /** * 返回高版本号 * 相同,返回true */ function compare(v1, v2) { var v1ar = v1.split('.'); var v2ar = v2.split('.'); // 依次比较版本每一位 for(var i = 0; i < 3; i++) { var version = compareTo(v1ar[i], v2ar[i]); if(version === 0) continue; if(version === 1) return v2; if(version === 2) return v1; } // 版本号相同 return true; } // a === b return 0 // a < b return 1 // a > b return 2 function compareTo(a, b) { a = parseInt(a) || 0; b = parseInt(b) || 0; if(a === b) return 0; if(a < b) return 1; if(a > b) return 2; }
点赞 回复
分享
发布于 2018-08-31 11:22
感谢牛油分享!
点赞 回复
分享
发布于 2018-03-02 17:45
  function compareVersions(v1,v2){         var v1s = v1.split('.');         var v2s = v2.split('.');         var res = compare(v1s,v2s);         if(1 === res){             return '第一个版本高';         }else if(-1 === res){             return '第二个版本高';         }else if(0 === res){             return '两个版本相同';         }     }     function compare(v1,v2){         var lens = v1.length>v2.length?v2.length:v1.length;// min(长度)         for(let i = 0;i<lens;i++){             console.log(i);             v1[i] = v1[i].split('');             v2[i] = v2[i].split('');             var len = v1[i].length>v2[i].length?v2[i].length:v1[i].length;             // 相同长度版本判别             for(let j = 0;j<len;j++){                 console.log(v1[i][j],v2[i][j])                 if(v1[i][j]>v2[i][j]){                     return 1;                 }else if(v1[i][j]<v2[i][j]){                     return -1;                 }else{                 }             }             // 不同长度版本追加判别             if(v1[i].length>v2[i].length){                 return 1;             }else if(v1[i].length<v2[i].length){                 return -1;             }else{             }         }         if(v1.length>v2.length){             return 1;         }else if(v1.length<v2.length){             return -1;         }else{             return 0;         }     }     let v1 = '2.2.3aa';     let v2 = '1.2.3a';     console.log(compareVersions(v1,v2));
点赞 回复
分享
发布于 2018-08-27 15:49
getS1.call(t); 请问这个为何是student
点赞 回复
分享
发布于 2018-09-01 20:35
1. 用js实现一个随机打乱数组顺序的函数,要求可以设定数组种任意1个元素的位置不变,其他位置的元素位置随机变化。 function arrayRandom(array,index2){ array.map(function(item,index){ if(index!=index2){ var x=parseInt(Math.random()*(array.length)); if(x!=index2){ array[index]=array[x] array[x]=item; } } }) return array; }
点赞 回复
分享
发布于 2018-09-07 10:56
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } function shuffle(arr, target) {   let _arr = arr.slice() for (let i = 0; i < _arr.length; i++) {     if (i !== target) {      let j = getRandomInt(0, i);      if (j !== target)      [_arr[i], _arr[j]] = [_arr[j], _arr[i]]     }   }   return _arr }
点赞 回复
分享
发布于 2018-10-28 10:33
好基础
点赞 回复
分享
发布于 2018-11-13 19:01

相关推荐

点赞 390 评论
分享
牛客网
牛客企业服务