这道题呢,来源于一篇文章,《如何准备一次技术面试》,它以作为面试官的角度讲了一些技术面试的小技巧。
大家应该也都知道技术面试中对于基础知识的考察,总是从一些基本的问题,层层深入。
字符串反转就是一个面试的常见问题。这是我最初的解法,当然也是大部分人的解法:
//解法一
function reverse(str){
for(var i=0;i<str.length;i++){
newstr=str.charAt(i)+newstr;
}
return newstr;
}
console.log(reverse(str));
这段代码并没有问题,但并不是一个好的答案。这个时候面试官大多会引导面试者去优化他,去完善他,或者能否提供更好的解决方案。如果能够在提供多种方案,并能够比较优劣的话,将会是一次比较好的面试。
那么还有哪些比较好的解法呢?
//解法二
function reverse(str){
if(str.length===1){
return str
}
return str.slice(-1)+reverse(str.slice(0,-1));
}
console.log(reverse(str));
//解法三
function reverse(str) {
return str.split('').reduce((prev, next) => next + prev);
}
console.log(reverse(str));
//解法四
function reverse(str) {
return str
.split('')
.reverse()
.join('')
}
console.log(reverse(str));
1、 数组、字符串的常用方法:
2、 For循环性能及如何优化:Javascript中for循环语句的几种写法总结对比
3、 递归函数主要注意的问题:递归实现的方法及注意事项
4、 函数式编程:函数式编程初探