A. 大厂前端对算法的要求如何
作为一个毕业多年小前端,表示算法什么的早就还给老师了...
相比较算法,我觉得数据结构和设计模式对前端来说更重要,理由有三:
1)js可以原生提供的数据类型的确有限。很多时候我们都是用对象和数组来简单粗暴的解决问题,并写一堆复杂的业务代码来支撑逻辑。
比如,我们想做一个轮播图,很自然的就会想到用数组来记录轮播图片的列表数据,我们这里时髦一把,用vue数据驱动视图的思想来实现,每次轮播翻页后我们需要改变数组中图片的顺序,看似没有问题。但是当业务复杂的时候呢,比如我们需要支持循环播放和双向播放,就需要数组的边界值进行特殊判断了,这种特殊判断就降低了代码的可维护性。
那如果我们换个角度思考,一开始我们就不用数组来定义图片列表,而改用一个双向链表呢?问题就会简单很多。而链表这个数据结构在js里面是没有原生实现的,需要我们自己来完成。
因此掌握常用的数据结构以及其相关方法还是很有必要的。
2)设计模式是在某个场合下对某个问题的一种优雅的解决方案。这里我加粗了优雅,没错,要解决一个问题,往往有不止一个答案。
比如,我想给页面上一连串按钮绑定点击事件,要求点击按钮的时候弹出按钮的内容。一个简单粗暴的方法是给每个按钮添加一个onclick事件。那假设按钮个数非常多或者本身这个按钮还有其它点击事件要执行呢,这个方案就不那么可行了。有的同学想到了可以用事件委托,没错,这里你就用到了一种设计模式,代理模式。孰优孰劣,一目了然。
我认为每个业务场景都有一种合适的优雅的解决方案,而这就是设计模式。
3)通常情况下,前端需要处理的数据量和计算复杂度都不高。比如我想找到一个数组中的最大值,一般我会直接用数组的排序方法而不会考虑自己写个冒泡或者快排。如果真要处理大量的数据,恐怕这个处理过程是否应该放在前端就值得商榷了。
问题需要不断抽象,抽象的水平和经验能力成正比。
B. 前端需要计算题吗
算法是编程的"里子",不管你是前端还是后端,作为一名计算机工程师,具备一定的算法能力,是一种基本要求.具体一点,我们是来讲算法在前端工作中应用.web前端工作中,确实没有太多算法上的需求.以vue等着名框架的虚拟dom的diff算法来讲,框架已经被很好的实现了,你在使用框架的时候是不会涉及到具体的diff算法.但是理解算法,可以让你更好的理解框架,从而也能更好的使用框架,提高页面的性能.再宽泛的来讲算法,很多特殊的需求也会需要你来设计一个算法.比如某个需求有很多个异步请求要发送给服务器,全部完成之后,可以继续下一件事情.可能很多人要说,这个很简单,一个Promise.all就可以解决。
但是请你考虑下面稍有变化的情况,因为服务器的压力问题,限制同一个客户端只能在同一时间只能发送2个异步请求,所以你就必须对Promise.all做出适当的修改在这样的情况下,你就需要设计到一套算法去高效完成它。希望我的回答对你有帮助,欢迎采纳我的回答,谢谢。
C. 算法是前端用还是后端用
不分前后端,是一种思想和逻辑。前后端都能用到。前端一般用不到比较深的像冒泡排序都是算法,不过想要提升能力或者面试什么的可以学习下
D. 前端和算法有关系么
算法你指的是网络的一些seo、sem 的算法吗?算法是为了打击一些非法的操作,当然也有利于用户的体验,如果可以在前端布局一些算法,对网站也是有好处的。前端布局一些算法是有好处的。
E. 前端开发是否有必要知道数据结构和算法
如果只是单纯做前端,没有。前端的核心是DOM。算法和数据结构是为了解决效率问题的,而提升前端的效率用到的概念往往仅仅是常识级别的。甚至一些流行的中小型库中都看不到任何数据结构。可以认为前端是程序员里的一个特例,一般程序员面对的是计算机,前端开发人员面对的仅仅是浏览器。如果只是关注前端,学习数据结构和算法的收益还不如去读jQuery源码。
既然前端用不上,楼主还是问到了这个问题,那就说明楼主关注的不仅仅是如何成为一个熟练的前端,而是成为一个优秀的软件工程师。网站开发之所以流行,一部分是因为开发成本低。这些节省下来的成本,一部分就是开发人员的薪水。换句话说,前端开发简单,门槛低,所以收入低,可替代性强。跳出前端这个领域,把自己放到软件工程师的队伍里,再看这个问题,答案就显而易见了。如果只是专注于前端技术,那么能解决的也仅仅是一小部分问题。
如果楼主关心的是如何更好地解决前端的问题,那么在相当长的一段路上数据结构和算法是优先级很低的。如果楼主关心的是自己的职业规划和自身素质的提升,数据结构和算法则在任何时候都是优先级最高的。
F. 前端开发要不要学习算法,数据结构
数据结构和算法是任何从事软件编程工作人员必须学会的一门课程,不管学深浅,都需要学。前端开发也是软件编程,建议一定要学一学数据结构和算法,这样有利于深层次的问题思考。
G. 前端程序员需要很多算法吗
前端?是指网页前端还是游戏前端?如果是页端,就不一定,看做的项目,但如果是游戏前端,就需要用到很多算法了,寻路算法,碰撞检测算法之类都是必须的