很多人总是抱怨面试官问一些平时不常用的知识点,比如算法呀,网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝。
但是有没有想过为什么整个前端圈,或者绝大部分面试,不仅是前端,各种职位都是这样呢?难道就没人来解决这个问题吗?
我觉得,事实上,这是一种合理的行为,并不是因为存在即合理,而是本来就应该这样,接下来我以两个方面阐述我的观点。
一、 考验对专业知识的掌握的扎实程度
在张鑫旭的十问十答里的一个问题是,「前端开发基础扎实的标准是什么?」
这里面他对「扎实」的解释我觉得很适合来答这个问题。
「扎」其实可以理解为深度,你可以想象一个用一根针,扎你的皮肤,对一个点的压力,可以让你痛不欲生。
那么如何理解知识的深度呢?
我还是拿前端面试来举例,比如考一个快速排序,很多人就觉得这有什么好考的嘛,平时又用不到,引擎底层已经写好了 sort 方法,什么数量级用什么排序底层也已经实现好了,没必要考了呀。
但是其实面试官并不是想考你快排的代码是如何写的,说实话,花个十分钟,最多半小时,一个快排的代码你肯定可以记住。但是其实考察快排的真正原因可能不仅仅是考察代码,而是考察它的思想,分而治之(分治法),划分算法的运用。
另外可能会再问你,它的时间复杂度是多少,如何计算等这些问题,这些问题也不是来考你这一个算法的计算,而是通过这一个算法来看你知道怎么算时间复杂度不?以此来引导你为什么快速排序快,为什么同样是分治法的归并排序没有这么快。等等相关的算法方面的知识。
面试官所考察的问题只是各种底层思想的一个运用,通过这个实例应用来考察对底层思想的理解程度。所以很多时候大厂的面试总是从浅入深的问问题,直到把你问到不知道为止。
再谈谈「实」,实则可以理解为满,考察知识的广度。
想象一下什么样的情况你才会说一个东西实,给你一晚装满的米饭,并且还压一压,再放进去一些米饭,直到压不下去了为止,这个时候你会说满满的一晚米饭,很实在。
所以对「实」的理解就可以理解为满,全。
如何来体现你对知识的广度呢,也就是实。
比如可以考察一些你平时不常用的,但是你也许会用到的知识点。比如一些简单的算法和数据结构,链表呀,网络里面的 tcp/ip 协议族呀,函数式编程呀等等,一些 html5 的特性(比如 web-compoennt)等等。
你可能在平时编程中没用到,或者大多数前端工程师平时不会用到,但是这些是基本功是需要知道的,比如 React 源码中就用到一些简单的数据结构,链表(Fiber 树就是用链表的结构存的,是一个单链表,以及里面还有循环列表的增删改查),如果不知道树可以用链表存,如何对链表进行操作,那么可能你看源码就很成问题。里面还有一些位运算等,位运算平时也不常用吧,但是 fb 的工程师就用它来解决实际问题。
再比如 web-component,这已经是 w3c 提出的一个前端组件化的标准了,我国也有大佬用 web-component 实现了一些库,比如腾讯出的 OMI。
我们前端变化得快,新东西也多,如何不跟上时代,多了解(主要了解,不是每个新东西都要去深究,因为你没那么多时间,大多数时间还是要用在平时用得到的地方)一些新东西。
跟不上时代,也行就会慢慢的被淘汰,所以现在前端招聘基本上都会需要你会一门框架,不管是 React 、Vue、Angular,这些都是趋势,数据驱动,不再是以前拿起 jQuery 就是干了。
在工作中常用的知识点,那些是最重要的,那么大家都会这些,如果你不知道点,别人不知道的东西,这些东西比别人掌握得更深一点,面试官为什么要你? 也许你还是个双非(非985、211)。
我觉得在任何领域都适合一个定律,就是「T」字形发展,先把专业搞深一点,然后往两边扩展。
二、醉翁之意不在题
另外面试官也许会考你一些软技能,考你的不仅仅是面试题完成了那么简单。这点注意,越简单的题越不简单(好好理解这句话)。
我拿我自己的经历来举例,之前做小米的笔试题(是那种把题目发给你,两天内做好了发给他)的时候,有一道题是:求最大公约数的题目。
很多人看到这道题觉得很简单嘛,几行代码就搞定了,当时跟我一起做笔试题的几位竞争者也是,他们就写了一个算法。
而我当时想到,我觉得面试官在检查这道题的时候如果看代码还是有点麻烦,所以我就写了一个界面,界面上提供了可以点击的数字,还有输入框,还有几个计算按钮,一个结果框,用户可以通过点击数字,或者在输入框里输入数字进行计算最大公约数,还做了一些错误提示等。
这相当于做了一个应用,一个可以给用户使用的应用,所以最后因为这道题,我被录取了。
所以之后我就越来越注重用户体验,多一些思考,让别人用自己做的东西的时候更舒服,更方便。
一些小提示
一般面试官不会因为你某道题没答出来就否定你的。
面试官不喜欢简历上写的啥都会,一问每个知识点都掌握得很浅。
对于平时常用的框架,至少要知道核心原理。
这些是之前我们组面试官在讨论的时候提到的,希望能给大家帮助。
自己是一个五年的前端工程师
如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加入web前端学习交流群:784783012 里面可以与大神一起交流并走出迷茫。新手可免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行不停更新最新的教程和学习方法(详细的前端项目实战教学视频),有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入
点击:加入
网友评论