以下是我总结的一些关于前端的面试题,分享给大家,下面的答案是我的理解,如有不正确欢迎多多指出。
一.Doctype的含义,并且举例有什么类型。
答:Doctype是document type的简写,主要是告诉浏览器解析器用什么文档的标准去解析。
无论是在html或者xhtml中Doctype有三类分别是:
1. frameset模式(框架模式)
2.traditional模式(过渡模式)
3.strict模式(严格模式)
关于这三种模式说说我的理解:traditional模式下结构层(html)和表下层(css)是可以混杂的。而strict是不允许的。 再说frameset就是针对框架的一种写法 (我理解的内容如果有不正确欢迎大家给出你们自己的见解,我也很乐意倾听)
引申问题:HTML5中为什么只需要写 !DOCTYPE HTML?
答:因为HTML5不基于SGML(标准通用标记语言),因此不需要对DTD进行引用。
二.后台给到的json字符串前端怎么转换成json对象。
答:json字符串转换成json对象有三类分别是:
一.jquery插件转换
答: $.parseJSON(jsonstr)
二.js转换
答:eval('('+jsonstr+')')
三.json官方转换 (需要使用官方的json.js)
答: parse()
三.说说你理解的闭包,作用域。
答:闭包的话就要谈论到作用域的问题,变量有局部变量和全局变量,那么这两者的不同就在于局部变量的作用域仅仅在一 个函数的内部使用,而全局变量的作用域在整个文件中。在函数的内部去读取全局变量是一一件很容易的事情 但是当我 们需要从外面读取局部变量的时候,这个时候就需要闭包。在函数的内部在定义一个函数举例如下:
function f1(){
var n=999;
function f2(){
alert(n);
} 闭包
return f2;
}
var result=f1();
result(); // 999
问题引申:在页面中闭包使用过多有什么问题吗?是什么导致的这个问题?
答:一般闭包使用过多回导致网页页面加载过慢,而导致这个问题的原因是闭包回占据大量内存。
四.html5的新特性。
答:关于html5的新特性
1.绘画:canvas
2.用于媒体回放的viedo和audio元素
3.语义化更好增加 header footer标签
4.表单控件:date /eamil /search等等
还有许多的新特性有兴趣的可以自己去了解以下这边就不多赘述。
五.css3的新特性。
关于css3的新特性:
1.css实现圆角 border-radius,阴影 box-shadow。
2.旋转的属性 transform
3.增加更多的css选择器
六.前端页面有哪三层构成,分别是什么,作用是怎么。
答:前端页面分为以下三层:
1.结构层(html)
2.显示层(css)
3.行为层(js)
为什么一直倡导前端结构层和显示层以及行为层要分离,那是因为前端有一个原则叫做平稳退化,当一个用户禁止js那么 我们做的网页可以完好的显示,这就需要结构层和显示层和行为层的关联越少越好甚至当行为层不能勇士队可以有第二 套方案可以实行不影响用户的体验。那么在说说如果css文件不能加载的问题,css文件就好像是化妆品是为了增加 感, 及时没有涂抹我们的html是可以正常的展示只不过少了一点美的元素。这就是我们为什么一直强调的要将这三层区分, 少关联。
七.谈谈你理解的js短路。
其实js短路我总结的就两句话
|| 左false返右
&& 左true返右
八.说一说 link标签 和 @import 的区别。
答:以下是这两者的区别
1.@import只能在css文件中使用,link是xhtml标签可以引用css。(我自己的理解是 @import< link )
2.@import是在页面加载完以后在加载。而link是和页面一起加载的。
3.@import存在兼容性的问题,link不存在。
九.选择器的优先级排列。
答: id选择器 类选择器 标签选择器 相邻选择器 子选择器 后代选择器等等
优先级: !important > id选择器 >class选择器
十.描述一下cookie,localshortage,sessionshortage的区别。
十.谈谈你理解的盒子模型。
答:有两种为w3c标准和IE标准的盒子模型
w3c: content+border+margin+padding
IE: content+margin (IE中的content包含border和pading)
十一.强制类型转换和隐式类型转换。
答:强制(parseInt,parseFloat,number) 隐式转换(== - ===)
十二.什么是语义化的HTML。
答:语义化的HTML其实就是你正确使用标签,让浏览器解析器在解析的时候能更好的理解你在写什么东西。包括让别人看 你的代码的时候也能理解。