面试题目
来源:互联网 发布:网络玄幻小说典藏版 编辑:程序博客网 时间:2024/05/29 15:31
1.原型链继承
子类的原型属性可以继承父类实例,访问父类实例的属性和方法
function SuperType() { this.property = true;}SuperType.prototype.getSuperValue = function() { return this.property;};function SubType() { this.subproperty = false;}//继承了SuperTypeSubType.prototype = new SuperType();SubType.prototype.getSubValue = function() { return this.subproperty;};var instance = new SubType();alert(instance.getSubValue()); //true
2.事件流
利用冒泡的原理,指定一个事件处理程序,可以管理一类型的所有事件,绑定到父元素
移除事件绑定
在冒泡型事件流中click事件传播顺序为
<div>—》<body>—》<html>—》document
在捕获型事件流中click事件传播顺序为
document—》<html>—》<body>—》<div>
DOM标准采用捕获+冒泡
DOM标准规定事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。
事件捕获阶段:实际目标<div>
在捕获阶段不会接收事件。也就是在捕获阶段,事件从document到<html>
再到<body>
就停止了
处于目标阶段:事件在<div>
上发生并处理。但是事件处理会被看成是冒泡阶段的一部分。
冒泡阶段:事件又传播回文档。
3.内核
4.模块
5.SEO
HTML
- 封闭标签
<></>
- 去除多余的空格
<a>
标签添加title属性<img>
标签添加alt和title属性- 使用语义化的标签
- 行内元素里面不能写块级元素
- meta标签的合理使用
- 注释
CSS
- 合理使用行内样式
- 若css样式很多,则进行外部引用
- 尽量减少使用*
- 注意缩写
border、margin、padding
- 利用css的继承,减少代码量
- 合理使用class
- 合并图片
- 合理注释
JS:
(解释性脚本语言,相对安全,基于对象,事件驱动,若类型,跨平台)
1. 外部引用
2. 合并js
3. 习惯减少重绘,减少作用域
优点:
1. 减少http传输,
2. 方便处理HTML
3. 支持分布式运算
缺点:
各个浏览器的支持性不同,web安全性
web性能优化
- 减少HTTP请求(合并css、js、使用css sprites合并背景图片)
- 设置浏览器缓存,根据响应的header(每次重载、无提示、LastExag 304、强制设置缓存)
- 使用压缩组件,GZIP
- image和js的预载入,在登录页面载入
- 将脚本语言放在底部,css样式放在顶部
- 使用外部js、css
- 切分组件到多个域
- 减少css、flash、image
DOM优化
- 批量增加,最小化现场更新
- 使用innerHTML
- 使用事件代理
- HTML Collection
6.数据类型
7.call(),apply(),bind()
在特定的作用域中调用函数(在{父函数}中调用{(apply和call前面的)函数})apply()——逐个列举,参数数组;扩展作用域`func1.apply(o)//把func1绑定到o`call()——可以是Array实例,可以是arguments;扩展作用域`func2.call(o)//把func2绑定到o`bind()——funcend = func.bind(o);o绑定到funcend,funcend的this为o
8.JSON和XML
json——轻量级、独立,自我描述,易读,宽带小XML——标记语言,类HTML,纯文本,格式标准严格优势,与其他系统远程交互,文件庞大,结构复杂,
9.数据结构
逻辑结构
集合——
线性——一维数组、队列、栈
非线性——数、图、多维数组
存储结构
顺序、链式、索引、散列
10.浏览器加载渲染网页过程解析
web浏览器与web服务器之间通过HTTP协议进行通信的过程(域名解析 -> 建立连接 -> 发起请求 -> 等待响应 -> 接收数据)
- 从浏览器地址栏的请求链接开始(在地址栏输入网址)
- 浏览器通过DNS解析查到域名映射的IP地址,成功后浏览器端向此IP地址取得链接
- 链接成功后,浏览器将请求头信息通过HTTP协议向IP所在的服务器发起请求
- 服务器接收到请求后等待处理,向浏览器端发回响应
- 浏览器从服务器端接收text/html类型的代码,浏览器开始显示此html(获得内嵌资源地址,浏览器发起请求获得这些资源)
数据包在网络中漫游的经历
各层之间是严格单向依赖的,下层是服务提供者,上层是请求服务的用户
11.跨域
JSONP(只支持GET请求)
<script>
标签是不受同源策略的限制的,它可以载入任意地方的 JavaScript 文件,而并不要求同源。
理念:和服务端约定好一个函数名,当我请求文件的时候,服务端返回一段 JavaScript。这段 JavaScript 调用了我们约定好的函数,并且将数据当做参数传入。JSON 的数据格式和 JavaScript 语言里对象的格式正好相同,所以在我们约定的函数里面可以直接使用这个对象。
代码
//index.html<script> function getWeather(data) { console.log(data); }</script><script src="http://x.y.com/xx.js">//http://x.y.com/xx.js 文件内容getWeather({ "城市": "北京", "天气": "大雾"});function handleResponse(response){ alert("you're at IP address"+response.ip+", which is in "+response.city+", "+response.region_name);}var script=document.createElement("script");script.src="http://freegeoip.net/json/?callback=handleResponse";document.body.insertBefore(script,document.body.firstChild);
图像&图像Ping
1.<img>//标签2.动态创建图像Pingvar img = new Image();img.onload = img.onerror = function(){ alert("Done!");}img.src = "http://www.example.com/test?name=Anan";
Comet(服务器推送)[近乎实时]
1.长轮询//页面发送一个请求到服务器,服务器保持打开,直到有数据可发送,发送完毕后关闭连接;随机又发送到服务器//使用XHR和setTimeout()实现2.HTTP流//浏览器向服务器发送一个请求,服务器保持连接打开,周期性的向浏览器发送数据<?php $i=0 while(true){ echo "Number is $i"; flush(); //等待几秒 $i++; }>
XDR (CORS跨域资源共享)
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
1.简单请求(simple request)
1) 请求方法是以下三种方法——HEAD、GET、POST
2) HTTP的头信息不超出——Accept、Accept-Language、Content-Language、Last-Event-ID、
3) Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
处理手段:
Access-Control-Allow-Origin: http://api.bob.com; Access-Control-Allow-Credentials: true; Access-Control-Expose-Headers: FooBar
;不在许可范围:这个回应的头信息没有包含Access-Control-Allow-Origin字段,从而抛出一个错误,被XMLHttpRequest的onerror回调函数捕获。 Access-Control-Allow-Origin(必须) 值为Origin字段的值,或者*——表示接受任意域名的请求。不能设为星号,必须指定明确的、与请求网页一致的域名。同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。 Access-Control-Allow-Credentials(可选) 表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可 Access-Control-Expose-Headers(可选) CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。上面的例子指定,getResponseHeader(‘FooBar’)可以返回FooBar字段的值。 withCredentials CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。Access-Control-Allow-Credentials: true另一方面,开发者必须在AJAX请求中打开withCredentials属性。var xhr = new XMLHttpRequest();xhr.withCredentials = true;
[HTML5] postMessage
window 对象增加了一个非常有用的方法
windowObj.postMessage(message, targetOrigin);//windowObj: 接受消息的 Window 对象。//message: 在最新的浏览器中可以是对象。//targetOrigin: 目标的源,* 表示任意。var windowObj = window; // 可以是其他的 Window 对象的引用var data = null;addEventListener('message', function(e){ if(e.origin == 'http://anfang.github.io/anan') { data = e.data; e.source.postMessage('Got it!', '*'); }});//message 事件就是用来接收 postMessage 发送过来的请求的。函数参数的属性有以下几个://origin: 发送消息的 window 的源。//data: 数据。//source: 发送消息的 Window 对象。
document.domain
使用条件:
有其他页面 window 对象的引用。
二级域名相同。
协议相同。
端口相同。
注:1——x.one.example.com 和 y.one.example.com 可以将 document.domain 设置为 one.example.com,也可以设置为 example.com。
2——document.domain 只能设置为当前域名的一个后缀,并且包括二级域名或以上(.edu.cn 这种整个算顶级域名)。
window.name
随意打开一个页面,输入以下代码: window.name = "My window's name"; location.href = "http://www.qq.com/";
再检测 window.name :window.name; // My window's name
12.Ajax(中间层,异步)[XMLHttpRequest对象XHR]
优点:无刷新更新data,异步前后平衡,与界面分离
缺点:无back,history,存在安全性问题,对搜索引擎支持较弱,破坏程序,违背URL和资源定位,移动端的支持性
function createXHR(){ if(type of XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); }else if(type of ActiveXObject != "undefined"){ if(type of arguments.callee.activeXString != "String"){ var versions = ["MSXML2.XMLHttp","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp.6"],i,len; for(i=0,len= versions.length;i<len;i++){ try{ new ActiveObject(versions[i]); arguments.callee.activeXSting = versions[i]; break; }catch(ex){ //跳过 } } } return new ActiveObject(arguments.callee.activeXSting); }else { throw new Error("No XHR object avaliable.") }}var xhr = createXHR();xhr.onreadystatechange = function(){ if(xhr.readyStatus == 4){ if((xhr.status>=200&&xhr.status<300)||xhr.status==304){ alert(xhr.responseText); }else{ alert("Request was unsuccessful: "+xhr.status); } }}xhr.open("get","aaa.txt",false);//同步或异步请求xhr.send(null);
13.HTTP状态码
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- SUDT 3926 bLue的二叉树 [KMP or hash]【思维】
- 简单的在线留言系统
- leetcode-java.T012_IntegerToRoman 数字转罗马数字
- HackerRank
- 箭头函数写法在ReactJs中的使用
- 面试题目
- 133. Clone Graph
- RAC 中的双向数据绑定 RACChannel
- leetcode-java.T011_ContainerWithMostWater 找两条竖线然后这两条线以及X轴构成的容器能容纳最多的水
- Android快速实现热更新
- 数学符号
- leetcode-java.T009_PalindromeNumber 回文数字
- Python 父子类继承笔记
- leetcode-java.T008_StringToInteger 字符串转成整形