去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
编程题很简单。整个试卷结构为:
一、问答题:
对前端的理解,了解哪些框架库?
二、在线编程题:身份证分组
如下第一道:身份证分组
三、在线编程题:身份证分组、统计字符、酒店价格(三选二)
如下第二三四道题中三选二作答。
我也搞不懂为什么有两部分编程题~~~下面详细说一说编程题目及JS代码实现:
第一道:身份证分组
代码:
1 var line; 2 while(line = read_line()){ 3 while(line.indexOf(" ") != -1){ 4 line = line.replace(" ",""); 5 } 6 if(line.length <= 6){ 7 print(line); 8 } 9 else if(line.length > 6 && line.length <= 14){ 10 var line1 = line.substring(0,6); 11 var line2 = line.substring(6); 12 print(line1 + " " + line2); 13 } 14 else if(line.length > 14 && line.length <= 18){ 15 var line1 = line.substring(0,6); 16 var line2 = line.substring(6,14); 17 var line3 = line.substring(14); 18 print(line1 + " " + line2 + " " + line3); 19 } 20 }
说明:全部AC。
第二道:文件扩展名
代码:
1 var line; 2 while(line = read_line()){ 3 while(line.indexOf(".") != -1){ 4 line = line.split("."); 5 print(line[line.length-1]); 6 } 7 }
说明:全部AC。
第三道:统计字符
代码:
1 function find (obj, key) { 2 if (! typeof obj === 'object') { 3 return false; 4 } 5 if (key in obj) { 6 return true; 7 } 8 else { 9 return false; 10 } 11 } 12 var line; 13 while(line = read_line()){ 14 if(Object.prototype.toString.call(line)==='[object String]'){ 15 while(line.indexOf(" ") != -1){ 16 line = line.replace(" ",""); 17 } 18 var json = {}; 19 for(var i = 0; i < line.length; i++){ 20 if (!find(json, line[i])){ 21 json[line[i]] = 1; 22 } 23 else if(find(json, line[i])) { 24 json[line[i]] = json[line[i]] + 1; 25 if (json[line[i]] == 3&&((line[i]<='z'&&line[i]>='a')||(line[i] <= 'Z'&&line[i] >= 'A'))){ 26 print(line[i]); 27 break; 28 } 29 else { 30 continue; 31 } 32 } 33 } 34 } 35 }