在前端工程师的工作中,一般很少有机会接触到算法. 但是在面试时也会有一些算法题,这并不是面试官闲得蛋疼为难你, 对于程序员来说, 学习算法知识可以让我们更高效地理解和分析问题.
这里整理了一些常见的有关算法的前端面试题
1 判断一个单词是否是回文?
什么是回文?回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 mamam redivider .
很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。
其实重要的考察的就是对于reverse的实现。
我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。
function checkPalindrom(str) {
return str == str.split('').reverse().join('');
}
比如输入: [1,13,24,11,11,14,1,2]
输出: [1,13,24,11,14,2]
需要去掉重复的11 和 1 这两个元素。
这道问题出现在诸多的前端面试题中,主要考察个人对Object的使用,利用key来进行筛选。
[JavaScript] 纯文本查看 复制代码let unique = function(arr) {
let hashTable = {};
let data = [];
for(let i=0,l=arr.length;i<l;i++) {
if(!hashTable[arr]) {
hashTable[arr] = true;
data.push(arr);
}
}
return data
}
function findMaxDuplicateChar(str) {
if(str.length == 1) {
return str;
}
let charObj = {};
for(let i=0;i<str.length;i++) {
if(!charObj[str.charAt(i)]) {
charObj[str.charAt(i)] = 1;
}else{
charObj[str.charAt(i)] += 1;
}
}
let maxChar = '',
maxValue = 1;
for(var k in charObj) {
if(charObj[k] >= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
return maxChar;
}
输入 a = 2, b = 4 输出 a = 4, b =2这种问题非常巧妙,需要大家跳出惯有的思维,利用 a , b进行置换。
function swap(a , b) {
b = b - a;
a = a + b;
b = a - b;
return [a,b];
}
function bubbleSort(arr) {
for(let i = 0,l=arr.length;i<l-1;i++) {
for(let j = i+1;j<l;j++) {
if(arr>arr[j]) {
let tem = arr;
arr = arr[j];
arr[j] = tem;
}
}
}
return arr;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |