英文 | https://medium.com/frontend-canteen/an-experienced-frontend-developer-gets-ridiculed-by-an-interviewer-for-failing-to-complete-an-dccd790feea4
翻译 | 杨小爱
我有一个朋友,他是一位经验丰富的前端开发人员,他曾参与过多个复杂的前端项目,最近,他正在寻找一份新工作并接受了几次面试,但其中有次不愉快的面试经历,他跟我分享了这次不愉快的经历。
事情就是这样,他去某公司面试的时候顺利通过了前两轮面试,但是在第三轮面试中,面试官问了一个关于图论的算法问题。
我的朋友擅长前端技术栈,但他不擅长算法。他是一名自学成才的开发人员,没有计算机学位,也没有系统地学习算法。
想了想,还是答不上算法题,于是坦白告诉面试官:我不知道这个问题。
但面试官用不同的眼神看着我的朋友:这只是 Leetcodes 上的一个简单级别的问题。
我的朋友尴尬地笑了笑,没有回答。
然后就没有后续了,这次面试就结束了。
当我的朋友与我分享这段经历时,我的心情很复杂。事实上,我和他一样,都是自学成才的,从来没有系统地学习过算法。
他是一位出色的前端开发人员,他熟悉 JavaScript,甚至为 Reactjs 的源代码做出过贡献。他知道如何优化前端项目和维护复杂项目。但他只是不擅长算法,所以他没有得到那份工作。
面试问题本身不再重要。
现在,我想讨论一个问题:算法对前端开发人员重要吗?
一些人认为数据结构和算法对前端开发人员也很重要。他们认为算法是程序的灵魂,每个程序员都应该掌握算法。而前端开发者也是程序员,当然也不例外。
所以,这些人主张前端开发者也应该像后端程序员一样学习算法。
我认为,这一切都是一种权衡,根据自己的情况进行权衡。
你喜欢大房子、旅行、汽车和各种收藏品,这些都是好东西,但是你的钱是有限的,你只能选择其中的一部分。
前端开发人员也是如此,Html、Css、JavaScript、TypeScript、React、Vue、性能优化、网络、浏览器、算法、设计模式等都是重要的知识。
但是我们的时间是有限的,我们每个人一天只有24小时,除了休息和工作,剩下的空闲时间不多了,你不可能在每个领域都很强。
将算法视为灵丹妙药是一种严重的误解。对于前端工程师来说,最重要的是什么?在我看来,最重要的是工程能力。所谓工程能力,本质上就是“解决问题的能力”。无论是编程技能还是架构思维,其本质都是服务于解决问题的最终目标。
算法训练肯定会在一定程度上帮助你提升你的工程能力(比如提高你的代码的严谨性,开发解决问题的思路等等)。尽管如此,它绝对没有直接做工程那么快。
对于前端开发者来说,编程技能可以从实际项目中积累。而一些复杂的算法往往被前人封装,我们可以直接导入相关库。算法往往不是业务发展和个人职业发展的瓶颈。
在成熟的团队中,复杂的算法问题都由专门的算法工程师处理。对于前端开发者来说,很少需要独立解决特别复杂的算法问题。
所以我认为,如果你不擅长算法,你仍然可以成为一名优秀的前端开发人员。
不过不要误会,算法对前端开发者来说并不是不重要,而是我们还是需要了解一些基本的算法。
比如一些基本的数据结构:包括数组、链表、栈和队列,还有一些基本的算法:排序算法、递归思想等也经常用到。
最后,感谢你的阅读,同时也欢迎你在留言区跟我分享你的想法。