直通互联网大厂前端面试系列(五)——算法

传送门

  • 直通互联网大厂前端面试系列(零)——目录总纲
  • 直通互联网大厂前端面试系列(一)——HTML/CSS
  • 直通互联网大厂前端面试系列(二)——JS / ES6+
  • 直通互联网大厂前端面试系列(三)——网络基础
  • 直通互联网大厂前端面试系列(四)——主流框架
  • 直通互联网大厂前端面试系列(五)——算法

写在前面

笔者的算法水平心里还是有数的,在这里也算是抛砖引玉,相信单从面试方面来讲,一定会对同学们有所帮助的。
大厂多多少少都会考一些算法题,答不出来很正常,要知道这里想要考察你分析问题的能力,重要的是过程,结果反而是次要的。一定要把自己的思路说出来,想到什么说什么,通常面试官会根据你说的内容去引导你,你要是什么都不说,那面试官想帮你也无能为力了。
说实话,在日常的前端开发中,很少用到算法。甚至后端简单的CURD也用不到算法。但是,学习和研究算法的过程,会给我们带来莫大的好处。比如增加思维的深度、加强对底层的理解,这些都是决定了建筑高度的地基。另外,一个好的算法可以让计算效率成百上千倍的提升,换算成节省的计算资源,那就是最直观的效益。
总结来说,如果只应对眼前的面试,那么算法的重要性不及其他。若从长远来说,算法决定了一个人的技术底蕴,除非打算一直停滞不前,否则早晚要面对算法这一关。

长期如何学习

平时被日新月异的新技术搞得应接不暇,相信是大多数前端的状态。所以,虽然这么说比较虚,但是长期坚持学习算法,的确需要“情怀”。那么有“情怀”的同学们应该怎么学习算法呢?

  • 力扣题库,是个不错的刷题网站,没事来刷刷。
  • 阅读源码,阅读优秀框架的源码,不但可以学习算法,还可以学到良好的编程规范。最重要的是,可以理解其设计思想,能够更好的去应用。这个方法虽然是最难起手的,但是毫无疑问是实际收益最大的。
  • 积极参加算法大赛,很多公司或学校都会定期举办算法大赛。放下面子,不管自己水平怎么样,就是报名参加。又不花钱,还能见世面,阻止你报名的,永远只有你自己。

短期如何突击

想要短期突击,除了被考烂了的排序算法,还要主攻五大算法:

  • 贪心算法
  • 分治算法
  • 动态规划
  • 回溯法
  • 分支界限法

每个算法练一道题即可,只要知道这个算法的应用场景,还能说出点东西来,就算合格。

临阵如何磨枪

考烂了的排序算法是一定要有的,五大算法也一个不能少

请用JS实现冒泡排序,复杂度是多少?

追问:

  • 选择排序、快速排序的实现与复杂度?
  • 还有其他排序方法吗?复杂度是多少?
请列举【贪心算法】的适用场景?解题思路是什么?

追问:

  • 设有n个正整数,将它们连接成一排,组成一个最大的多位整数。
请列举【分治算法】的适用场景?解题思路是什么?

追问:

  • 求x的n次幂
请列举【动态规划】的适用场景?解题思路是什么?

追问:

  • 我们有面值为1元3元5元的硬币若干枚,如何用最少的硬币凑够11元?
请列举【回溯法】的适用场景?解题思路是什么?

追问:

  • 已知一个数组,保存了N个火柴棍(长度不定),问是否可以使用这N个火柴棍摆成一个正方形?
请列举【分支界限法】的适用场景?解题思路是什么?

追问:

  • 设某一机器由 n 个部件组成,每一种部件都可以从 m 个不同的供应商处购得。设 wij 是从供应商j处购得的部件 i 的重量, cij 是相应的价格。试设计一个算法,给出总价格不超过 c 的最小重量机器设计。

你可能感兴趣的:(直通互联网大厂前端面试系列(五)——算法)