105 lines
2.5 KiB
JavaScript
105 lines
2.5 KiB
JavaScript
|
||
|
||
## 前言
|
||
|
||
|
||
算法主要包括:
|
||
|
||
- 1、排序
|
||
|
||
排序一定要准备。
|
||
|
||
- 2、堆栈、队列、链表
|
||
|
||
队列和链表可以不准备,但是堆栈一定要准备。
|
||
|
||
一个小技巧:JS的数组本身就具备堆栈和队列的特性。比如:top、push、shift、unshift这四个api,本身就帮我们实现了堆栈和队列。
|
||
|
||
堆栈:先进后出。
|
||
|
||
- 3、递归
|
||
|
||
递归是一定不能偷懒的。算法比较难的时候,一般要用到递归。
|
||
|
||
- 4、波兰式和逆波兰式
|
||
|
||
|
||
**总结:**
|
||
|
||
比如阿里,如果基础题答的很好,但是算法不会,那可能通不过。
|
||
|
||
还有金融类的,必考算法。比如阿里云,里面的业务就是算法的,所以肯定考算法。
|
||
|
||
|
||
## 排序
|
||
|
||
|
||
上面的排序这么多,我们要记住下面这三个:
|
||
|
||
- 快速排序:<https://segmentfault.com/a/1190000009426421>
|
||
|
||
- 选择排序:<https://segmentfault.com/a/1190000009366805>
|
||
|
||
- 希尔排序:<https://segmentfault.com/a/1190000009461832>
|
||
|
||
如果你还要学一个,那就是**冒泡排序**。
|
||
|
||
题目中,会给你一个算法题, 排序只是其中一个步骤。而且,并不会指定你要求用哪种排序。
|
||
|
||
|
||
|
||
|
||
## 堆栈、队列、链表
|
||
|
||
参考链接:
|
||
|
||
- <https://juejin.im/entry/58759e79128fe1006b48cdfd>
|
||
|
||
上面这个链接是转载的。原创博主的系列文章是:
|
||
|
||
- [数组、队列、链表](http://huang303513.github.io/2016/12/08/Javascript%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95(%E4%B8%80).html)
|
||
|
||
|
||
|
||
- [排序](http://huang303513.github.io/2016/12/19/Javascript%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95(%E5%9B%9B).html)
|
||
|
||
|
||
|
||
|
||
|
||
## 递归
|
||
|
||
参考链接:
|
||
|
||
- [JavaScript中的递归](https://segmentfault.com/a/1190000009857470)
|
||
|
||
递归理解起来不难,但是用的时候很难,因为你没抓住他的本质。递归的终止条件是什么?参数是怎么传递的?一定要搞清楚。
|
||
|
||
很多人说:“我知道这道题是考递归,但是我就是不知道该怎么写”。这个面试官很无奈。
|
||
|
||
|
||
|
||
## 波兰式和逆波兰式
|
||
|
||
> 如果复习时间很紧张,这部分也不用准备了。也不是所有的公司都会问。
|
||
|
||
推荐链接:
|
||
|
||
- 理论:<http://www.cnblogs.com/chenying99/p/3675876.html>
|
||
|
||
- 源码:<https://github.com/Tairraos/rpn.js/blob/master/rpn.js>
|
||
|
||
|
||
## 总结
|
||
|
||
如果实在答不来,就说,这个算法我不是很会,只知道一些基本概念。
|
||
|
||
如果第一面就碰到算法题,这个公司不用去了。说明这个公司是招算法的,不是招前端的。
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|