面试题-未处理的 (下)

简介: 面试题-未处理的

说说浏览器的内核?


浏览器名称                     内核


谷歌浏览器(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

相关文章
|
1月前
|
Java 程序员 测试技术
我有一个朋友写出了17种触发NPE的代码!避免这些坑
我有一个朋友,写代码的时候常常遭到NPE背刺,痛定思痛,总结了NPE出没的17个场景,哪一个你还没有遇到过?
|
8月前
|
Java 编译器 程序员
【JavaSE专栏67】谈谈异常的那些事,学会预判异常、捕获异常、转移异常
【JavaSE专栏67】谈谈异常的那些事,学会预判异常、捕获异常、转移异常
【JavaSE专栏67】谈谈异常的那些事,学会预判异常、捕获异常、转移异常
|
1月前
|
SQL 前端开发 Java
异常详解,一文搞懂!
异常详解,一文搞懂!
38 5
|
8月前
|
Cloud Native Go
如何处理面试拒绝:失败并不是终点
如何处理面试拒绝:失败并不是终点
55 0
|
10月前
I2C误码了怎么处理
I2C误码了怎么处理
|
10月前
|
Java
Java多线程:捕获线程异常
你处理过多线程中的异常吗?如何捕获多线程中发生的异常?捕获子线程的异常与捕获当前线程的异常一样简单吗?
如何处理JDK线程池内线程执行异常?讲得这么通俗,别还搞不懂
本篇 《如何处理 JDK 线程池内线程执行异常》 这篇文章适合哪些小伙伴阅读呢? 适合工作中使用线程池却不知异常的处理流程,以及不知如何正确处理抛出的异常
|
JavaScript 小程序 Java
线程池中线程抛了异常,该如何处理?
线程池中线程抛了异常,该如何处理?
这一篇让你知道怎么处理异常
这一篇让你知道怎么处理异常
这一篇让你知道怎么处理异常
|
Java
关于多线程中抛异常的这个面试题我再说最后一次! (3)
关于多线程中抛异常的这个面试题我再说最后一次! (3)
143 0
关于多线程中抛异常的这个面试题我再说最后一次! (3)