js工程师面试题及答案Word文件下载.docx
《js工程师面试题及答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《js工程师面试题及答案Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。
内联和important哪个优先级高?
标签选择符类选择符id选择符继承不如指定Id>
class>
标签选择后者优先级高
7.前端页面有哪三层构成,分别是什么?
作用是什么?
结构层Html表示层CSS行为层js
8.css的基本语句构成是?
选择器{属性1:
值1;
属性2:
值2;
……}
9.你做的页面在哪些流览器测试过?
这些浏览器的内核分别是什么?
Ie(Ie内核)火狐(Gecko)谷歌(webkit)opear(Presto)
10.写出几种IE6BUG的解决方法
1.双边距BUGfloat引起的使用display
2.3像素问题使用float引起的使用dislpay:
inline-3px
3.超链接hover点击后失效使用正确的书写顺序linkvisitedhoveractive
4.Iez-index问题给父级添加position:
relative
5.Png透明使用js代码改
6.Min-height最小高度!
Important解决’
7.select在ie6下遮盖使用iframe嵌套
8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:
hidden,zoom:
0.08line-height:
1px)
11.标签上title与alt属性的区别是什么?
Alt当图片不显示是用文字代表。
Title为该属性提供信息
12.描述cssreset的作用和用途。
Reset重置浏览器的css默认属性浏览器的品种不同,样式不同,然后重置,让他们统一
13.解释csssprites,如何使用。
Css精灵把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量
14.浏览器标准模式和怪异模式之间的区别是什么?
盒子模型渲染模式的不同使用patMode可显示为什么模式
15.你如何对网站的文件和资源进行优化?
期待的解决方案包括:
文件合并文件最小化/文件压缩使用CDN托管缓存的使用
16.什么是语义化的HTML?
直观的认识标签对于搜索引擎的抓取有好处
17.清除浮动的几种方式,各自的优缺点
1.使用空标签清除浮动clear:
both(理论上能清楚任何标签,,,增加无意义的标签)
2.使用overflow:
auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:
1用于兼容IE)
3.是用afert伪元素清除浮动(用于非IE浏览器)
Javascript
1.javascript的typeof返回哪些数据类型
Objectnumberfunctionbooleanunderfind
2.例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)隐式(==–===)
3.split()join()的区别前者是切割成数组的形式,后者是将数组转换成字符串
4.数组方法pop()push()unshift()shift()
Push()尾部添加pop()尾部删除
Unshift()头部添加shift()头部删除
5.事件绑定和普通事件有什么区别
6.IE和DOM事件流的区别
1.执行顺序不一样、
2.参数不一样
3.事件加不加on
4.this指向问题
7.IE和标准下有哪些兼容性的写法
Varev=ev||window.event
document.documentElement.clientWidth||document.body.clientWidth
Vartarget=ev.srcElement||ev.target
8.ajax请求的时候get和post方式的区别一个在url后面一个放在虚拟载体里面有大小限制安全问题应用不同一个是论坛等只需要请求的,一个是类似修改密码的
9.call和apply的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
10.ajax请求时,如何解释json数据使用evalparse鉴于安全性考虑使用parse更靠谱
11.b继承a的方法
12.写一个获取非行间样式的函数
functiongetStyle(obj,attr,value)
{
if(!
value)
if(obj.currentStyle)
returnobj.currentStyle(attr)
}
else
obj.getComputedStyle(attr,false)
obj.style[attr]=value
13.事件委托是什么让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
例子可见此链接
14.闭包是什么,有什么特性,对页面有什么影响闭包就是能够读取其他函数内部变量的函数。
此链接可查看(问这个问题的不是一个公司)
15.如何阻止事件冒泡和默认事件
canceBubblereturnfalse
16.添加删除替换插入到某个接点的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
17.解释jsonp的原理,以及为什么不是真正的ajax动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作
18.javascript的本地对象,内置对象和宿主对象本地对象为arrayobjregexp等可以new实例化内置对象为gloadMath等不可以实例化的宿主为浏览器自带的document,window等
19.documentload和documentready的区别
Document.onload是在结构和样式加载完才执行js
Document.ready原生种没有这个方法,jquery中有$().ready(function)
20.”==”和“===”的不同前者会自动转换类型后者不会
21.javascript的同源策略一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合
22.编写一个数组去重的方法
functionoSort(arr)
varresult={};
varnewArr=[];
for(vari=0;
i
result[arr])
newArr.push(arr)
result[arr]=1
returnnewArr
重申一下,上述这些知识点都应该是你应该“想都不用想”的东西。
我一开始问的所有问题都是想摸清你对所有这些领域知识的掌握程度。
虽然上面列出的这些知识点并没有面面俱到,但我觉得你至少应该掌握这些,才有可能跟我坐到一间办公室里来。
少量提问
我非常赞同面试者问的问题越少越好。
反复问应聘者各种问题既不公平,也很无聊。
我在任何一次面试中,通常只问三个大问题,但每个问题又会涉及我所能想到的多个方面。
回答每个大问题一般要经过几个步骤,这样我就可以在每个步骤中穿插着问一些小问题。
比如说:
现在有一个正显示着Yahoo!
股票价格的页面。
页面上有一个按钮,你可以单击它来刷新价格,但不会重新加载页面。
请你描述一下实现这个功能的过程,假设服务器会负责准备好正确的股票价格数据。
这个问题牵扯到一组我想要考察的基本知识点:
DOM结构、DOM操作、事件处理、XHR和JSON。
如果我要求你对换一种处理股票价格的方式,或者让你在页面中显示其他信息,就可以把更多的知识点包括进来。
对于经验比较丰富应聘者,我也可以自如地扩展要考察的知识范围,最简单像JOSN与XML的区别、安全问题、容量问题,等等。
我还希望应聘者给出的任何解决方案中都不要使用库。
我想看到最原生态的代码,你就当页面中没有包含任何库。
你说你对哪个库了解多少多少,但我不能把关于库的知识作为评判能力的因素,因为库是会随时间变化的。
我需要的是真正理解库背后的机制,特别是能够徒手写出一个自己的库的人。
解决问题
做为一名前端工程师,最值得高兴的事莫过于解决同一个问题会有很多种不同的方法,而你要做的就是找出最合适的方法来。
我在提问的时候,经常会在应聘者解释完一种方法后问他们还有没有第二种方法。
此时我会跟他们说,假设你的这个方法由于种种原因被否决了,那么你还能不能给出另一种方法。
这样做可以达到两个目的。
首先,可以测试出他们是否在毫无意义地复述书本中的东西。
不能不承认,某些人确实有过目不忘的天赋,听他们在那里滔滔不绝地讲,你会觉得他们什么都明白。
可是,只要一跟这些人谈到怎么查找方案无效的原因,以及能否拿出一个新方案来,他们往往就傻眼了。
这时候,如果我听到“我不明白这个方案为什么不够好”之类的反问,心里立刻就明白我的问题已经超出了他们的能力范围,而他们只是想拿自己死记硬背的结论来蒙混过关。
其次,可以测试出他们已经掌握的(还是那句话,“想都不用想”)浏览器技术知识。
如果他们对浏览器平台的核心知识有较好的理解,想出解决同一问题的不同方案根本没有那么难。
对一名前端工程师来说,这绝对是最重要的能力。
前端工程师在工作中遇到本该如此却并未如此的难题(说你啦,IE6),应该说是一件很平常的事。
一个方案无效就无计可施的人,做不了前端工程师。
考核应聘者解决问题能力的另一层原因,与我的个人喜好有关。
在搞清楚应聘者知道什么不知道什么之后,我就会想着问一个他们知识领域之外的问题。
这样做的目的,就是想看看他们怎样运用已有的知识解决新问题。
在解决问题的.每一步,我也准备了一些提示,以防有人会卡壳打艮(在我面前15分钟一言不发,对我评价这个人毫无帮助)。
我真正感兴趣的,是他们能够从上一步前进到下一步。
我希望看到一个人就在我眼前学到新知识。
注意:
所有问题都与浏览器技术相关。
我不相信出几道抽象的逻辑题,就能够考出某人解决Web技术问题的能力。
在我看来,这无异于让素描大师画肖像(或者让刘翔跟博尔特同场竞技),没有意义,也得不到任何有价值的信息。
有激情
要成为一名优秀的前端工程师,最重要的莫过于对自己做的事要有激情。
我们技能都不是从学校中或者从研讨会上学来的,因此前端工程师必须具备自学能力。
浏览器技术的变化可谓日新月异,所以也只有不断提升自己的技能才做得到与时俱进。
我虽然不能强迫谁必须多看博客、不断学习,但想应聘前端工程师的人恐怕还是必须这么做的。
你怎么知道谁对这种工作有没有激情?
实际上非常简单。
我只问一个简单的问题:
“目前你对什么Web技术最感兴趣?
”这个问题永远不会过期,而且也几乎不可能出错……除非你答不上来。
就眼下来说,我希望你对这个问题给出的技术中包括WebSocket、HTML、WebGL、客户端数据库,等等。
只有对Web开发充满激情的人,才会坚持不懈地学习新知识、掌握新技能;
这些人才是我真正想要的。
当然,我会让他们详细解释自己提到的技术,以保证他们不是随口说了几个时髦的新词汇。
最后一点
计算机科学或者Web设计方面的知识当然也有用,但那都是基本知识之外的东西。
只要基本知识在那儿了,一切就都有了基础,想扩充知识面也不难。
可是,如果等到正式上班以后,还得从头学习基本技能,那种难度是不可同日而语的。
另外,高级前端工程师与一般工程师相比,肯定需要掌握更多的技能。
而面试几乎没有经验大学毕业生,同样也会有一套完全不同的程序。
我在这篇文章里列出来的都是一些最基本的东西。
对于那些还没有多少面试经验的人,我总是喜欢告诉他们,面试完了只要问自己一个问题就行:
你想以后跟这个人在一起共事吗?
如果不管为什么,回答是不,那就是不。
面试前端工程师对我来说是一件非常有意思的事,因为面试过程很大程度上也是自我提升的过程。
无论大公司还是小公司,之所以在如何招聘到真正有能力的前端工程师方面会遇到同样的问题,就是因为负责招聘的那些人不知道自己公司需要什么样的人,结果问问题时也问不到点子上。
经过这几年在行业里的摸索,我总结出了自己的一套很有效的面试前端工程的方法。
有的应聘者说我不好对付,但留给他们这样的印象也并非我所愿。
我觉得之所以他们说我不好对付,主要是因为我问他们问题时问得太细了。
以前我曾专门写过一些东西,告诉应聘者怎么才能通过我的面试(Survivinganinterviewwithme)以及优秀的前面工程师应该具备什么样的素质(Whatmakesagoodfrontendengineer?
),而我的面试可以说完全是按照那两篇文章的标准进行的。
我不会问一些特别偏门的问题,也不认为出几道逻辑题就能考出人的真实水平。
我唯一的想法就是确定你能否胜任我们要招的这个职位。
为此,我需要简单地考察如下几个方面。
基本知识
我们生活在互联网时代,你想知道的任何事情几乎都能在15分钟内找到相关信息。
可是,能找到信息并不等于你会使用它。
我认为所有前端工程师至少都应该掌握某些基本的知识,才能有效地完成自己的工作。
如果一遇到问题,就停下工作上网四处搜索解决方案,怎么可能保证按期完成工作呢?
听听,还有谁在说“我不知道,但我可以上网搜到。
”请这些同学把手举起来,让大家认识一下(immediatelyraisesaflagforme.)。
下面我列出一些基本的知识点,这些都是我认为一名前端工程师(无论工作年头长短)在没有任何外来帮助的情况应该知道的。
DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
盒模型——外边距、内边距和边框之间的关系,IE8以下版本的浏览器中的盒模型有什么不同。
块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
前端开发面试知识点大纲:
HTML&
CSS:
对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:
布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应
JavaScript:
数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。
其他:
HTTP、安全、正则、优化、重构、响应式、移动端、团队协作、可维护、SEO、UED、架构、职业生涯
作为一名前端工程师,
无论工作年头长短都应该必须掌握的知识点
:
1、DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
2、DOM操作——如何添加、移除、移动、复制、创建和查找节点等。
3、事件——如何使用事件,以及IE和标准DOM事件模型之间存在的差别。
4、XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
5、严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
6、盒模型——外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型
7、块级元素与行内元素——怎么用CSS控制它们、以及如何合理的使用它们
8、浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
9、HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
10、JSON——作用、用途、设计结构。