很多人总是抱怨面试官问一些不常用的知识点,比如算法,网络(TCP)等,也就是大家常说的:面试造火箭,工作拧螺丝。但是你有没有想过,为什么整个前端圈子,或者说大部分的面试,不仅是前端,各种岗位都是这样?没有人可以解决这个问题吗?我认为,其实这是一种合理的行为,不是因为它存在,而是理应如此。接下来,我将从两个方面阐述我的观点。1、检验专业知识掌握的扎实程度张新旭十问十答的题目之一是“扎实的前端开发基础的标准是什么?”我觉得他这里对“实”的解释很适合回答这个问题。“刺”其实可以理解为深度。你可以想象用一根针刺入你的皮肤,压在一个点上会让你感到痛苦。那么如何理解知识的深度呢?我还是以前端面试为例。比如你做一个快速排序测试,很多人认为它有什么好处,你通常不会用它。引擎底层已经写好了sort方法,量级底层已经实现。好吧,没有必要参加考试。但实际上,面试官并不想测试你的快速排序代码是如何写的。说实话,十分钟,最多半个小时,你绝对能记住一个快速排序的代码。但实际上,真正考察快速排序的原因可能不仅仅是考察代码,而是考察其思想,分而治之(divideandconquer),以及除法算法的使用。另外,可能又会问你,它的时间复杂度是多少,怎么计算等等,这些问题不是考你这个算法的计算,而是要看透这个算法,你知道时间复杂度是怎么计算的。?用这个来指导你为什么快速排序很快,为什么归并排序这种分而治之的方法没有那么快。等等相关的算法知识。面试官调查的问题只是各种底层思想的应用。此示例应用程序用于检查对基本思想的理解程度。所以很多时候,大厂的面试,总是由浅入深地问问题,一直问到你不知道为止。再说说“现实”。其实可以理解为充实度,考察知识的广度。想象一下什么情况你会说什么是真的,给你一整晚的米饭,然后按一下,然后放一些米进去,直到你压不住,这时候你会说一晚全米饭很结实。因此,对“真实”的理解可以理解为充实、完整。如何体现你知识的广度,也就是现实。比如可以考察一些自己平时不用,但可能会用到的知识点。比如一些简单的算法和数据结构,链表,网络中的tcp/ip协议族,函数式编程等等,一些html5的特性(比如web-component)等等。在平时的编程中你可能不会用到,或者大部分前端工程师平时也不会用到,但这些都是需要知道的基本技能。比如React源码中使用了一些简单的数据结构。链表(Fiber树使用链表存储的结构是单链表,里面有循环表的增删改查),如果你不知道树可以存储在一个链表,如何操作链表,那你看源码可能问题很大。里面还有一些位运算。位操作不常用,但是fb工程师用它来解决实际问题。再比如web-component,已经是w3c提出的前端组件化标准。国内也有一些大佬用web-component实现一些库,比如腾讯的OMI。我们前端日新月异,新东西很多,怎么跟不上时代,多学(主要是理解,不是每一个新东西都需要深入研究,因为你没有那么多时间,大部分时间还是需要用在日常使用的地方)新的东西。如果你跟不上时代,你会做也会被慢慢淘汰,所以现在前端招聘基本上是要你懂一个框架,不管是React,Vue,Angular,这些都是趋势,数据-驱动,不再是以前的。启动jQuery就完成了。工作中常用的知识点,那些才是最重要的,所以大家都知道这些东西,你不知道的东西,别人不知道这些东西,这些东西比别人深一点,面试官为什么要你?也许你还是一个双非(非985、211)。我觉得有一个规律适用于任何领域,就是“T”型发展,先深化专业,再向两边拓展。第二,不存在别有用心的问题。此外,面试官可能会测试你的一些软技能。考验你的不仅仅是完成面试题那么简单。注意这一点,越简单的题越难(好好理解这句话)。让我以我自己的经历为例。我在做小米笔试题的时候(那种把题发给你,两天之内发给他的那种),有一道求最大公约数的题。很多人看到这道题都觉得很简单。只需几行代码即可完成。当时和我一起做笔试的选手也写了一个算法。而且我当时就想,我觉得面试官在查这道题的时候看代码有点麻烦,所以我写了一个界面,提供了可点击的数字,输入框,几个计算按钮,一个结果框,用户可以点击数字,或者在输入框输入数字来计算最大公约数,也可以做一些错误提示等等。这相当于做了一个应用,一个可以供用户使用的应用,所以在最终我因为这个问题被录取了。所以从那以后,我就越来越注重用户体验,想得更多,让别人使用我做的东西更舒服、更方便。一些tips一般来说,面试官不会因为你没有回答某个问题就拒绝你。面试官不喜欢简历上什么都能写,被问到每个知识点都掌握的很浅。对于常用的框架,至少要知道核心原理。这些都是我们面试官之前在讨论的时候提到的,希望对大家有所帮助。如果你还在编程的世界里迷茫,不知道自己未来的规划,可以加入web前端学习团队。我欢迎基础技术和高级技术。技术分享,点击:加入
