前端工程师应该掌握算法吗?

2016-11-26 21:52:19 +08:00
 neoblackcap

在公司里面面试了好几个应聘前端工程师的人,除了 css 跟 jQuery 之外,其他基本上都不懂,排序算法普遍不能说出快排跟冒泡排序的区别,更不用说实现了。 有时候我在想身为一个面试官,我应该考算法吗?但是不考算法的话,我没法检验他们是否符合工程师而不是设计师的岗位要求。 一个页面 jQuery 写几千行,完全不用函数,不断地用 jQuery 插件,除此以外连个简单数组排序都做不了。 请问各位前端大神应该如何面试一个前端?

15871 次点击
所在节点    程序员
93 条回复
neoblackcap
2016-11-26 23:35:42 +08:00
@murmur 让我来的话直接的想法肯定是贪心法,不过应该不符合尽可能美观的要求。稍作一番分析觉得跟最小二乘有关,应该可以抽象成一个线性组合的相关问题,具体的要再想想
peneazy
2016-11-26 23:36:24 +08:00
@maomaomao001 CSS 主要是学习成本高,各种浏览器兼容问题,花点苦力气学扎实,之后会比较轻松的
neoblackcap
2016-11-26 23:41:38 +08:00
@maomaomao001 当初的设计我觉得跟今天的前端工程化趋势已经大为不同了,现在流行组件化,其实在在很多情况下, css 的设计跟组件化是想左的,比如组件应该跟外部隔离,但是 css 在正常的情况下又会影响组件的内部状态,因此很多人提了 css module 这样的方法,当然这也会造成 css 冗余。不过我个人觉得 css module 带来可以隔离一个组件的状态的优点显然大于其引起 css 重复冗余的缺点
n6DD1A640
2016-11-26 23:55:45 +08:00
不需要,但是面试适度问点算法以筛选人。
Yc1992
2016-11-26 23:58:38 +08:00
@wuethan 神逻辑,这波解释我服
Famio
2016-11-27 00:11:05 +08:00
@wuethan 卧槽,画面感好强!同是觉得这个解释非常让我信服。
viko16
2016-11-27 00:16:03 +08:00
楼上一群自以为是的想法。。。

以整天只面向逻辑的「工程师」的标准来看前端,我看到了前后端之间很深的误解

前端是个很特殊的位置,面试侧重点还是应当放到前端基础、项目经验、工程性问题、处理问题的思路等方面,算法只当加分

「面试前端问到算法」没有问题,有追求的程序员都会去了解算法。可是如果「只以算法来面前端」的话,我认为这就是 leader 不识才了

如果不清楚面试能问什么,请搜索各大公司的「前端面试题」,估计能让你们大开眼界
jin5354
2016-11-27 00:28:02 +08:00
前端的工作场景中绝大多数用不到算法,想往深问,与其问算法不如问工程化、设计模式、编程范式这些更实用且能直接反应生产力水平的内容。

你可以认为所有工程师都需要掌握算法...但是前端就是这样一个神奇的工种,不会写快排也不会妨碍一个人又快又好的出活..对于前端来说,会算法应该是一个加分点,而不是一个必需要求。
neoblackcap
2016-11-27 00:39:12 +08:00
@jin5354
@viko16
非常感谢,两位的观点,就是觉得考算法嘛好像能考一些软件工程,但是好像又不像。我主要还是担心他们的工程化水平,几千行 jQuery 调用代码,真的吃不消。不过之前看了其他公司(trello)的前端面试,好像跟软件工程的都不是特别沾边,最多是有考察 debug 的
jarlyyn
2016-11-27 00:39:44 +08:00
面试是不是为了考核被面试人的技术水平,还是看被考核人是否能胜任这个工作。

工作需要熟悉算法,就重要。

工作不需要熟悉算法,就不重要。

如果只是把算法作为一个评分标准,那么就要明白这个标准对这个工作的意义。
vultr
2016-11-27 00:54:58 +08:00
需不需要考算法是招聘的公司定的,你认为要就需要,我自己的话更看重解决问题的速度与质量。又快又好的直接去和老板聊;稍慢一些但质量不错的也要;很快但质量一般的,只要人品没问题也考虑要。
BruceYuan
2016-11-27 00:56:32 +08:00
大部分排序都能手写出来,不过并不妨碍我做不出好看的页面来啊。其实我这种是更菜的,
shiny
2016-11-27 00:59:39 +08:00
等你坐在老板的位置上再去思考工程师需要的知识结构和技能会更有意义点。算法只是其中很小的一项。
whiteball
2016-11-27 01:05:23 +08:00
野蛮生长。
neoblackcap
2016-11-27 01:07:29 +08:00
@shiny 主要是现在负责面试的人是我,所以不得不想这事。若非我面试自然不用管这事了。还有就是跟招进来的前端工程师配合比较吃力啊,很多东西都出来的效果跟需求都相差很远,上面给压力不小。
我们这里前端主要负责推广页的制作,推广嘛,运营肯定是需要搞一些小游戏什么的,这些都是归前端管了( API 后端已经实现好)但是前端明显 hold 不住啊, bug 很多, debug 不能自个完成需要投入其他人去帮助。因此才过来提问是不是招人的方法不对,面试前端的时候应该注意什么。
lunaticf
2016-11-27 01:16:52 +08:00
你是正确的,现在培训班太多了,不是说培训班出来的就没有好的,但是大部分都是没有所谓的素养的,自学能力较差。我们首先是程序员,再是一个前端。算法很重要。
audeSt
2016-11-27 01:22:37 +08:00
算法+数据结构+网络+操作系统

这四大基础是一个合格程序员必备的吧
ByZHkc3
2016-11-27 01:33:47 +08:00
@neoblackcap 其实很简单的,看他写过的项目,然后问遇到过哪些坑,顺便观察下他解决思路的方式。如果像你说的前后端联调交互都做不好的,那基本上就是很水的前端了。更别说前端工程化。
算法的话我是建议看人吧,如果问过了他简历上的项目及熟悉的技术栈后觉得不错,可以适当的问下算法的问题,当作事加分项。

不可否认,现在培训班出来的太多了,我上周面试遇到两家公司当场问我有没有参加过培训班。超级无语。
ivvei
2016-11-27 01:46:59 +08:00
代码工程化什么的,跟算法没什么关系啊。搞 ACM 的,算法个个都高手了吧,但做题的那代码拿工程标准能看吗?连变量名都未必能合格。
真要很能玩算法的我反而担心别人读代码时能不能理解他那思路…… Unix 哲学的 KISS 还记得不。 Keep it simple, stupid. 你写太精妙了别人看不懂啊。
huntzhan
2016-11-27 02:29:32 +08:00
> 这是已经存在的代码,主要是想不在招这样的人了,太可怕了,就不知道为什么他们不觉得这样维护起来可怕。加功能的时候他们还能往上面加,简直碉堡了。

是不是离职比较好?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/323537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX