2016/9/21 前端笔试题笔记


  1. js实现语言继承的核心是 prototype
    subTyoe.prototype = new superType();
    通过创建一个superType实例来实现继承
  2. javascript 解析引擎在读取一个Object的属性的值时会沿着原型链向上找,如果没有找到,则该属性值为undefined
  3. 什么属性会让div脱离文档流?
  4. float float是半脱离 还可以有文字环绕效果
  5. absolute fix 完全脱离文档流 文字会跑到元素下面去
  6. 二叉排序树
  7. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值
  8. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
  9. 它的左、右子树也分别为二叉排序树。
    就像这样
    2016/9/21 前端笔试题笔记_第1张图片

    求二叉排序树的平均查找长度
  10. 先构造二叉查找树
  11. (每层的个数x层数)/ 总个数
  12. HTML form 的enctype属性

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。
默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)

enctype的属性值有三个
application/x-www-form-urlencoded : 在发送前编码所有字符(默认)
multipart/form-data : 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain : 空格转换为 "+" 加号,但不对特殊字符编码。

  1. 伙伴地址
    哈哈哈 一脸蒙蔽
    原来是Linux内存管理的一种方式
    原理不讲 讲点吧
    就是一种算法吧内存分成11个量级的链表
    分别是1,2,4,8,16,32,64,128,256,512,1024.
    就为了方便申请合适大的内存
    如果出现小的页面满了 就会找大的页面 比如我要找一个256的页面,满了就会找512,如果找到就会拿出256来用,剩下的256就会插入到256的链表中。
    下面将计算伙伴地址

    满足以下条件的两个块称为伙伴:
    两个快具有相同的大小,记作 b
    它们的物理地址是连续的
    第一块的第一个页框的物理地址是 2 * b * 2^12 的倍数

    举个具体题目的例子
    二进制地址为011011110000,大小为4(10进制数)和16(10进制数)块的伙伴地址分别为:
    怎么算呢
    我们先看大小为4的
    用这个地址除以24 我们知道2进制除以8就是减三个0
    发现可以整除
    那这个就是第一个框的地址 它的伙伴地址就是它+4
    就是011011110100
    然后再看大小是16的
    用这个地址除以2
    16 32是减5个0 发现不能整除 所以说他的伙伴地址是前面那一块的首地址
    就应该是-16 得011011100000 这个数明显就可以被32整除
    就这么简单。

  2. cookies的各种属性
    我们都知道cookies就是浏览器用来维持会话的一种方法,一段纯文本。
    那么cookies都有哪些属性呢

    1. expries cookie的过期时间
    2. domain 关联的域名 如果domain的域名和请求的不一致那就会被忽略
    3. path path的值会与url中的值进行比对 假如path = /blog 如果你url中有/blog 或者/blogxxxxx 都会触发cookie的发送
    4. secure 没有值只是一个标记 如果有这个标记那么只有一个请求通过SSL或HTTPS创建cookie才能被发到服务器
    5. HttpOnly 如果有这个标记那么客户端JS就无法用document.cookie来获取cookie
  3. Linux 查看进程号
    ps命令
    ps -ef |grep 进程名

  4. 正则表达式的元字符(常用的)

  • \d 匹配一个数字 等价于 [0-9]
  • \D 匹配一个非数字 等价于 [^0-9]
  • \s 匹配一个空白字符 等价于 [ \f\n\r\t\v]
  • \w 匹配包括下划线的任何单词字符 等价于[A-Za-z0-9_]
  • 大写就是非小写匹配的字符
  1. 浏览器内多标签页如何进行通信
  2. 使用localStorage
    先来介绍下localStorage这个东西
    因为cookie不适合大量数据的存储,所以有了localStorage
    对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据
    我们可以通过window.localStorage 来获得localStorage
    通过setItem() getItem() removeItem()来修改数据
    可以通过监听storage事件来监测localStorage数据的变化
    window.addEventListener("storage",handle_storage)
  3. 使用cookie
    一个浏览器的所有标签页都是可以共享持久cookie的,但是只有同源的标签页可以共享
  4. window.postMessage()
    有两个参数
    data : 要传递的数据 可以是js的任何类型或者可复制的对象
    orign : 目标窗口的源
    接受postMessage()的消息。
    监听message事件
  5. 使用window.name
    window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的。

你可能感兴趣的:(2016/9/21 前端笔试题笔记)