web 前端需不需要刷算法?

简介: 前端西瓜哥

大家好,我是坚持刷算法的前端西瓜哥。

最近我一如既往地打开了 Leetcode 官网打算找道算法题做做,然后看到了一个 “关于 web 前端需不需要刷算法” 的讨论,觉得可以说上一说我的看法。

我个人觉得 web 前端是非常有必要刷算法题的。这对我们的职业发展和个人成长是非常有帮助的。

个人职业发展

算法题能够提高自己写出高效率代码的能力。

大部分的 web 前端开发不少时间都是在写业务代码,要用到复杂算法的机会并不多,通常就是切切图还原视觉稿、实现下交互、和后端对下接口。

但我们不应该将自己局限在写业务代码,有时候我们还是要写非业务代码的。

或许你会说可以找别人写好的轮子,但并不是所有轮子都能满足我们的项目需求,尤其是细分领域,有些时候还是得自己动手造轮子。

很多算法问题其实都是脱胎于实际的场景的,对我们写出好的非业务代码有不小的借鉴意义。

如果你不想成为一名打杂,刷算法还是非常有必要的。

代码更健壮

刷算法有一些好处,你会注重代码的可读性,使用可读性更好的变量名,不使用多余的变量,让代码尽量简洁。

在刷题中,你不得不考虑算法的各种边界情况,以便应付一些极端的测试用例。这能提高你写的代码的健壮性,写出 bug 更少的代码。

此外你也能学到一些有意思的算法技巧。比如,Flood fill 算法可以处理油漆桶填充图形的问题,前缀和技巧可以通过缓存快速求一些中间范围的值。这对我们做方案有一定的帮助。

我们看一些优秀源码时,代码里面可能针对场景做了特殊的算法优化,如果你刷过算法题,就能更好地理解作者这样写的意图。

面试的基本要求

随着近些年前端开发从业人员越来越多,很多公司的产品越发切进细分市场、复杂度越来越高,考察算法能力基本上是中大型公司面试的标配了。

面试大公司时,你可能在每轮技术面试都会被要求解答至少一道 medium 难度的算法题,偶尔也会出现 hard 难度的题。算法不好被刷的概率会增大,除非你的项目经验表现足够优秀。

中小公司则好些,多数不考算法题,或者出一道很简单的算法题。

如果想让你的职业发展有更多的机会的话,建议你刷算法。

面试中能够做出所有的算法题,面试官不免会高看你一眼,有非常好的初步印象,提高你斩获 offer 的概率。

场景方案的思考

我们在开发中完成需求,经常会有多个解决方案,认真根据场景权衡不同方案的利弊,从中选择最合适的方案,是一名优秀的程序员非常重要的能力。

刷算法题,其实就是锻炼这个能力的过程。

不少的算法题的解法很多。有的解法空间复杂度高但时间复杂度低,有的时间复杂度高但空间复杂度低,有的实现起来很简单,有的性能更好但实现复杂容易写错。

虽然在刷算法题中,通常时间最快的算法是正解,但也有不少加了时间复杂度限制的题目,你需要分析不同的方案,找出对应场景最合适的解法。

我们在做题中,对每一个解法的利弊的分析,也是面试中重点考察的内容。

“与其刷算法题,还不如多做点项目”

也有人说:“与其刷算法题,还不如多做点项目”。其实这两点并不冲突,我们的业余时间不可能全部用来刷算法题。

刷题应该是我们能力提高的一环,而不是全部。我们除了刷算法题,还可以学习其他的知识,读书、学习理财知识、做点个人项目、像我这样写文章,都是可以的。

并不是说,我们刷了算法题,就没时间做其他事情了。

我是推荐每周完成 5 道算法题,周一到周五每天一道,哪天没完成,周六日再补上就好了。

像玩游戏一样刷算法题

首先我们不要想着算法能够速成,能够短时间就能大幅提高,它是一个慢慢积累的过程。

你应该像玩游戏一样,每天打一关,一点点地收获熟练度并提高难度。应该带着去通关一个有难度的游戏关卡去对待它。即使今天完不成,明天我们再尝试,不行就看攻略。

Leetcode 其实是一个非常好的提高自己算法能力的平台,因为它有覆盖度足够的测试用例,能让我们每次提交都能获得反馈。

相比自己工作中写出的代码,不知道部署到线上什么时候会导致事故,Leetcode 的反馈是即时的,对我们快速提高能力有非常大的帮助。

结尾

无论是什么程序员,我都建议他去刷算法题,因为算法能力是一名程序员的基本素养。

我是前端西瓜哥,感谢您的阅读。

相关文章
|
28天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
44 3
|
13天前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
25天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
29天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
27 3
|
29天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
42 2
|
2月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
2月前
|
存储 前端开发 JavaScript
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
【10月更文挑战第4天】本文探讨了从 Web 2.0 到 Web 3.0 的前端开发演变过程。Web 2.0 时代,前端开发者从静态网页设计走向复杂交互,技术框架如 jQuery、React 和 Vue 带来了巨大的变革。而 Web 3.0 以区块链技术为核心,带来了去中心化的互联网体验,前端开发者面临与区块链交互、去中心化身份验证、分布式存储等新挑战。文章总结了 Web 2.0 和 Web 3.0 的核心区别,并为开发者提供了如何应对新技术的建议,帮助他们在新时代中掌握技能、设计更安全的用户体验。
58 0
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
|
1月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
43 0
|
2月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
188 0
|
2月前
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
170 0