前端面试

一、web标准不是某一个标准,而是一系列标准的集合
  网页主要由三部分组成:
  (1)、结构(Structure)结构化标准语言主要包括XHTML和XML
  (2)、表现(Presentation)表现标准语言主要包括CSS
  (3)、行为(Behavior)行为标准主要包括对象模型
二、浏览器标准模式和怪异模式之间的区别是什么?
  盒子模型,渲染模式的不一样
三、<img>标签上title 与alt属性的区别是什么?
  alt当图片不显示是用文字表明
  title为该属性提供信息
四、前端页面有哪三层构成,分别是什么?做用是什么?
  结构层html、表示层css、行为层js
五、你如何对网站的文件和资源进行优化?
  文件合并
  文件最小化/文件压缩
  使用CDN托管
  缓存的使用
六、什么事语义化的html?
  直观的认识标签,对于搜索引擎的抓取有好处
七、超级连接有哪些常见的表现形式?
  <a>元素用于建立超级连接,常见的表现形式有:
  (1)、普通超级连接,语法为:<a href="" target="">文本</a>
  (2)、下载连接,即目标文档伟下载资源,语法如:<a href="DAY02.ZIP">下载</a>
  (3)、电子邮件连接,用于连接到email,语法如:<a href="361770128@qq.com">联系咱们</a>
  (4)、空连接,用于返回页面顶部,语法如:<a href="#">..</a>
  (5)、连接到JavaScript,以实现特定的代码功能,语法如:<a href="javascript:;">js功能</a>
八、列举经常使用的结构标记,并描述其做用?
  结构标记专门用于标示页面的不一样结构,相对于使用<div>元素而言,能够实现语义化标签
  <header>元素:用于定义文档的页眉
  <nav>元素:用于定义页面的导航连接部分
  <section>元素:用于定义文档中的节,表示文档中的一个具体组成部分
  <article>元素:经常使用语定义独立于文档的其它部分的内容
  <footer>元素:经常使用于定义某区域的脚注信息
  <aside>元素:经常使用于定义页面的一些额外组成部分,如广告栏、侧边栏和相关引用信息等
九、使用<label>元素显示文本与使用其余文本标记显示文本有什么不一样?
  <label>元素的直观效果是直接显示标记之间的文本,并且不会为文本呈现任何特殊效果。可是,它和其余文本标记不一样的是,它为鼠标用户改进了用户体验性
  这是由于,<label>元素能够附带一个for属性,只要将该属性的值设置为表单中任何一个控件id属性的值,则当用户点击该标签(文本)时,浏览其就会自动将焦点转到标签相关的表单控件上。
十、锚点的做用是什么?如何建立锚点?
  锚点是文档中某行的一个记号,相似于书签,用于连接到文档中的某个位置。当定义了锚点后,咱们能够建立直接跳至该锚点(好比页面中某个小节)的连接,这样使用者就无需不停地滚动页面寻找他们须要的信息了
  <a name="anchorname1">锚点一</a>
  <a href="#abchorname1">回到锚点一</a>
十一、你作的页面在哪些浏览器测试过?这些浏览器的内核分别是什么?
常见的浏览器内核有:
Trident: IE浏览器
Gecko: Mozilla浏览器, 好比 Firefox
Webkit: Safari浏览器, 也是Chrome浏览器的内核原型
Blink: Chrome浏览器, Opera浏览器
十二、写出几种IE6 BUG的解决方法
(1)、双边距bug float引发的,使用display
(2)、像素问题,使用float引发的,使用display: inline -3px;
(3)、超连接hover点击后失效,使用正确的书写顺序 link visited hover active
(4)、IE z-index问题,给父级添加position: relative
(5)、png透明使用js代码改
(6)、min-height 最小高度,!importang解决
(7)、select 在ie6下遮盖 使用iframe嵌套
(8)、为何没有办法定义1px左右的宽度容器(ie6默认的行高形成的,使用over: hidden,zoom:0.08,line-height:1px)
1三、标签title与alt属性的区别是什么?
alt当图片不显示是用文字表明
title为该属性提供信息
1四、Doctype做用?严格模式与混杂模式如何区分?它们有何意义?
(1)<!DOCTYPE>声明位于文档中的最前面,处于<html>标签以前。告知浏览器的解析器
(2)严格模式的排版和js运做模式是以该浏览器支持最高标准运行
(3)在混杂模式中,页面以宽松的向后兼容的方式显示。
(4)doctype不存在或格式不正确会致使文档混杂模式呈现
1五、行内元素有哪些?块级元素有哪些?空(void)元素有哪些?
行内元素: a span img input select strong
块级元素:div ul ol li dl dt dd h1 h2 p
知名的空元素:<br> <hr> <img> <input> <link> <meta>
不为人知的是:<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
1六、link 和 @import 的区别是?
(1)link属于xhtml标签,而@import是css提供的;
(2)页面被加载的时,link会同时被加载,而@import引用的css会等到页面被加载完再加载
(3)import值在ie5以上才能识别,而link是xhtml标签,无兼容问题;
(4)link方式的样式的权重,高于@import的权重
1七、常见兼容性问题?
(1)png24位的图片在ie6浏览器上出现背景,解决方案是作成png8
(2)浏览器默认的margin和padding不一样。
(3)ie6双边距bug:块级属性标签float后,又有横行的margin状况下,在ie6显示margin比设置的大
(4)ie下,是使用获取常规属性的方法获取自定义属性,
也可使用getAttribute()获取自定义属性;
firefox下,只能使用getAttribute()获取自定义属性
解决方法:统一经过getAttribute()获取自定义属性
ie下,even对象有x,y属性,可是没有pageX,pageY属性;
firefox下,event对象pageX,pageY属性,可是没有x,y属性
1八、xthml和html有什么区别
xthml是一种基本的web网页设计语言,xthml是一个基于xml的置标语言
最主要的不一样:
xhtml元素必须被正确的嵌套
xhtml元素必须被关闭
标签名必须用小写字母
xhtml文档必须拥有根元素
1九、html有哪些新特性、移除了那些元素?如何处理html5新标签的浏览器兼容问题?如何区别html和html5?
html5如今已经不是sgml的子集,主要是关于图像,位置,存储,多任务等功能的增长
绘画canvas
用于媒介回放video和audio元素
本地离线储存localStrorage长期存储数据,浏览器关闭后数据不丢失;
sessionStorage的数据在浏览器关闭后自动删除
语意化更好的内容元素,好比article、footer、header、nav、section
表单控件,calendar、date、time、email、url、search
新的技术webworker、websockt、geoloction
纯表现的元素:basefont、big、center、font、s、strike、tt、u
对可用性负面影响的元素:frame、frameset、noframes
20、如何在html5页面中嵌入音频
<audio controls ="controls">
<source src=".." type="audio/mpeg">audio
</audio>
2一、除了音频和视频,html5还支持其余什么新的媒体元素
<embed>做为对外部应对容器
<track>为媒介规定外部文本轨道
<source>
2二、cookies、localStorage 、sessionStorage的存储有什么不一样?
html5可以本地存储数据,在以前都是用cookies使用的。
localStorage用于持久化的本地存储,数据永远不会过时,关闭浏览器也不回丢失
sessionStorage同一个会话中的页面才能访问而且当会话结束后数据也随后之销毁。所以sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储
cookie在浏览器和服务器间来回传递,后二者不会
localStorage 、sessionStorage的存储空间更大
localStorage 、sessionStorage有更多丰富易用的接口
localStorage 、sessionStorage各自独立的存储空间
2三、html5引入什么形的表单属性
Datalist:
<input list="cars">
<datalist id="car">
<option value="aaaa">
<option value="bbbb">
<option value="cccc">
</datalist>
Datatime: <p>我在<time datetime="2008-02-14">情人节</time>有个约会</p>
Output:
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100+<input type="number" id="b" value="50">
=<output name="x" for="a b"></output>
</form>
Keygen:
Date
Month
Week
Time
Number
Range
Email
Url
2四、html5标准提供了哪些新的api
media api
history api
2五、什么事html5?
html5是最新的html标准,它主要目标是提供全部内容而不须要任何额外插件
2六、没有<!DOCTYPE HTML>,HTML5还会工做吗?
不会,浏览器不能识别他的html文档
2七、html5的页面结构
<header>表明html的头部数据
<nav>页面导航元素
<article>自包含的内容
<aside>表明页面的侧边栏内容
<footer>表明页面的脚部区域
2八、html中心的表单元素是什么?
<input type="color"/>
<input type="data"/>
<input type=""datetime-local/>
<input type="email"/>
<input type="url">
<input type="number" min="1" max="5">
<input type="range" min="1" max"5" step="2" value="3"/>
<input type="search"/>
<input type="time"/>
<input type="tel"/>
2九、svg是什么?
svg表示可缩放矢量图形
30、html5中canvas是什么?
canvas元素用于网页上绘制图形,该元素标签强大之处在于能够直接在html上进行图形操做
3一、iframe有哪些缺点?
iframe会阻塞主页 的onload事件
iframe和主页面共享连接池,而浏览器对同与的连接有限制,因此会影响页面的并行加载
使用iframe以前须要考虑这两个缺点。若是须要使用iframe,最好经过javascript
动态给iframe添加src属性值,这样能够绕开以上两个问题
3二、如何实现浏览器内多个标签页之间的通讯?
调用localstroge、cookies等本地存储方式
3三、webSocket如何兼容低浏览器?
adobe flash socket、activex htmlfile(ie)、基于multipart编码发送xhr、基于长轮询的xhr
3四、为何html5里面咱们不须要dtd(document type definition 文档类型定义)?
在html4.01中,<!doctype>声明引用dtd,由于html4.01基于sgml.
dtd规定了标记语言的规则,这样浏览器才能正确地呈现内容
html5不基于sgml,因此不须要引用dtd,所以没有声明dtd
3五、canvas和svg图形之间的区别是什么?
canvas :依赖分辨率、不支持事件处理器、弱的文本渲染能力可以以.png或.jpg格式保存结果图像
最适合图像密集型的游戏,其中的许多对象会被频繁重绘
svg:不依赖分辨率、支持事件处理器、最合适带有大型渲染区域的应用程序、复杂度高会减慢渲染速度、不适合游戏应用
3六、table-layout: 设置表格是否自动调整宽高
border-collapse: 表格与单元格及单元格间的边框是否融合在一块儿
3七、css选择符有哪些?哪些属性能够继承?优先级算法若是计算?css3新增伪类有哪些?
(1)id选择器(#id)
(2)类选择器(.class)
(3)标签选择器(div,h1,p)
(4)相邻选择器(h1+p)
(5)子选择器(ul>li)
(6)后代选择器(li a)
(7)通配符选择器(*)
(8)属性选择器(a[rel="external"])
(9)伪类选择器(a: hover, li:nth-child)
可继承样式:font-size font-family color,ul li dl dd dt
不可继承的样式:border padding margin width heigth
优先级就近原则,同权重状况下样式定义最近者为准;
载入样式以最后载入样式为准
优先级:
!important>id>class>tag
important比内联优先级高
3八、css3新增伪类举例
p:first-of-type 选择属于其中父元素的首个<p>元素的每一个<p>元素
p:last-of-type选择属于父元素的最后<p>元素的每一个<p>元素
p:only-of-type 选择属于父元素惟一的<p>元素的每一个<p>元素
p:only-child 选择属于其父元素的惟一子元素的每一个<p>元素
p:nth-child(2) 选择属于其父元素的第二个字元素的每一个<p>元素
3九、居中一个浮动元素
容器的width: 500px; height: 300px;
.div{
width: 500px;
height: 300px;
margin: -150px 0 0 -250px;
position: relative;
 
left: 50%;
top: 50%;
}
40、css有哪些新特性
圆角:border-radius: 50%;
阴影:box-shadow: 10px;
对文字加特效: text-shadow
线性渐变:gradient;
旋转: transform
缩放:scale(0.85,0.9)
定位:translate(0px, -30px)
倾斜: skew(-9defg,0deg)
4一、举例几个javascript中经常使用的全局函数,并描述其做用
(1)parseInt: 解析一个字符串并返回一个整数
(2)parseFloat: 解析一个字符串并返回一个浮点数
(3)isNaN:检查某个子是不是数字,返回true或者false
(4)encodeURI:把字符串座位URI进行解码
(5)decodeURI:对encodeURI()函数编码过的URI进行解码
(6)eval:计算某个字符串,以获得结果,或者用于执行其中javascript代码
4二、为string添加trim()方法
striing.prototype.trim = function(){
return this.replace(/^ +|+$/g,"");
}
4三、谈谈javascript数组方法sort()的使用,重点介绍sort()参数的使用及其内部机制
调用默认排序: [].sort();
4四、什么是ajax?
客户端向服务端发送请求,而无需刷新页面的技术
4五、你的项目中有使用到跨域吗?你在项目中是如何处理js跨域问题的?
一个网站,主要是使用其余网站提供的javascript API如qq,使用script的src能够直接读取跨域资源
固然跨域还有其它处理方式:如代理服务器、改变domain、jsonp等
4六、ajax中遇到乱码吗?若是遇到,你是如何解决的?
遇到过,通常我首先统一页面和服务器编码,对请求和响应的content-type设置正确编码;对请求参数进行编码处理
4七、你是用过jquery吗?若是有,你为何要使用jquery呢?
原生的js开发会遇到不少兼容问题,ajax数据解析、dom、事件注册操做等很是繁琐,而jquery正好解决了这些问题。它的扩展性比较强,并且有众多的插件可用:jqueryUI、jquery-cookie、jquery-timer
4八、array的join、push、splice、slice各有何用途,splice与slice有何异同?
join方法:
var arr = ["1","2","3"];
console.log(arr.join(".")) //1.2.3
push方法:
arr.push("5"); console.log(arr) //["1","2","3","5"]
splice方法:arr.splice(2,1,'45') console.log(arr); //["1","2","45","5"]
slice方法:console.log(arr.slice(1)); //["2","45","5"]
splice和slice都是截取一部分元素,不一样的在于:slice返回截取后的新实列
4九、dom操做中,如何获取元素的属性值?
(1)element.attributes[下标].value
(2)element.attributes['属性名'].value
(3)element.getAttributeNode('属性名').value
(4)element.getAttribute('属性名')
50、简要描述dom操做中查找元素的方式?
(1)、getElementById()根据元素的id属性值查询单个节点
(2)getElementsByTagName()根据元素标签的名称查询点
(3)getElementByName()根据元素name属性的值查询点
(4)getElementsByClassName("className") 根据class名称选取元素
(5)querySelector('selector')
5一、ajax请求的时候get和post方式的区别
一个url后面,一个放在虚拟的载体里面、有大小限时、安全问题
5二、事件委托是什么?
让李永事件冒泡的原理,让本身的所触发的事件,让他的父元素代替执行
5三、如何阻止事件冒泡和默认事件
canceBubble return false;
5四、添加、删除、替换、插入到某个接点的方法
appendChild()
function fn(){
var node = docuement.createElement("li"); 建立一个li节点
var textnode = document.createtTextNode("water");建立一个文本节点内容
node.appendChild(textnode);将文本节点内容,添加到li节点里面
document.getElementById("myList").appendChild(node)将li节点,添加到test几点下面
}
removeChild()
replaceChild()
innersetBefore()
5五、你在js中用过array吗?若是用过,array中添加数据用什么方法?
在尾部添加使用push();
在头部添加使用unshift();
在任意位置添加使用splice();
5六、谈谈你对json的解释
json(javascript object notation)是一种轻量级的数据交换格式。
5七、你的项目中有使用到跨域吗?你在项目中是如何处理js跨域问题的?
使用代理服务器、改变domain、jsonp等
5八、强制转换和隐式转换
强制(parseInt,parseFloat,number)
隐式(== - ===)
5九、数组方法
push()尾部添加
pop()尾部删除
unshift()头部添加
shift()头部删除
60、apply和call的区别
call([thisObj[arg1,arg2]]);
apply([thisObj[argArray]);
问答:
一、自我介绍一下?
您好:我叫程晓敏,