说说浏览器的内核?
浏览器名称 内核
谷歌浏览器(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