对于我而言,我会从面试和日常工作两个方面来讨论这个问题
先说面试
有种说法叫,面试造火箭,工作拧螺丝.抛开面试官想"技术pk"的可能性,我对这个的理解是,面试官想尽可能了解你编程能力的极限,所以面试中有个一两道算法题不奇怪,我们不需要对算法有畏惧的心理,一般正常的算法题,面试官也不会出得非常难,会被控制在正常难度,还有一点就是,面试的时候,面试官往往更加欣赏你对题目的解决思路,用伪代码来阐述解题的想法,也是一个很好的方式。
再说工作.
具体一点,我们是来讲算法在前端工作中应用,web前端工作中,确实没有太多算法上的需求,以vue等著名框架的虚拟dom的diff算法来讲,框架已经被很好的实现了,你在使用框架的时候是不会涉及到具体的diff算法,但是理解算法,可以让你更好的理解框架,从而也能更好的使用框架,提高页面的性能.再宽泛的来讲算法,很多特殊的需求也会需要你来设计一个算法,比如某个需求有很多个异步请求要发送给服务器,全部完成之后,可以继续下一件事情,可能很多人要说,这个很简单,一个Promise.all就可以解决
是的,没有错
但是请你考虑下面稍有变化的情况,因为服务器的压力问题,限制同一个客户端只能在同一时间只能发送2个异步请求,所以你就必须对Promise.all做出适当的修改,在这样的情况下,你就需要设计到一套算法去高效完成它;再举个例子,很多人在web前端之后转向了H5游戏;假设现在是个战棋游戏,里面涉及到寻路算法,那么也需要你对算法有了解,或许,你说可以从网上找现成的寻路算法。
但是因为游戏需求的多变,可能你所在公司的游戏对于道路有着不同的设定,这导致网上的算法不能直接套用,这就需要你的理解已经进一步的修改,所以这些都是现实的问题。
最后,算法是编程的"里子",不管你是前端还是后端,作为一名计算机工程师,具备一定的算法能力,是一种基本要求。