cvte春招前端笔试编程题记录
2018-03-11 13:06
267 查看
昨天做了cvte的笔试题,想了一下,题目不难,但感觉自己做的不理想。。。
废话不多说,进入正题。
第一道编程题,要求如下:
实现一个函数,输入的数组是2n项,则把这数组以2个为一组分割,并使每个分割后的数组的最小值相加最大,并输出。
例如:【1,4,3,2】输出为4;
【1,5,7,9,4,12】输出为15.
第二道:html5中的localstroage是没有时间限制的,二次封装localstorage使其带有过期机制,过期后删去所有数据。
第一题,一开始我有点懵,没理解好题意,喝口水冷静一下,想到,要使每个分割后的数组的最小值相加最大,即是要让每个小的数和只比它大一点的数一组,那么别的数组分割后的数组的最小值就会大了。那么只要对输入的数组进行从小到大排序,之后分割就行,不多说,上码:
function minmax(m){
//首先判断输入的数组是否是2n
if(m.length%2 === 0){
m.sort(function(a,b){return a-b;});//对数组进行排序
var total=0;
for(let i = 0;i<m.length;i+=2){
total+=m[i];
}
console.log(total);
}
else {
console.log("数组应为2n个成员");
}
}
现在回想,当时是不能跳出来调试的,估计语法有好多漏洞。。。。。。还有就是,我没有将数组分割开,我估计他们想考察的是数组的分割,心疼自己。
第二道:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>cache storage</title>
</head>
<body>
<script>
'use strict'
;(function () {
var ls = window.localStorage
function oops () {
return console.warn('your browser is not supported localStorage API')
}
function getItem (key) {
var data = ls.getItem(key) //在没有数据项的情况下,data为null
data = JSON.parse(data)||{}
if (data.time === 0) {// 上句如是data = JSON.parse(data),在data.time时,就会报错。所以调整成data = JSON.parse(data)||{}
return data.value
} else if (Date.now() > data.time) { // 判断是否超时
ls.removeItem(key)
return ''
} else {
return typeof data.value !== 'undefined' ? data.value : ''
}
}
function setItem (key, value, time) {
if (typeof key === 'undefined') {return}
var data = {
time: time ? Date.now() + time : 0,
value: value
}
data = JSON.stringify(data)
try {
ls.setItem(key, data)
} catch (e) {
ls.clear()
ls.setItem(key, data)
}
}
function removeItem (key) {
ls.removeItem(key)
}
function clear () {
ls.clear()
}
window.cacheStorage = {//浏览器支持使用localStorage,不支持输出提示语
getItem: ls ? getItem : oops,
setItem: ls ? setItem : oops,
removeItem: ls ? removeItem : oops,
clear: ls ? clear : clear
}
})()
</script>
</body>
</html>
到此结束了,笔试结果不重要啦,希望自己能继续成长。
废话不多说,进入正题。
第一道编程题,要求如下:
实现一个函数,输入的数组是2n项,则把这数组以2个为一组分割,并使每个分割后的数组的最小值相加最大,并输出。
例如:【1,4,3,2】输出为4;
【1,5,7,9,4,12】输出为15.
第二道:html5中的localstroage是没有时间限制的,二次封装localstorage使其带有过期机制,过期后删去所有数据。
第一题,一开始我有点懵,没理解好题意,喝口水冷静一下,想到,要使每个分割后的数组的最小值相加最大,即是要让每个小的数和只比它大一点的数一组,那么别的数组分割后的数组的最小值就会大了。那么只要对输入的数组进行从小到大排序,之后分割就行,不多说,上码:
function minmax(m){
//首先判断输入的数组是否是2n
if(m.length%2 === 0){
m.sort(function(a,b){return a-b;});//对数组进行排序
var total=0;
for(let i = 0;i<m.length;i+=2){
total+=m[i];
}
console.log(total);
}
else {
console.log("数组应为2n个成员");
}
}
现在回想,当时是不能跳出来调试的,估计语法有好多漏洞。。。。。。还有就是,我没有将数组分割开,我估计他们想考察的是数组的分割,心疼自己。
第二道:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>cache storage</title>
</head>
<body>
<script>
'use strict'
;(function () {
var ls = window.localStorage
function oops () {
return console.warn('your browser is not supported localStorage API')
}
function getItem (key) {
var data = ls.getItem(key) //在没有数据项的情况下,data为null
data = JSON.parse(data)||{}
if (data.time === 0) {// 上句如是data = JSON.parse(data),在data.time时,就会报错。所以调整成data = JSON.parse(data)||{}
return data.value
} else if (Date.now() > data.time) { // 判断是否超时
ls.removeItem(key)
return ''
} else {
return typeof data.value !== 'undefined' ? data.value : ''
}
}
function setItem (key, value, time) {
if (typeof key === 'undefined') {return}
var data = {
time: time ? Date.now() + time : 0,
value: value
}
data = JSON.stringify(data)
try {
ls.setItem(key, data)
} catch (e) {
ls.clear()
ls.setItem(key, data)
}
}
function removeItem (key) {
ls.removeItem(key)
}
function clear () {
ls.clear()
}
window.cacheStorage = {//浏览器支持使用localStorage,不支持输出提示语
getItem: ls ? getItem : oops,
setItem: ls ? setItem : oops,
removeItem: ls ? removeItem : oops,
clear: ls ? clear : clear
}
})()
</script>
</body>
</html>
到此结束了,笔试结果不重要啦,希望自己能继续成长。
相关文章推荐
- 前端笔试题目记录
- 前端在线编程笔试记录——幸运数字
- 2018年美团校招前端WEB笔试编程题-最小的排列
- 同花顺笔试碰到的一道前端编程题
- 网易前端笔试编程题——数对
- 【WEB】网易2017年前端工程师实习生招聘笔试编程题总结
- 美图2018校招前端笔试编程题数组去重
- 前端笔试题面试题记录(上)
- JS前端笔试编程题(1)
- 搜狐2017 WEB前端开发 秋招笔试编程题
- 网易2018提前批前端笔试编程题
- 华为2016校园招聘上机笔试题[编程题] 简单错误记录
- 记录XYD笔试的一道基础编程题
- 大华前端笔试编程题:动态加载,并删除
- 前端在线编程笔试记录——蛇形数字
- 搜狗2016年校招笔试编程题记录+总结
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
- 网易前端笔试编程题——迷路的牛牛
- 百度前端秋招笔试编程题
- 网易前端笔试编程题——被3整除