这次腾讯面试的失利,让我深刻明白了这一点:想进大公司,必须把算法学习好。为此开一篇文章,记录下面试过程中经常会出现的算法笔试题。
Q1. 去掉一组整型数组中重复的值
该题目的解法有好几种,下面列举几种常见的解法。
上面那种解法是我们最容易想到的解法,在查找重复元素的过程中使用了indexOf方法,如果不使用的话,也可以使用循环解决如下:
除了使用indexOf和循环去重,我们还可以使用Object对象判断是否重复,下面这种解法是作者比较推荐的一种解法。
最后还有一种方法,使用了sort()对数组进行了排序,这样去重之后原数组的索引对应元素的值都发生的变化,如果不考虑这一点,可以使用这种解决方案。
Q2. 统计一个字符串出现最多的字母
其实就是统计字符串中每个字符出现的次数,最后从中找到出现次数最多的字符。
Q3. 排序算法
冒泡排序
快速排序
插入排序
Q4. 斐波那契数列
斐波那契数列就是形如0,1,1,2,3,5,8.....的数列。
Q5. 速度创建1-100的数组
ES5的写法
ES6的写法
Q6. 洗牌算法
这道题是我去富途面试CTO问我的一道题,我听到之后一脸懵比(后面的题目也做的不好),结果直接game over,面试之后查阅了下百度自己写了出来