0101面试题——cookie、闭包、BFC、盒模型

353 阅读3分钟

存储

  1. 关于Cookie你知道哪些
  • Cookie由服务器通过响应头的set-cookie字段进行设置
  • 当客户端向服务器发起HTTP请求时,Cookie会自动添加到请求头中
  • 可以通过document.cookie接口,在前端对cookie进行操作
  • 未设置过期时间的cookie为会话cookie,当用户退出浏览器时,会话cookie被删除,反之为持久cookie,存储在硬盘上,直到过期才被删除
  • CORS请求默认不发送Cookie。如果需要,则服务器需指定Access-Control-Allow-Credentials字段为true。AJAX请求中需打开XMLHttpRequest对象的withCredentials属性。并且Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。
  • cookie的组成
    • 名称和值 name = value:必须
    • 域 domin: 可选。表示该cookie对哪个域是有效的。所有向该域发送的请求中都会包含这个cookie。默认为设置该cookie的服务器所在域
    • 路径 path: 可选。表示哪些路径下的文件有权限读取该 cookie。默认是设置Cookie的当前目录
    • 失效时间 expires(新规范中是max-age):可选。
    • 安全标志 secure: 可选。表示cookie只有在使用SSL连接(即使用HTTPS)的时候才发送到服务器
    • http专用 httpOnly: 可选。表示cookie能否通过JS访问
    • 注意:域、路径、失效时间、安全标志、HttpOnly都是服务器给浏览器的指示,这些字段不会作为发送到服务器的Cookie的信息,只有name=value会被发送

JS

  1. 什么是闭包?使用场景?缺点
  • 什么是闭包
    • 在离散数学中一个集合的闭包是,至少拥有该集合的全部元素
    • 在js中,内部的函数的作用域至少是外部的函数的作用域,因此内部函数是外部函数的闭包(自己的理解0.0)
    • 形成闭包的条件:函数嵌套,并且内部函数引用外部函数的变量。
    • 闭包实际上是作用域链上的一个Closure对象,里面保存了内部函数引用的外部函数的变量
  • 闭包的作用
    • 使函数的内部变量(函数)在函数执行完后,仍然存活在内存中,延长了局部变量的生命周期
    • 将变量(函数)定义在闭包中使用,避免污染全局变量
    • 定义JS模块
  • 缺点
    • 函数执行完后,函数内的变量没有释放,占用内存时间会变长,容易造成内存泄露

CSS

  1. 什么是BFC
  • BFC(Block Formatting Context)块级格式化上下文
  • 是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。
  • 触发BFC的条件:
    • 浮动元素,float 除 none 以外的值;
    • 定位元素,position(absolute,fixed);
    • display 为以下其中之一的值 inline-block,table-cell,table-caption;
    • overflow 除了 visible 以外的值(hidden,auto,scroll);
  • BFC的特性:
    • 内部的Box会在垂直方向上一个接一个的放置。
    • 垂直方向上的距离由margin决定
    • bfc的区域不会与float的元素区域重叠。
    • 计算bfc的高度时,浮动元素也参与计算
    • bfc就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。
  1. 什么是盒模型
  • 页面就是由一个个盒模型堆砌起来的,每个HTML元素都按盒模型填充
  • 盒模型包括:外边距margin、边框border、内边距padding、内容content。
  • 盒模型分两种:
    • border-box:IE盒模型,width 和 height 指的是内容区域(content)+border+padding的宽度和高度。
    • content-box:标准盒模型,width 和 height 指的是内容(content)区域的宽度和高度