大家好,我是坚持刷算法的前端西瓜哥。最近一如既往地打开Leetcode官网找一道算法题做,然后看到一篇关于“web前端需要刷算法吗?”的讨论。我想我可以表达我的看法。个人觉得web前端做算法题是很有必要的。这对我们的职业发展和个人成长非常有帮助。个人职业发展算法题可以提高你编写高效代码的能力。Web前端开发大部分时间花在编写业务代码上,使用复杂算法的机会并不多。通常是还原视觉稿,实现交互,与后台对接。但是我们不应该局限于写业务代码,有时候还是要写非业务代码。可能你会说,找别人写的轮子也能找到,但不是所有的轮子都能满足我们的项目需求,尤其是细分领域,有时候还得自己造。很多算法问题其实都是脱胎于实际场景,可以作为我们写出好的非业务代码的参考。如果不想当杂工,刷算法还是很有必要的。代码更健壮。该算法有一些优点。你会注意代码的可读性,使用更具可读性的变量名,不要使用多余的变量,尽量使代码简洁。在刷题中,你不得不考虑算法的各种边缘情况,以应对一些极端的测试情况。这提高了您编写的代码的健壮性,从而减少了错误代码。此外,您还可以学习一些有趣的算法技巧。比如Floodfill算法可以处理油漆桶中填充图形的问题,prefix和tricks可以通过缓存快速找到一些中间范围值。这有助于我们的计划。当我们看一些优秀的源码时,代码中可能会有针对场景的特殊算法优化。如果你做过算法题,更能理解作者的用意。面试基本要求随着近几年前端开发从业者越来越多,很多公司的产品越来越切入细分市场,复杂度也越来越高。基本是大中型公司面试考察算法能力的标配。.面试大公司的时候,每一轮技术面试可能会要求你至少回答一道中等难度的算法题,偶尔也会出现高难度的题。如果算法不好,被刷的概率会增加,除非你的项目经验足够好。中小型公司比较好。他们大多不考算法,或者问一道很简单的算法题。如果你想有更多的职业发展机会,我建议你使用算法。如果你在面试中能把所有的算法题都做完,面试官必然会对你刮目相看,对你的第一印象非常好,这会增加你拿到offer的几率。关于场景方案的思考当我们在开发中完成需求时,往往会有多种方案。根据场景仔细权衡不同方案的利弊,选择最合适的方案,是一个优秀程序员非常重要的能力。刷算法题其实就是锻炼这种能力的过程。许多算法问题有很多解决方案。有的方案空间复杂度高但时间复杂度低,有的方案时间复杂度高但空间复杂度低,有的实现简单,有的性能较好但复杂易写。虽然在算法题中,通常最快的算法就是正确的解法,但是也有很多题是有时间复杂度限制的。您需要分析不同的解决方案,以找到最适合相应场景的解决方案。我们在做题的时候,分析每一种解法的优劣也是面试的重点。“与其做算法题,不如多做项目。”也有人说:“与其做算法题,不如多做项目。”其实这两点并不冲突。我们不可能把所有的业余时间都花在算法题上。刷题应该是我们提高能力的一部分,而不是全部。除了刷算法题,我们还可以学习其他的知识,比如看书,学习金融知识,做一些个人项目,像我一样写文章。并不是说我们刷完算法题就没有时间做其他事情了。我建议每周完成5道算法题,周一到周五每天一道,哪天没做完就周六周日补上。像玩游戏一样做算法题首先,我们不要认为算法可以很快发展起来,短时间内可以有很大的提高。这是一个逐渐积累的过程。每天都要玩一个关卡,就像玩游戏一样,一点一点地熟练,增加难度。它应该被视为清除困难游戏关卡的一种方式。今天就算做不完,明天再试,不行就看攻略。Leetcode其实是一个非常好的提升我们算法能力的平台,因为它有足够覆盖的测试用例,让我们每次提交都能得到反馈。对比自己工作中写的代码,部署到线上不知道什么时候会出事故。Leetcode的反馈是即时的,这对我们快速提升能力很有帮助。最后,无论什么样的程序员,我都建议他做算法题,因为算法能力是程序员的基本素质。
