web前端工程师面试题及答案
面试题在web前端工程师求职者的面试中占有重要的位置,以下是小白整理的一些常见的前端面试提及答案,仅供大家参考!
1. 常用那几种浏览器测试?有哪些内核(Layout Engine)?
浏览器:IE,Chrome(谷歌),FireFox,Safari,Opera(现在已经不用了 它自己也放弃了)。
内核:Trident,Gecko,Presto,Webkit。
2. 行内元素和块级元素有哪些 他们的区别是什么?行内块元素的兼容性使用?
行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
(1)CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div
默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
(2)行内元素有:a b span img input select strong(强调的语气)
块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
(3)知名的空元素:
(IE8 以下)
行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。
块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。
兼容性:display:inline-block;display:inline;zoom:1;
3. 清除浮动有哪些方式?比较好的方式是哪一种?
(1)父级div定义height。
(2)结尾处加空div标签clear:both。
(3)父级div定义伪类:after和zoom。
(4)父级div定义overflow:hidden。
(5)父级div定义overflow:auto。
(6)父级div也浮动,需要定义宽度。
(7)父级div定义display:table。
(8)结尾处加br标签clear:both。
总结:比较好的是第3种方式,简洁方便。
4. box-sizing常用的属性有哪些?分别有什么作用?
常用的属性:box-sizing: content-box border-box inherit;
作用:content-box:宽度和高度分别应用到元素的内容框。
border-box:元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。
5. Doctype作用?标准模式与兼容模式各有什么区别?
(Q1) 告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
(Q2) 标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
6. HTML5 为什么只需要写 < Doctype html>?
HTML5不基于 SGML,因此不需要对DTD进行引用;但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
7. 页面导入样式时,使用link和@import有什么区别?
(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
(2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题。
总之,link要优于@import。
8. 介绍一下你对浏览器内核的理解?
IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera内核原为Presto,现为Blink;
内核主要分成两部分:
渲染引擎(layout engineer或Rendering Engine)和JS引擎
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法 解释会有不同,所以渲染的效果也不相同。 所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎则:解析和执行javascript来实现网页的动态效果。 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
9. html5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
(Q1) HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
(1)绘画-canvas;
(2)用于媒介回放的 video 和 audio 元素;
(3)本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
(4)sessionStorage 的数据在浏览器关闭后自动删除;
(5)语意化更好的内容元素,比如 article、footer、header、nav、section;
(6)表单控件,calendar、date、time、email、url、search;
(7)新的技术webworker, websocket, Geolocation;
(Q2) IE8/IE7/IE6支持通过document.createElement方法产生的标签, 可以利用这一特性让这些浏览器支持HTML5新标签, 浏览器支持新标签后,还需要添加标签默认的样式。 也可 以直接使用成熟的框架、比如html5shim。
10. 简述一下你对HTML语义化的理解?
用正确的标签做正确的事情。
1. html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
2. 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的; 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;
3. 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
11 常见的兼容性问题?
1)png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.
2)浏览器默认的margin和padding不同。解决方案是加一个全局的{margin:0;padding:0;}来统一。
3)IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
4)浮动ie产生的双倍距离 #box{ float:left; width:10px; margin:0 0 0 100px;}
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别) 渐进识别的方式,从总体中逐 渐排除局部。
首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
css .bb{ /所有识别
/ .background-color:#00deff\9; /IE6、7、8识别
/ +/IE6、7识别
/ _background-color:#1e0bd1;/IE6识别/ }
IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用
getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性. IE下,even对象有x,y属性,但是没有pageX,pageY属 性; Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.
解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。 Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text- size-adjust: none; 解决.
超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺
序:L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
12.HTML5的离线储存,描述一下 cookies,sessionStorage 和 localStorage 的区别?
cookie在浏览器和服务器间来回传递。 sessionStorage和localStorage不会
sessionStorage和localStorage的存储空间更大;
sessionStorage和localStorage有更多丰富易用的接口;
sessionStorage和localStorage各自独立的存储空间;
13.CSS一、 介绍一下CSS的盒子模型?
(1)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 padding;
(2)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框 (border).
14如何显示隐藏一个DOM元素?
1)display:none;
2)visibility:hidden;
3)透明度设为 0
4)长、宽设为 0
15.CSS中margin和padding的区别
margin是外边距,属于元素之外,相邻元素的margin可以融合。
padding是内边距,在元素之内,相邻元素的padding不可融合。
16.JavaScript中如何检测一个变量是一个String类型?
function(obj) {
returntypeof(obj) == ”string”;
}
17.JS动态显示时间
function printTime(){
var timer1=new Date();
var timer=timer1.toLocaleString();
timer=timer.replace(/[年月]/g,"-");
timer=timer.replace(/日/,"");
time.innerHTML=timer;
}setInterval("printTime()",1000);
18.Flash、Ajax各自的优缺点,在使用中如何取舍?
1、Flash Ajax对比
Flash适合处理多媒体、矢量图形、访问机器;对CSS、处理文本上不足,不容易被搜索。
Ajax对CSS、文本支持很好,支持搜索;多媒体、矢量图形、机器访问不足。
共同点:与服务器的无刷新传递消息、用户离线和在线状态、操作DOM
因篇幅问题不能全部显示,请点此查看更多更全内容