面试题-未处理的 (下)

简介: 面试题-未处理的

说说浏览器的内核?


浏览器名称                     内核


谷歌浏览器(chrome)             blink


欧朋浏览器(Opera)              blink


火狐浏览器(firefox)            Gecko


苹果浏览器(safari)            webkit


ps:Blink其实是Webkit的分支


你对浏览器内核的理解?


浏览器内核也就是我们说的渲染引擎。


负责对网页语法进行解释。


如将HTML,JavaScript渲染(显示)为网页。


渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。


不同的浏览器内核对网页编写语法的解释不同


简单介绍一下 V8 引擎的垃圾回收机制 高级


v8 引擎将内存分为了新生代和老生代。


新创建的对象或者只经历过一次的垃圾回收的对象被称为新生代。


经历过多次垃圾回收的对象被称为老生代。


新生的对象容易早死,老生代活得更久


新生代被分为 From 和 To 两个空间。


To 一般是闲置的,当 From 空间满了的时候会执行 Scavenge 算法进行垃圾回收。


这个算法分为三步:


1.首先检查 From 空间的存活对象,


如果判断这个存活对象是否满足晋升到老生代的条件,


满足条件则晋升到老生代,如果不满足条件则移动 To 空间。


2.如果对象不存活,则释放对象的空间。


3.最后将 From 空间和 To 空间角色进行交换


V8 新生代对象晋升到老生代有两个条件:


1.第一个是判断对象否已经经过一次 Scavenge 回收。


若经历过,则将该对象从 From 空间复制到老生代中;


若没有经历,则复制到 To 空间。


2.第二个是 To 空间的内存使用占比是否超过限制。


当对象从 From 空间复制到 To 空间时,若 To 空间使用超过 25%,


则对象直接晋升到老生代中。


设置 25% 的原因主要是因为算法结束后,


两个空间结束后会交换位置,如果 To 空间的内存太小,会影响后续的内存分配。


ps:老生代采用了标记清除法和标记压缩法。


参考的地址:https://juejin.cn/post/6844904200917221389#heading-43


ECMAScript 是什么?


ECMAScript 是编写脚本语言的标准,


这意味着JavaScript遵循ECMAScript的标准规范。


ECMAScript 和 Javascript,本质上都跟一门语言有关,一个是语言的约束条件,一个是语言本身的名字。


只不过发明JavaScript的那个人(网景公司),把东西交给了ECMA,


让ECMA规定一下JavaScript的标准,所以这样一个神奇的东西诞生了,这个东西的名称就叫做ECMAScript。


javaScript = ECMAScript + DOM + BOM(自认为是一种广义的JavaScript)


ECMAScript说什么JavaScript就得做什么!


JavaScript(狭义的JavaScript)做什么都要问问ECMAScript我能不能这样干!如果不能我就错了!能我就是对的!


——突然感觉JavaScript好没有尊严,为啥要搞个人出来约束自己,


那个人被创造出来也好委屈,自己被创造出来完全是因为要约束JavaScript。


面试题之CSS盒模型


css


盒模型


盒模型有两种:标准盒模型和ie盒模型


标准模型 (宽、高)= content 的宽高


ie模型(宽、高)= content 的宽高 + padding 的宽高 + border 的宽高


CSS如何设置这两种模型


标准模型 box-sizing: content-box;


ie 模型 box-sizing: border-box;


浏览器默认是标准盒模型


JS如何设置获取盒模型对应的宽和高


1、内联样式的宽和高:dom.style.width/height


2、渲染后的结果,只有ie支持 : dom.currentStyle.width/height


3、所有浏览器支持,和第二个原理一样,通用性更好些:

window.getComputedStyle(dom).width/height


4、计算一个元素的决定位置(根据视窗-左顶点):

dom.getBoundingClientRect().width/height


BFC的基本概念


BFC就是“块级格式化上下文”的意思.


盒子与盒子之间彼此独立,互不影响。


创建BFC的方式


1.float 除了none以外的值


2.overflow 除了visible 以外的值(hidden,auto,scroll )


3.display (table-cell,table-caption,inline-block, flex, inline-flex)


4.position值为(absolute,fixed)


在以上的情况里可以创建BFC。


BFC的使用场景


1.解决margin叠加问题


2.用于清除浮动,计算BFC高度.


flex布局、两/三栏布局、水平/垂直居中;


清除浮动;


css3动画、H5新特性。2

相关文章
|
JSON NoSQL MongoDB
Compass
【6月更文挑战第8天】Compass
406 9
|
9月前
|
存储 网络协议 网络安全
【Azure 环境】部署ARM Linked Template时候 Blob SAS Token不能正常工作
Unable to retrieve url https://<stroage account name>.blob.core.chinacloudapi.cn/arm/azuredeploy.json?sp=r 'st' is not recognized as an internal or external command, operable program or batch file. 'se' is not recognized as an internal or external command, operable program or batch file. 'spr' is no
138 1
|
数据采集
LabVIEW VI服务器功能
LabVIEW VI服务器功能
152 1
|
Java C++ Python
【Python】循环语句(while、for)、continue、break
【Python】循环语句(while、for)、continue、break
279 1
|
JavaScript
TypeScript——使用npm安装和编译
TypeScript——使用npm安装和编译
176 0
|
存储 人工智能 物联网
未来已来:区块链技术在物联网与虚拟现实中的应用探索
【9月更文挑战第5天】随着科技的飞速发展,区块链、物联网(IoT)和虚拟现实(VR)等新兴技术正逐渐渗透到我们的生活中。本文将深入探讨这些技术的发展趋势和应用场景,并结合代码示例,展示它们如何相互融合,共同推动社会进步。
|
JavaScript 前端开发
VSCode ESLint规则警告屏蔽方法
举例:要屏蔽“Missing trailing comma”或“comma-dangle”警告,你可以使用ESLint的配置选项来设置规则。下面是一些方法,你可以根据自己的需求选择其中一种(这里只是举例,其他警告处理方法相同) ## 方法1:在代码中添加注释来禁用规则 在你希望屏蔽警告的代码行的上方添加如下注释: ```javascript // eslint-disable-next-line comma-dangle ``` 这将在下一行代码上禁用comma-dangle规则。 ## 方法2:在ESLint配置文件中修改规则 如果你希望在整个项目中禁用该规则,可以在ESLint
300 0
VSCode ESLint规则警告屏蔽方法
|
缓存 Java 数据格式
如何利用缓存机制实现JAVA类反射性能提升30倍
一次性能提高30倍的JAVA类反射性能优化实践
|
JSON 移动开发 JavaScript
uniapp 条件编译的使用
uniapp 条件编译的使用
uniapp 条件编译的使用
|
算法
语音信号的哈夫曼编码压缩解压缩算法matlab仿真,输出编码后数据大小,编码树等指标
语音信号的哈夫曼编码压缩解压缩算法matlab仿真,输出编码后数据大小,编码树等指标
367 0