91道JavaScript面试题,内含详细讲解(涵盖入门到精通,自测JS掌握程度)

169 阅读4分钟

作为前端开发,JS是重中之重,最近结束了面试的高峰期,基本上offer也定下来了就等开奖,趁着这个时间总结下91道JavaScript面试题,这些都是高频面试题,希望对你能有所帮助。

一、原型链

1.1,创建对象有几种方法? 1.2,instanceof的原理?

二、类

2.1,类的声明? 2.2,生成实例?/ 声明一个类,怎么生成类的实例?

三、继承

3.1,call、apply的共同点与区别? 3.2,用javascript实现对象的继承/ 继承的几种方式,这几种方式的优缺点?

四、作用域

4.1,说说你对作用域链的理解? 4.2,this? 4.3,请说出下列的值?

五、javaScripti闭包

5.1,闭包的特征? 5.2,闭包应用场景? 5.3,实际开发中闭包的应用? 5.4,请说出下列的值?

六、js运行机制/ 单线程/ 异步

6.1,如何理解js的单线程? 6.2,js为什么是单线程的? 6.3,同步和异步的区别是什么?分别举一个同步和异步的例子? 6.4,何时需要异步? 6.5,什么是任务队列? 6.6,请说出下列值? 6.7,栈和队列的区别? 6.8,栈和堆的区别? 6.9,什么是event loop? 6.10,event-loop流程? 6.11,哪些语句会放入异步任务队列中? 6.12,何时被放入任务队列?

七、js数据类型

7.1,js使用typeof能得到的哪些类型? 7.2,如何准确判断一个变量是数组类型? 7.3,js变量按照存储方式区分为哪些类型,并描述其特点? 7.4,null和undefined的区别? 7.5,undefined的典型用法? 7.6,null的典型用法? 7.7,chrome60+浏览器中,a===b的是哪项?

八、js中的内置函数/内置对象

8.1,js中有哪些内置函数/ 数据封装类对象? 8.2,js中有哪些内置对象? 8.3,js变量按照存储方式区分为哪些类型,并描述其特点? 8.4,数组方法/ Array对象方法? 8.5,数组API? 8.6,对象API?

九、数组去重

9.1,数组怎么去重?(方法) 9.2,对上述数组去重方法速度比较?(性能) 9.3,一句话数组去重? 9.4,保留数组中非重复元素? 9.5,保留数组中重复元素?

十、js逻辑判断

10.1,请写出下面的答案?

十一、内存泄漏

11.1,哪些操作会造成内存泄漏? 11.2,js内存泄漏的解决方式

十二、dom

12.1,dom是哪种基本的数据结构? 12.2,dom操作的常用api有哪些? 12.3,dom节点的attribute和property有何区别? 12.4,dom结构操作/ 怎样添加、移除、移动、复制、创建和查找节点/ dom操作的常用api? 12.5,dom事件的级别? 12.6,dom事件模型? 12.7,dom事件流? 12.8,描述dom事件捕获的具体流程? 12.9,event对象的常见应用? 12.10,自定义事件/ 模拟事件? 12.11,通用事件绑定/ 编写一个通用的事件监听函数?

十三、bom

13.1,bom常用属性?

十四、通信

14.1,什么是同源策略及限制? 14.2,前后端如何通信? 14.3,跨域通信的几种方式? 14.4,jsonp实现? 14.5可以跨域的三个标签? 14.6,三个可跨域的标签的使用场景?

十五、ajax

15.1,ajax请求的原理/ 手写一个ajax请求? 15.2,readyState? 15.3,ajax异步与同步的区别? 15.4,ajax传递中文用什么方法?

十六、错误监控

16.1,前端错误的分类/ 如何检测js错误/ 如何保证你的产品质量? 16.2,错误的捕获方式? 16.3,上报错误的基本原理?

十七、模块化

17.1,amd、cmd区别? 17.2,amd、commonJs区别?

十八、虚拟dom

18.1,vdom的如何应用,核心api是什么? 18.2,虚拟dom转换成真实dom? 18.3,diff实现过程?

十九、js基础

19.1,对js的理解? 19.2,请说出以下代码输出的值? 19.3,把以下代码,改写成依次输出0-9 19.4,如何区分数组对象,普通对象,函数对象 19.5,面向对象、面向过程 19.6,面向对象的三大基本特性 19.7XML和JSON的区别? 19.8,Web Worker 和webSocket? 19.9,Javascript垃圾回收方法? 19.10,new操作符具体干了什么呢? 19.11,js延迟加载的方式有哪些? 19.12,WEB应用从服务器主动推送Data到客户端有那些方式?

篇幅有限,需要完整版PDF的朋友【点击这里】可以领取前端91道JavaScript面试题及解析。

总结

无论去哪家公司面试,都很重视基础,尤其是对于应届生来说,所以在面试前基础一定要打扎实。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

针对以上面试技术点,我在这里也做一些资料分享,希望能更好的帮助到大家。