前端人员跳槽前,这些算法你都会了吗?

阳光穿透心脏的1/2处 2022-07-15 10:44 292阅读 0赞

18e07d79ef43a29dffb3d130c15ddeb0-sz_123327.jpg_1l_640w.jpg Q 判断一个单词是否是回文? 很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。function checkPalindrom(str) { return str == str.split(‘’).reverse().join(‘’);}
f6807424fc7ecb94c8fc103bfd27dd08-sz_3052.png_1l_640w.png Q 去掉一组整型数组重复的值 道问题出现在诸多的前端面试题中,主要考察个人对Object的使用,利用key来进行筛选。/*** unique an array**/function unique(arr) { var hashTable = {}; var data = []; for(var i=0,l=arr.length;i= maxValue) { maxChar = k; maxValue = charObj[k]; } } return maxChar; } 293f4cadd50bc4c7236bd05e1f947b6e-sz_3910.png_1l_640w.png Q 排序算法 如果抽到算法题目的话,应该大多都是比较开放的题目,不限定算法的实现,但是一定要求掌握其中的几种,所以冒泡排序,这种较为基础并且便于理解记忆的算法一定需要熟记于心。冒泡排序算法就是依次比较大小,小的的大的进行位置上的交换。function bubbleSort(arr) { for(let i = 0,l=arr.length;iarr[j]) { let tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } } } return arr;} 4605e78173775880c0305385325495d0-sz_4864.png_1l_640w.png除了冒泡排序外,其实还有很多诸如 插入排序,快速排序,希尔排序等。每一种排序算法都有各自的特点。全部掌握也不需要,但是心底一定要熟悉几种算法。 比如快速排序,其效率很高,而其基本原理如图(来自wiki): d4e5d0a778dba725091d8317e6bac939-sz_93016.gif算法参考某个元素值,将小于它的值,放到左数组中,大于它的值的元素就放到右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排好顺序的数组了。function quickSort(arr) { if(arr.length<=1) { return arr; } let leftArr = []; let rightArr = []; let q = arr[0]; for(let i = 1,l=arr.length; iq) { rightArr.push(arr[i]); }else{ leftArr.push(arr[i]); } } return[].concat(quickSort(leftArr),[q],quickSort(rightArr));} bc77606e9bd5f3075383541af62c809d-sz_4353.png_1l_640w.png Q 不借助临时变量,进行两个整数的交 这种问题非常巧妙,需要大家跳出惯有的思维,利用 a , b进行置换。主要是利用 + – 去进行运算,类似 a = a + ( b – a) 实际上等同于最后 的 a = b;
function swap(a , b) { b = b - a; a = a + b; b = a - b; return [a,b];} 781228c52a30f453d08eb256ea7f8a09-sz_2894.png_1l_640w.png Q 递归 递归是一种思想:类似于我们的计数器,开闭原则, 递归的实质就是函数自己调用自己, 递归注意点:递归必须有跳出条件,否则是死循环。 用递归求1+100和。 function SumNum(num){ if(num<100){ return 0; } return num+ SumNum(num-1); } e0a434fa0a1fccc64c4c829c3fd44fb6-sz_2818.png_1l_640w.png Q 回掉 什么情况下,使用回调函数, 回调函数一般是用于定义一个规则来使用的, 规则的传递只能通过函数实现,通过变量无法达成,所以我们需要传递规则的时候必须使用回调函数。function selectAll(par1,par2,callback){ return callback(par1,par2); } function callback(par1,par2){ return par1+par2; } d15486f238754097765e524db18a7b41-sz_2951.png_1l_640w.png Q 合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素。 张辛欣:难道,我的书写,在你眼中,是自恋倒影?喜欢自拍?下一个句子女读者请慎入:我对网上无所不在的驴脸蛋自拍照,看着就反胃,千篇一律,眼圈都描得跟驴眼睛似得,模样彼此相似,亚洲男生也加入这种自拍行列,太娘了吧?不过Prisma 滤镜app发布当天,我下载APP拍一张自拍,做各种自我变形放相似微博,英国的法国的加拿大的读者看到了立刻下载,拍狗,拍猫,拍风景,玩各种变形贴出来,响应我自拍我变我发表的问题:传统画家出局了? bad18cfe2ec75cdfb1d08b4804910201-sz_524073.jpg_1l_640w.jpg

发表评论

表情:
评论列表 (有 0 条评论,292人围观)

还没有评论,来说两句吧...

相关阅读

    相关 前端算法真的

    一个算法题的解决方案往往不止一个,如果你只会暴力法解决算法,那你可能最时间复杂度和空间复杂度了解不够,下面看看如下算法题! 简单有效括号匹配() 给定一个字符串,判定其