js 相关面试题 (更新中)
基础题
数据类型的分类? 原型类型与引用类型分别有哪些?
==和===区别
let 与 const 的区别
let 与 var 的区别
数组去重有什么方式
数组对象有哪些原生方法,列举一下
什么是伪数组(类数组)和真正的数组有什么区别
什么是事件对象,你知道的事件对象中都有什么东西。
事件委托的原理,和实现方式,为什么用事件委托
documen.write和 innerHTML的区别
null,undefined的区别?
什么是window对象? 什么是document对象?
javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?
什么叫做作用域,作用域链
局部变量和全局变量有什么区别。
形参与实参的关系
new操作符具体干了什么呢?
谈谈this的理解
什么是闭包(closure),为什么要用它?
js中深拷贝与浅拷贝的区别?实现深拷贝的方法有哪些?
js添加事件的方法有哪些?
关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
IE为事件冒泡,Firefox同时支持事件捕获和事件冒泡。但并非所有浏览器都支持事件捕获。jQuery中使用event.stopPropagation()方法可阻止冒泡;(旧IE的方法 ev.cancelBubble = true;)
attribute与property的区别?
attribute是dom元素在文档中作为html标签拥有的属性
property是dom元素在js中作为对象拥有的属性。
所以,对于html的标准属性来说,attribute和property是同步的,是会自动更新的。但对于自定义属性,他们不同步。
DOM操作
(1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
(2)添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的子节点前插入一个新的子节点
(3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)
getElementById() //通过元素Id,唯一性
参考:https://zhuanlan.zhihu.com/p/148098455
高频面试题
JS延迟加载的方式有哪些?
["1", "2", "3"].map(parseInt) 答案是多少?
new实现原理
promise实现原理,Promise如何在同一个promise里发起多个请求?
Promise async await
算法: 选择排序和快速排序
回显:一个列表需要请求数据,同时需要初始化怎么做
js是单线程、浏览器怎么处理的
Eventloop,宏任务微任务,那些是宏任务那些是微任务,执行顺序
防抖和节流是什么?节流防抖应用场景,详细讲解一下代码实现
重绘,重排,回流的区别?
重排重绘的区别,性能消耗大的是谁?怎么解决?
类数组,数组与类数组的转换
es6 generate函数 ,yelid关键字,迭代器的使用,.Proxy 对象
Object.create, Object.definePropery, Object.assign,Object.is等方法
数组方法 reduce() , flat() / filter() , map() , forEach()
数组方法 Array.from() 与 Array.of()
数组方法 at() , copyWithin(), entries(), every(), fill(), find, include, some
函数柯西化, 手写
函数方法, Function.prototype.call , Function.prototype.apply , Function.prototype.bind三者的区别
this 的理解
闭包的理解
执行上下文
原型,原型链
深拷贝和浅拷贝的区别,分别有哪些方式可以实现深拷贝浅拷贝
浏览器与网络相关面试题
浏览器渲染机制
浏览器有哪些线程
浏览器的运行机制
浏览器的缓存机制,强缓存和协商缓存
url实现原理
UDP TCP区别
三次握手,四次挥手
http是什么?无状态协议是什么?怎么理解
HTTP请求报文
http和https的区别?自己有申请过https的流程吗?
http的方式有哪些?分别代表什么?
http 1.0 http1.1 http2.0的区别,如何开启2.0
socket , 轮询,长轮询的理解