A. 大厂前端对算法有什么要求
作为一个毕业多年小前端,表示算法什么的早就还给老师了...
相比较算法,我觉得数据结构和设计模式对前端来说更重要,理由有三:
1)js可以原生提供的数据类型的确有限。很多时候我们都是用对象和数组来简单粗暴的解决问题,并写一堆复杂的业务代码来支撑逻辑。
比如,我们想做一个轮播图,很自然的就会想到用数组来记录轮播图片的列表数据,我们这里时髦一把,用vue数据驱动视图的思想来实现,每次轮播翻页后我们需要改变数组中图片的顺序,看似没有问题。但是当业务复杂的时候呢,比如我们需要支持循环播放和双向播放,就需要数组的边界值进行特殊判断了,这种特殊判断就降低了代码的可维护性。
那如果我们换个角度思考,一开始我们就不用数组来定义图片列表,而改用一个双向链表呢?问题就会简单很多。而链表这个数据结构在js里面是没有原生实现的,需要我们自己来完成。
因此掌握常用的数据结构以及其相关方法还是很有必要的。
2)设计模式是在某个场合下对某个问题的一种优雅的解决方案。这里我加粗了优雅,没错,要解决一个问题,往往有不止一个答案。
比如,我想给页面上一连串按钮绑定点击事件,要求点击按钮的时候弹出按钮的内容。一个简单粗暴的方法是给每个按钮添加一个onclick事件。那假设按钮个数非常多或者本身这个按钮还有其它点击事件要执行呢,这个方案就不那么可行了。有的同学想到了可以用事件委托,没错,这里你就用到了一种设计模式,代理模式。孰优孰劣,一目了然。
我认为每个业务场景都有一种合适的优雅的解决方案,而这就是设计模式。
3)通常情况下,前端需要处理的数据量和计算复杂度都不高。比如我想找到一个数组中的最大值,一般我会直接用数组的排序方法而不会考虑自己写个冒泡或者快排。如果真要处理大量的数据,恐怕这个处理过程是否应该放在前端就值得商榷了。
问题需要不断抽象,抽象的水平和经验能力成正比。
B. 前端有必要学习算法吗
需要学一些算法,JS这块也是可以做算法分析的。
除非你是UI,平面设计,可以不用学算法。
只要是编程开发,都是需要学习一些算法方面的知识的。
C. 算法在前端开发的中实际应用有哪些
如果是游戏前端,算法很重要。。。比如角色寻路,主要就是使用A*算法,怪物的AI,通常需要使用树相关的算法,比如二叉树,行为树等。。。如果是APP或网页前端,实际工作中,需要使用算法的概率几乎是零。。
D. 为什么我认为数据结构与算法对前端开发很重要
我不认为很重要,后台开发才涉及数据结构和算法,前端讲究的是人机界面的友善程度和易用性和美观性,网页的布局,使得用户想看什么就知道在哪里看到,想操作什么就知道按钮在哪里,前端更注重这些
E. 为什么数据结构与算法,对前端开发很重要
前端的技术领域和范围正在飞速演进中,再过3年5年不懂算法和数据结构的前端慢慢就淘汰了。几大互联网公司的已经开始在使用数据挖掘、贝叶斯、3D图形图像等领域算法到前端领域。对浏览器的了解也逐步深入到内部实现机制原理上,从原理上理解渲染。无线端的前端越来越像嵌入式应用开发,这些都更需要有扎实而综合的计算机专业基础。
F. 前端和算法有关系么
算法你指的是网络的一些seo、sem 的算法吗?算法是为了打击一些非法的操作,当然也有利于用户的体验,如果可以在前端布局一些算法,对网站也是有好处的。前端布局一些算法是有好处的。
G. 算法是前端用还是后端用
不分前后端,是一种思想和逻辑。前后端都能用到。前端一般用不到比较深的像冒泡排序都是算法,不过想要提升能力或者面试什么的可以学习下
H. Goole搜索引擎对于手机端算法与pc端算法有什么不同算法的改变对前端与UI会产生哪些影响
算法Mobilegeddon针对的是移动端搜索结果,而不会影响PC端和平板电脑,从侧面也反映出Google对于移动端的重视,那么,这次算法调整的重点-让移动端用户有更好的网站体验究竟有哪些参考指标呢?为此Google 方面提出了一个“移动友好度(mobile-friendly)”的概念。
移动友好度的概念是一系列的体验组合,具体包括页面文字字号、链接排列、内容与屏幕适应等方面的用户体验的设计。新算法除了强调移动友好度,还具有实时性、只针对单个页面等特性。对于那些体验不好的网站,Google将会做出“严厉”的惩罚:在搜索结果中降低它的评分、排名,甚至搜不到。
变革总会伴随阵痛。新的算法可能会伤害众多小企业的利益,这些小企业可能没有资金或者动力来为移动端进行网站调整。不过数据表明,Google这样做也是很合理的。
根据市场研究公司comScore的数据报告显示,在2010年-2014年几年里,网民使用智能手机上网增长了394%,平板增长1721%,而PC增长仅为37%。通过图例,我们可以清晰看到,越来越多的人通过手机上网,移动互联网的趋势也已经很明显。所以,搜索巨头Google重视移动端的友好体验也理所当然。
I. 为什么我认为数据结构与算法对前端开发很重
首先说结论:你的后端部门不够硬。把后端的事情推给前端了。
前端后端是程序产业化发生的分工。
首先对比传统开发模式:一人模式。即做前端又做后端。设计者决定表现方式,用表现方式决定前端,从而决定后端。前端后端除了可视化以外并无明显分别。你可以把后端代码放前端里(跟计算有关的?)。也可以把前端代码放后端里(跟查看有关的?)。
产业化后,人们发现,一人模式, 由于返工特点,在大程序(姑且这么说)合作时,产生的返工成本无法接受。于是人们引入工业模式:设计论证差不多了以后,拿出一个不需要改的可行方案。分配给各部具化。这不但减少返工,还能提高人力利用率。(每个人都干起来,不闲着)
前后之分就是从这里开始的。姑且分为设计阶段和实行阶段。设计阶段就是通篇考虑,保证可行(不行就自己上)。实行阶段就是做自己能做的,按设计要求具化。可以看出,两个阶段需要的人的编程能力是不一样的。实行阶段可以换人,而设计阶段需要总体负责,需要的经验肯定不一样。
于是产业化分工降成本的有势就体现出来了:训练专业化工人的成本,小于掌握所有环节的工人的成本。(全是工人,这么说没错)
于是把工作分为前后端,可以大致的对应到设计和具化分类上。其实是设计和具化。(具化就是已经有大致路径,需要精确细化。并且不能偏离路径)
所以后端的人最讨厌前端的人谈论算法。这等于说他的算法是拉gi。但是他的设计书确实有毛病,或者根本是业务需求——根本什么都不是。直接挑战了他的存在意义。所以先喷你没毛病。
J. 大厂前端对算法的要求如何
作为一个毕业多年小前端,表示算法什么的早就还给老师了...
相比较算法,我觉得数据结构和设计模式对前端来说更重要,理由有三:
1)js可以原生提供的数据类型的确有限。很多时候我们都是用对象和数组来简单粗暴的解决问题,并写一堆复杂的业务代码来支撑逻辑。
比如,我们想做一个轮播图,很自然的就会想到用数组来记录轮播图片的列表数据,我们这里时髦一把,用vue数据驱动视图的思想来实现,每次轮播翻页后我们需要改变数组中图片的顺序,看似没有问题。但是当业务复杂的时候呢,比如我们需要支持循环播放和双向播放,就需要数组的边界值进行特殊判断了,这种特殊判断就降低了代码的可维护性。
那如果我们换个角度思考,一开始我们就不用数组来定义图片列表,而改用一个双向链表呢?问题就会简单很多。而链表这个数据结构在js里面是没有原生实现的,需要我们自己来完成。
因此掌握常用的数据结构以及其相关方法还是很有必要的。
2)设计模式是在某个场合下对某个问题的一种优雅的解决方案。这里我加粗了优雅,没错,要解决一个问题,往往有不止一个答案。
比如,我想给页面上一连串按钮绑定点击事件,要求点击按钮的时候弹出按钮的内容。一个简单粗暴的方法是给每个按钮添加一个onclick事件。那假设按钮个数非常多或者本身这个按钮还有其它点击事件要执行呢,这个方案就不那么可行了。有的同学想到了可以用事件委托,没错,这里你就用到了一种设计模式,代理模式。孰优孰劣,一目了然。
我认为每个业务场景都有一种合适的优雅的解决方案,而这就是设计模式。
3)通常情况下,前端需要处理的数据量和计算复杂度都不高。比如我想找到一个数组中的最大值,一般我会直接用数组的排序方法而不会考虑自己写个冒泡或者快排。如果真要处理大量的数据,恐怕这个处理过程是否应该放在前端就值得商榷了。
问题需要不断抽象,抽象的水平和经验能力成正比。