9.8日完美世界前端笔试—B卷
前言
- 限时1.5h,单选21 * 3分 + 不限选择题9 * 3分(注意少选得1分哦)+ 问答题*2(20 + 10分)
- 我发现不管笔试难或易,总会有人吐槽“XXX公司是不是不想招人啊”,简单的就说刷不了人,难的就说都被刷了…… 哈哈哈
- 哎,光做笔试真没劲!我倒要看看哪家先进面。
选择题
选择题考得很简单,限于HTML、CSS、JS。大部分是css的问题比如box-sizing的值、 有哪些伪元素、flex:auto的属性简写。
问答题
没有编程,这部分应该算是编程题吧,可以用本地IDE。难道又要人工改卷嘛。
1. 写一个方法,求出路口到A到路口B的最短路径
- 题干就是这样的。就是求图的最短路径嘛,但是没有输入输出,也不知道该怎么写。
/*
求图的最短路径。
题目啥都不给,怎么写呀?
*/
// 假设已给出图的邻接矩阵,各点A、B、C用数字0、1、2……表示。所以找到0-1的最短路径就可以了
// 测试:
let arr = [[2, 3, 5], [3], [0], [0, 1], [1], [0]];
console.log(minRoad(arr)); // [0,3,1]
function minRoad(arr) {
let start = arr[0], roads = []
for(let i = 0; i < start.length; ++i) {
dfs(start[i], arr, [0])
}
return roads.sort((a,b) => a.length - b.length)[0]
function dfs(next, arr, road) {
// 这种情况下说明有环或者回头路,此路不通
if(road.includes(next)) {
return
}
// 这个说明找到路了
if(next === 1) {
roads.push([].concat(road, next))
return
}
// 如果没有找到,就继续往下
let nextPoint = arr[next];
for (let i = 0; i < nextPoint.length; ++i) {
dfs(nextPoint[i], arr, [].concat(road, next));
}
}
}
2. 写一个功能,实现页面动态展示本年的剩余天数——“XX年还剩XX天XX时XX分XX秒”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2 id="time"></h2>
<script>
/*
思路是用下一年的1.1日减去现在的时间的毫秒数,再格式化日期。
动态变化是用setInterval来实现的
*/
let div = document.getElementById('time');
setInterval(() => {
let date = new Date()
let now = date.getTime();
let nextYear = date.getFullYear() + 1;
let end = new Date(`${nextYear}-01-01`).getTime();
let last = end - now;
let show = getDate(date.getFullYear(), last);
div.innerText = show;
}, 1000);
// 格式化时间
function getDate(year, time) {
let relsecond = Math.floor((time/1000)%60);
let minute = ((time/1000)/60);
let relminute = Math.floor(minute%60);
let hour = minute/60;
let relhour = Math.floor(hour%24);
let relday = Math.floor(hour/24);
return `${year}年还剩${relday}天${relhour}时${relminute}分${relsecond}秒`
}
</script>
</body>
</html>