面经考点01

1、浏览器都包含哪些进程?

1)Browser进程:浏览器的主进程(负责协调、主控),只有一个。作用有:

a、负责浏览器界面显示,与用户交互。如前进,后退等;

b、负责各个页面的管理,创建和销毁其他进程;

c、网络资源的管理,下载等。

2)第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建

3)GPU进程:最多一个,用于3D绘制等

4)浏览器渲染进程(浏览器内核)(Renderer进程,内部是多线程的):默认每个Tab页面一个进程,互不影响。主要作用为页面渲染,脚本执行,事件处理等。

Renderer进程,也就是我们每个标签页所拥有的进程,互不影响,负责页面渲染,脚本执行,事件处理等。

浏览器内核,即我们的渲染进程,有名Renderer进程,内部是多线程的我们页面的渲染,js脚本执行,事件的循环都在这一进程内进行,也就是说,该进程下面拥有着多个线程,靠着这些现成共同完成渲染任务。

a、图形用户界面GUI渲染线程:负责渲染浏览器界面,包括解析HTML、CSS、构建DOM树、Render树、布局与绘制等。当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。

b、JS引擎线程:JS内核,也称JS引擎,负责处理执行javascript脚本。浏览器无论什么时候都只有一个JS引擎在运行JS程序。

c、事件触发线程:会将对应任务添加到事件线程中。当对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。

d、定时触发器线程:setInterval与setTimeout所在线程。定时计时器并不是由JS引擎计时的,因为如果JS引擎是单线程的,如果JS引擎处于堵塞状态,那会影响到计时的准确。当计时完成被触发,事件会被添加到事件队列,等待JS引擎空闲了执行。

e、异步HTTP请求线程:在XMLHttpRequest在连接后新启动的一个线程线程如果检测到请求的状态变更,如果设置有回调函数,该线程会把回调函数添加到事件队列,同理,等待JS引擎空闲了执行

2、Web Worker

JavaScript语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。

Web Worker的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。

Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

主线程采用new命令,调用Worker()构造函数,新建一个 Worker 线程。Worker()构造函数的参数是一个脚本文件,该文件就是 Worker 线程所要执行的任务。由于 Worker 不能读取本地文件,所以这个脚本必须来自网络。如果下载没有成功(比如404错误),Worker 就会默默地失败。

主线程调用worker.postMessage()方法,向 Worker 发消息。参数,就是主线程传给Worker 的数据。它可以是各种数据类型,包括二进制数据

主线程通过worker.onmessage指定监听函数,接收子线程发回来的消息。事件对象的data属性可以获取 Worker 发来的数据。

Worker 完成任务以后,主线程就可以把它关掉。worker.terminate();

Worker 线程

3、JSON.stringify()

JSON.stringify()方法将一个 JavaScript 对象或值转换为 JSON 字符串。

注意:1、非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。

2、布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。

3、undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成null(出现在数组中时)

4、函数、undefined 被单独转换时,会返回 undefined;NaN 和 Infinity 格式的数值及 null 都会被当做 null。

4、es5和es6的区别

1)ES5新增

a、strict严格模式;

b、Array方法:every、some 、forEach、filter 、indexOf、lastIndexOf、isArray、map、reduce、reduceRight方法;

c、Object方法:Object.getPrototypeOf、Object.create、Object.getOwnPropertyNames、Object.defineProperty、Object.getOwnPropertyDescriptor、Object.defineProperties、Object.keys、Object.preventExtensions / Object.isExtensible、Object.seal / Object.isSealed、Object.freeze / Object.isFrozen等。

2)ES6新增

a、块级作用域:let、常量const;

b、赋值解构;

c、函数参数:默认值、参数打包、 数组展开(Default 、Rest 、Spread);

d、箭头函数;

e、Iterators(迭代器)+ for..of;

f、Class:constructor、extends、super;

g、Map + Set + WeakMap + WeakSet

H、Symbols | Promise等。

5、不使用第三个变量得情况下交换两个变量得值

第一种:a=a+b;b=a-b;a=a-b;

第二种:a=a^b;b=a^b;a=a^b;

6、HTML引入js的方式

内部引入:需要一个标签<script></script>。

外部引入:创建一个独立的外部 js 文件,  用 <script></> 标签引入. 使用他的src 属性引用对应的Js文件。

7、ES6的 Class 类

在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。class 的本质是 function。

注意要点:a、不可重复声明。

b、类定义不会被提升,必须在访问前对类进行定义,否则就会报错。

c、类中方法不需要 function 关键字。

d、方法间不能加分号。

1)类的主体

a、属性:静态属性(static 关键字定义);

公共属性(在类的原型prototype上定义的);

name属性(返回跟在class后的类名(存在时))。

b、方法:constructor 方法是类的默认方法,创建类的实例化对象时被调用。

静态方法(static 关键字定义);

原型方法。

8、衬线字体和非衬线字体区别

衬线字体:文字边缘有修饰的字体;在字的笔画开始、结束的地方有额外的装饰,而且笔画的粗细会有所不同。适用于传统的印刷体,易读性高。

非衬线字体:文字边缘没有修饰的字体,笔画的粗细差不多。适合于标题海报等需要醒目的地方。

font-family属性设置时,为了匹配不同环境下的字体,可以书写多个值。其中,为了使得页面在用户电脑上没有任何其他字体安装的情况下也显示得较为好看,可以加上sans-serif,表示由计算机自动选择默认的非衬线字体进行渲染(计算机操作系统都分别会有一种默认的衬线字体和非衬线字体)

9、Javascript组成

JavaScript的实现包括以下3个部分:

1)ECMAScript(核心):描述了JS的语法和基本对象。

2)文档对象模型 (DOM):处理网页内容的方法和接口

3)浏览器对象模型(BOM):与浏览器交互的方法和接口

10、JavaScript和java c c++的区别

Java强类型的语言;JavaScript弱类型的语言。

Java、C、C++是编译型语言,需要编译器编译成本地可执行程序后才能运行;JavaScript解释性语言,像,开发语言写好后直接将代码交给用户,用户使用脚本解释器将脚本文件解释执行。


11、在js中0.1+0.2===0.3吗?如果不相等如何解决?

在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.30000000000000004 ,所以条件判断结果为false。

那么应该怎样来解决0.1+0.2等于0.3呢? 最好的方法是设置一个误差范围值,通常称为”机器精度“。而对于Javascript来说,这个值通常是2^-52,而在ES6中,已经为我们提供了这样一个属性:Number.EPSILON,而这个值正等于2^-52。这个值非常非常小,在底层计算机已经帮我们运算好,并且无限接近0,但不等于0

这个时候我们只要判断(0.1+0.2)-0.3小于Number.EPSILON,在这个误差的范围内就可以判定0.1+0.2===0.3为true。

我们还要考虑解决IE的不兼容问题。我们需要对于Number.EPSILON进行一个改写。

12、Javascript异步编程的4种方法

回调函数、事件监听、发布/订阅、Promises对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容