web前端要不要学习算法知识?

#1

v2-2cc31c7eb951cea22c441a3fbea7f3cb_720w.jpg

我从面试和日常工作两个方面来讨论这个问题:

一、先说面试

有种说法叫,面试造火箭,工作拧螺丝,抛开面试官想"技术pk"的可能性,,我对这个的理解是,面试官想尽可能了解你编程能力的极限。

所以面试中有个一两道算法题不奇怪,我们不需要对算法有畏惧的心理,一般正常的算法题,面试官也不会出得非常难,会被控制在正常难度。

还有一点就是,面试的时候,面试官往往更加欣赏你对题目的解决思路,用伪代码来阐述解题的想法,也是一个很好的方式。web前端培训 www.icketang.com

二、再说工作

具体一点,我们是来讲算法在前端工作中应用,web前端工作中,确实没有太多算法上的需求。

以vue等著名框架的虚拟dom的diff算法来讲,框架已经被很好的实现了,你在使用框架的时候是不会涉及到具体的diff算法。

但是理解算法,可以让你更好的理解框架,从而也能更好的使用框架,提高页面的性能。

再宽泛的来讲算法,很多特殊的需求也会需要你来设计一个算法。

比如某个需求有很多个异步请求要发送给服务器,全部完成之后,可以继续下一件事情。

可能很多人要说,这个很简单,一个Promise.all就可以解决。

是的,没有错!但是请你考虑下面稍有变化的情况,因为服务器的压力问题,限制同一个客户端只能在同一时间只能发送2个异步请求,所以你就必须对Promise.all做出适当的修改。

在这样的情况下,你就需要设计到一套算法去高效完成它,再举个例子,很多人在web前端之后转向了H5游戏,假设现在是个战棋游戏,里面涉及到寻路算法,那么也需要你对算法有了解,或许,你说可以从网上找现成的寻路算法。

但是因为游戏需求的多变,可能你所在公司的游戏对于道路有着不同的设定,这导致网上的算法不能直接套用,这就需要你的理解已经进一步的修改,所以这些都是现实的问题。

最后,算法是编程的"里子",不管你是前端还是后端,作为一名计算机工程师,具备一定的算法能力,是一种基本要求。