KonishiLee's Blog

整理

1.JS 垃圾回收机制

1.标记清除
是对于脱离执行环境的变量进行回收。当进入执行环境时,进行标记,离开执行环境时,标记并回收这些变量。
第一个可以回收循环引用的垃圾回收机制。

2.引用记数
是记录每个变量的被引用情况,每当过一段时间开始垃圾回收的时候,就把被引用数为0的变量回收。这个问题可能导致循环引用,类似死锁。这样变量就永不会被销毁。

我们知道,IE中有一部分对象并不是原生 JavaScript 对象。例如,其 BOM 和 DOM 中的对象就是使用 C++ 以 COM(Component Object
Model,组件对象)对象的形式实现的,而 COM 对象的垃圾回收器就是采用的引用计数的策略。因此,即使 IE 的 Javascript 引擎使用标记清除的策略来实现的,但 JavaScript 访问的 COM 对象依然是基于引用计数的策略的。说白了,只要 IE 中涉及 COM 对象,就会存在循环引用的问题

2.作用域链

正是内部上下文所有变量对象(包括父变量对象)的列表。

3.原型链

构造函数、原型和实例的关系

  • ①构造函数都有一个属性prototype,这个属性是一个对象(Object的实例)
  • ②原型对象prototype里面有一个constructor属性,该属性指向原型对象所属的构造函数
  • ③实例对象都有一个proto属性,该属性也指向构造函数的原型对象,它是一个非标准属性,不可以用于编程,它是用于浏览器自己使用的

prototype与proto的关系

  • ①prototype是构造函数的属性
  • proto是实例对象的属性

这两者都指向同一个对象

4.闭包

  • 1.匿名执行函数
  • 2.缓存
  • 3.实现封装
  • 4.面向对象中的对象

5.导入样式

link/@import

XHTML,还可以定义 RSS,rel 的链接属性
页面加载的时候就会被加载,没有兼容性问题。

只能用于加载 CSS,页面加载之后再加载,有兼容性问题。

6.JS 基本对象,内置对象,

本地对象:Undefined、Null、Boolean、Number、String
内置对象:Object、Array、Boolean、Number 和 String,Function、Arguments、Math、Date、RegExp、Error
宿主对象:Dom,Bom

7.Socket

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。一个Socket由一个IP地址和一个端口号唯一确定。

8.浏览器与内核

Trident:IE、Maxthon、TT、The World 等
Gecko:Netcape6 及以上版本、FireFox、MozillaSuite/SeaMonkey
Presto:Opera7 及以上版本
Webkit:Safari、Chrome、Opera Next、360极速浏览器

9.一个页面从输入 URL 到页面加载完成

  • 查找浏览器缓存
  • DNS 解析、查找该域名对应的IP地址、重定向(301)、发出第二个GET请求
  • 进行 HTTP 协议会话
  • 客户端发送报头(请求报头)
  • 服务器回馈报头(响应报头)
  • html 文档开始下载
  • 文档树建立,根据标记请求所需指定 MIME 类型的文件
  • 文件显示

10.图片的类型

BMP 占用磁盘空间大
GIT 动图,体积小,不能存储超过 256 色的图像
JPEG .jpg/.jpeg,压缩质量很棒
JPEG 2000 无损压缩,扫描仪,数码相机
TIFF Mac 下的图片格式
PSD Photoshop 的文件格式
PNG 透明,不支持动图
SWF Flash 的动图格式
SVG XML 的矢量图格式

11.GET 和 POST 的区别

GET:一般用于信息获取,使用 URL 传递参数,对所发送信息的数量也有限制,一般在 2000 个字符
POST:一般用于修改服务器上的资源,对所发送的信息没有限制。
GET 方式需要使用 Request.QueryString 来取得变量的值,而 POST 方式通过 Request.Form 来获取变量的值,
也就是说 GET 是通过地址栏来传值,而Post是通过提交表单来传值。

然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

12.浏览器内核的理解

主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和 JS 引擎。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS 引擎则:解析和执行 javascript 来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

13.常用的错误码

100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

14.Display 属性详解

none 隐藏,无样式
block 块状独占一行
inline 内嵌的形式排列成行
inline-block 以块状的形式排列成行
list-item 独占一行,类似 li
table 独占一行
inline-table 非独占一行
table-caption 类似表格的 caption,竖着排列,独占一行
table-cell 类似表格的 td
table-row 类似表格的 tr
table-column 表格的列
table-header-group
table-row-group
table-column-group
table-footer-group

15.对 WEB 标准,以及对 W3C 的理解

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链 css 和 js 脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性

结构层 HTML,表现层 CSS,行为层 JS

16.XHTML 和 HTML 有什么区别

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

最主要的不同:
XHTML 元素必须被正确地嵌套。
XHTML 元素必须被关闭。
标签名必须用小写字母。
XHTML 文档必须拥有根元素。

17.事件绑定和普通事件有什么区别

事件绑定:不受影响
普通:函数声明会被替换

18.创建一个 Ajax 的执行过程

Asynchronous Javascript And XML

  • 创建 XMLHttpRequest 对象,也就是创建一个异步调用对象.
  • 创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信息.
  • 设置响应 HTTP 请求状态变化的函数.
  • 发送 HTTP 请求.
  • 获取异步调用返回的数据.
  • 使用 JavaScript 和 DOM 实现局部刷新.

19.对模块化的了解

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出 提前执行

define([‘jquery’, …], function(){

})

CMD 是 SeaJS 在推广过程中对模块定义的规范化产出 延迟执行

define(function(require, exports, module){
var $ = require(‘jquery’);

})

20.谈谈怎样做优化

代码层面:避免使用 css 表达式,避免使用高级选择器,通配选择器。

缓存利用:缓存 Ajax,使用 CDN,使用外部 js 和 css 文件以便缓存,添加 Expires 头,服务端配置 Etag,减少 DNS 查找等

请求数量:合并样式和脚本,使用 css sprites,初始首屏之外的图片资源按需加载,静态资源延迟加载。

请求带宽:压缩文件,开启 GZIP

BFC 的理解

float 不是 none
position 不是 relative, static
display 包含 table-cell, table-caption, inline-block, flex, inline-flex
overlow 不是 visible

BFC,块级格式化上下文,一个创建了新的 BFC 的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。

px,em,rem 的区别

1em = 12px
em 父级比例
rem(root em)

TCP/IP 协议

中文解释是传输控制协议/因特网互联协议,又名网络通讯协议,是 Internet 最基本的协议、Internet 国际互联网络的基础,由网络层的 IP 协议和传输层的 TCP 协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP 负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而 IP 是给因特网的每一台联网设备规定一个地址。

如果喜欢这个分享,就帮忙买杯咖啡吧