美文网首页
2020前端高频面试题

2020前端高频面试题

作者: 兰亭序乱 | 来源:发表于2020-08-12 23:56 被阅读0次

    以下七个面试题(出现频率降序排列)都是本人及同事多次面试大部分情况都问到了的题(ps:一年工作经验左右),整理一下:

    1. 什么是原型链(基本必问)?

    JavaScript 中除了基础类型外的数据类型,都是对象(引用类型)。但是由于其没有 类(class,ES6 引入了 class,但其只是语法糖)的概念,如何将所有对象联系起来就成立一个问题,于是就有了原型和原型链的概念。

    每个实例对象( object )都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype )。该原型对象也有一个自己的原型对象( proto ) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

    以上一整个原型与原型层层相链接的过程即为原型链

    原型链可以将公用属性存放在同一原型层中,实现继承、节省内存空间等。

    当您访问实例的属性时,JavaScript 首先会检查它们是否直接存在于该对象上,如果不存在,则会 [[Prototype]] 中查找。这意味着你在 prototype 中定义的所有内容都可以由所有实例有效共享,你甚至可以稍后更改部分 prototype,并在所有现有实例中显示更改(如果需要)。

    参考https://zhuanlan.zhihu.com/p/39549472

    1. 什么是闭包(基本必问)?

    闭包就是能够读取其他函数内部变量的函数。

    闭包最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在调用后被自动清除。

    使用注意:

    1. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

    2. 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

    参考https://www.cnblogs.com/amcy/p/9912528.html

    1. 说说es6的新特性(基本必问)?
    1. 不一样的变量声明:const和let
    2. 模板字符串
    3. 箭头函数(Arrow Functions)
    4. 函数的参数默认值
    5. 对象和数组解构
    6. ES6中的类
    7. Promise对象
    8. 模块化(import 和export )
    9. 扩展运算符
    10. for...of 和 for...in

    上面只是常用的10个新特性,不代表es6全部的新特性,基本答出来五六个就行了。
    参考https://www.jianshu.com/p/ac1787f6c50f

    1. 说说html5的新特性?

    html5总的来说比html4多了十个新特性,但其不支持ie8及ie8以下版本的浏览器

    一、语义标签

    二、增强型表单

    三、视频和音频

    四、Canvas绘图

    五、SVG绘图

    六、地理定位

    七、拖放API

    八、WebWorker

    九、WebStorage

    十、WebSocket

    语义化标签一定要知道,问的比较多
    具体请见https://www.cnblogs.com/binguo666/p/10928907.html

    1. 说说你对前端的理解?

    前端是负责网站或者软件用户界面本身的制作以及界面与用户交互体验的设计。

    前端工程师是最贴近用户的程序员,主要负责实现页面交互,优化提升用户体验,如果后端是用来解决系统能不能用的问题,那么前端就用来解决系统好不好用的问题。

    1. 用过的数据结构有哪些?

    数据结构,直白地理解,就是研究数据的存储方式。

    数据存储只有一个目的,即为了方便后期对数据的再利用,但数据存储决不是胡乱的,这就要求我们选择一种好的方式来存储数据,而这也是数据结构的核心内容。

    js参考1https://blog.csdn.net/yeyazhishang/article/details/82353846
    c参考2http://c.biancheng.net/view/3329.html

    1. JavaScript的基本数据类型(很少问,都工作一年肯定默认你会了,但答不出来自己想想后果)?

    JavaScript的数据类型,共有六种。分别是undefined、null、boolean、number、string、object(ES6新增第七种Symbol一种基本数据类型,它的实例是唯一且不可改变的类型的值)。

    es10新特性中还有一个BigInt基本数据类型,不过这个类型可说可不说吧

    参考https://www.html.cn/qa/javascript/11027.html


    以上基本是每个前端,不管是哪个方向或多或少都会问到的一些问题,大家切记不要死背答案,一定要理解,而且还要延伸到相关的知识点,因为面试官90%都会顺着你的答案再问几个关键点。

    比如你说出es6的新特性有一个是箭头函数,面试官很可能就自然而然问了一句箭头函数和传统的函数有什么区别?这个要是答不出来岂不是前功尽弃。

    除了上述七个常规问题,后面的面试流程基本都离不开你做过的项目了,然后你的项目基本都离不开vue、react、小程序、网页、app。

    所以一般都会围绕三大前端框架来问,国内就vue以及react了,这是吃饭的家伙,必须要掌握一到两个。具体来问的无非就是vue/react有什么特点,生命周期函数,都用过哪些框架,某个问题是怎么解决的,vue我不是很清楚,react的话大多数都会扯到hook、高阶组件(HOC)、react-native。

    后面根据你简历上的项目来问的问题其实,只要你真的写过,基本都能答出来,实在是没用过的起码平时也要了解一下,虽然不是很熟悉但是知道这个概念扣分也不至于那么严重。

    不过话说回来,大多数中小型公司只要确定你真的用某个框架做过项目,基本都能过,不过还是希望大家多了解一下基础理论知识,毕竟这是加分项,答出来要到高工资的几率也会大很多,是吧。

    相关文章

      网友评论

          本文标题:2020前端高频面试题

          本文链接:https://www.haomeiwen.com/subject/kpdvdktx.html