240 Star 2.1K Fork 87

鹏磊 / DevBooks

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
前端面试题及答案整理,2021年最新,汇总版.md 8.27 KB
一键复制 编辑 原始数据 按行查看 历史

前端面试题及答案整理,2023年最新,汇总版

全部答案,更新日期:2023年6月11日,直接下载吧!

下载链接:高清172份,累计 7701 页大厂面试题 PDF

1、promise对象的用法,手写一个promise

promise是一个构造函数,下面是一个简单实例

var promise = new Promise((resolve,reject) => {
    if (操作成功) {
        resolve(value)
    } else {
        reject(error)
    }
})
promise.then(function (value) {
    // success
},function (value) {
    // failure
})

2、浏览器是怎样解析CSS选择器的?

1、 CSS选择器的解析是从右向左解析的。若从左向右的匹配,发现不符合规则,需要进行回溯,会损失很多性能。若从右向左匹配,先找到所有的最右节点,对于每一个节点,向上寻找其父节点直到找到根元素或满足条件的匹配规则,则结束这个分支的遍历。两种匹配规则的性能差别很大,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面。

2、 而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终用来进行绘图。在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 Render Tree。

3、JS的几条基本规范

1、 不要在同一行声明多个变量

2、 请使用===/!==来比较true/false或者数值

3、 使用对象字面量替代new Array这种形式

4、 不要使用全局变量

5、 Switch语句必须带有default分支

6、 函数不应该有时候有返回值,有时候没有返回值

7、 For循环必须使用大括号

8、 IF语句必须使用大括号

9、 for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染

4、display:none与visibility:hidden的区别?

display:none 不显示对应的元素,在文档布局中不再分配空间(回流+重绘)

visibility:hidden 隐藏对应元素,在文档布局中仍保留原来的空间(重绘)

5、谈一下你对网页标准和标准制定机构重要性的理解。

网页标准标准制定机构都是为了能让 web 发展的更‘健康’,开发者遵循统一的标准,降低开发难度,开发成本,SEO也会更好做,也不会因为滥用代码导致各种 BUG、安全问题,最终提高网站易用性。

6、异步加载JS的方式有哪些?

defer,只支持IE

async

创建script,插入到DOM中,加载完毕后callBack

7、JavaScript有几种类型的值?,你能画一下他们的内存图吗?

1、 栈:原始数据类型(UndefinedNullBooleanNumber、String

2、 堆:引用数据类型(对象、数组和函数)

3、 两种类型的区别是:存储位置不同;

4、 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;

5、 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其

6、 在栈中的地址,取得地址后从堆中获得实体

![33_1.png][33_1.png]

8、元素的alt和title有什么异同

在alt和title同时设置的时候,alt作为图片的替代文字出现,title是图片的解释文字。

9、Object.seal 和 Object.freeze 方法之间有什么区别?

Object.freeze()

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

Object.seal()

Object.seal()方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要可写就可以改变。

方法的相同点:

1、 ES5新增。

2、 对象不可能扩展,也就是不能再添加新的属性或者方法。

3、 对象已有属性不允许被删除。

4、 对象属性特性不可以重新配置。

方法不同点:

  • Object.seal方法生成的密封对象,如果属性是可写的,那么可以修改属性值。* Object.freeze方法生成的冻结对象,属性都是不可写的,也就是属性值无法更改。

10、改变元素的外边距用什么属性?改变元素的内填充用什么属性?

改变元素的外边距用 margin,改变元素的内填充用 padding。

11、每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗?

12、如果设计中使用了非标准的字体,你该如何去实现?

13、HTTP状态码及其含义

14、如何实现浏览器内多个标签页之间的通信?

15、你如何对网站的文件和资源进行优化?

16、什么是事件传播?

17、为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

18、AMD和CMD是什么?它们的区别有哪些?

19、什么是默认参数?

20、mouseover和mouseenter的区别

21、HTML5 元素的分类

22、<img>titlealt有什么区别

23、attribute 和 property 的区别是什么?

24、webSocket如何兼容低浏览器

25、iframe有那些缺点?

26、什么是模板字符串?

27、web开发中会话跟踪的方法有哪些

28、常见的浏览器兼容问题?

29、link 标签定义

30、简述下你理解的面向对象?

全部答案,更新日期:2023年6月11日,直接下载吧!

下载链接:全部答案,整理好了

新增:高清PDF:172份,7701页,最新整理

Java
1
https://gitee.com/souyunku/DevBooks.git
git@gitee.com:souyunku/DevBooks.git
souyunku
DevBooks
DevBooks
master

搜索帮助