来源:本人掘金文章
一、笔试部分 (电话面部分还在整理,后续发出来)
介绍:
1) 最近挑战了下阿里和腾讯;偶尔阶段性的去面面试,个人觉得能对自己很好的检验,知道自己的不足,有没有和潮流技术脱轨等;
2) 以下解法为后面自己优化过的... 有问题或有不对之处欢迎指正
3) 笔试时,浏览器页面左边是编码区域,右边是视频区域,和面试官视频...
4) 内置编辑器相当于用记事本编码,没有语法自动补全及提示,也不能运行调试;并且浏览器不能切换标签(不能百度)... 考验js功底
要求:
1) 笔试时间: 40分钟
2) 笔试题目: 3道题,由易到难
3) 笔试要求: 需要使用在线编辑器编写,笔试是实时通信,考官可以一直看到你的代码进度。不切换浏览器页签,不在线搜索原生函数的使用方式
4) 笔试惩罚: 1)未使用在线编辑器,以不通过处理 2)一旦发现作弊,永久录入黑名单
1. 实现一个函数,输入一个单词,返回输入单词是否符合全大写、全小写、首字母大写规则,正确返回true,错误返回false
const checkValid = (word) => {
let toU = word.toLocaleUpperCase();
let toL = word.toLocaleLowerCase();
let initialsToU = word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase();
if (initialsToU === word || toU === word || toL === word) {
return true
} else {
return false
}
console.log(checkValid('china'))
}
2. 实现一个方法,数组为升序返回1,数组为降序返回-1,乱序返回0
const isSorted = (arr) => {
let target = arr.toString().replace(/,/g, '')
let riseTarget = arr.sort((a, b) => {
return a - b
}).toString().replace(/,/g, '')
let dropTarget = arr.sort((a, b) => {
return b - a
}).toString().replace(/,/g, '')
if (target === riseTarget) {
return 1
} else if (target === dropTarget) {
return -1
} else {
return 0
}
}
console.log(isSorted([3, 2, 1, 0]))
3. 实现一个节流函数, 它返回一个新函数,新函数即时连续多次执行, 在wait
的时间执行一次。并要求此节流函数第一次运行就会执行fn
const throttle = (fn, wait) => {
let isNext = true;
return () => {
if (!isNext) return;
isNext = false;
setTimeout(() => {
fn()
isNext = true;
}, wait)
}
}
window.addEventListener("resize", throttle(() => console.log('我是节流函数'), 1000))