最近在多看一些基础书籍和多码代码,为实习做准备。我也在网上收集了很多采访。下面整理一下自己收集的实习生面试题。题目来源:前端实习生面试总结最近开始了好几个面试。虽然还不知道结果,但还是要记录一下,做个总结。也希望对准备面试实习生的童鞋有所帮助~JavaScript的addEventListener最后一个参数是干什么用的?A:指定事件是冒泡还是捕获。false表示事件处理程序在冒泡阶段被调用,true表示事件处理程序在捕获阶段被调用。(同removeEventListener())什么是冒泡,什么是捕获?答:冒泡的意思是当一个元素触发一个事件时,会传递到上层,直到文档(被最具体的元素接受,然后逐步向上传播到不太具体的节点(文档))。捕获是特定节点(文档)较早接收事件,特定节点最后接收事件。所有事件都能冒泡吗?答:不能,blur、focus、load、unload、abort是不允许冒泡的(每个事件都有一个event.bubbles属性,可以知道能不能冒泡,详见Whicheventswillbubbleinthebrowser?)如何取消事件冒泡答:我这里的回答是错误的,谢谢指正,请不要混淆默认行为).eve.stopPropagation()用于取消事件的进一步捕获或冒泡。当气泡为真时可以使用此方法。怎么判断是不是数组答:ainstanceofArrayArray.isArray(a)他问我还有没有~所以我说试试Array的内置函数,如果可以用Array,如果可以't,不可以,其实还有Object.prototype.toString.call(a)==='[objectArray]'如何将类数组对象转换成数组答案:Array.prototype.slice.call(arrayLike);说说继承答:继承是代码重用的一种形式,可以显着降低软件开发成本。在JavaScript中,有三种继承方式:类继承(主要)、原型继承(主要)和元类化。类式继承:首先创建构造函数,在构造函数中调用超类构造函数,并向其传递参数。接下来就是设置原型链,手动将子类的原型设置为超类的一个实例(Author.prototype=newPerson()),然后将子类原型的constructor属性重置为子类(Author.prototype.constructor=Author)。原型继承:不需要用类来定义对象的结构,直接创建一个原型对象,即可被新的对象复用。它主要负责超类或克隆。克隆函数如下:functonclone(o){functionF(){}F.prototype=o;returnnewF();}克隆超类后,您可以重新定义该克隆中的方法和属性,要么修改超类中提供的默认值,要么添加新的属性和方法。但是这种方法本质上是不等于读写继承自原型对象的成员的。详情请参考JavaScript。Array的继承方式有哪些?答案:concat、join、pop、push、reverse、shift、slice、sort、splice、unshift。(《JavaScript语言精粹》一书总结了数组、函数、数字、正则表达式、字符串的常用方法)sort方法的工作原理是什么?答案:默认比较函数将要排序的元素视为字符串。比较数字时,它将数字转换为字符串,然后进行比较。那么如果你想对数字进行排序怎么办?答案:n.sort(function(a,b){returna-b;})String升序有哪些方法?答:concatcharAtslicesubstrsubstring等(其实我觉得应该补充一点,string是基本数据类型,没有方法,string的方法是String构造函数创建的引用类型的方法~)替换方法如何工作?答:string.repalce(searchValue,replaceValue),对字符串进行查找替换操作,返回一个新的字符串。参数searchValue可以是字符串或正则表达式对象。如果是字符串,那么searchValue只会在第一个出现的地方被替换掉。如果searchValue是带有g标志的正则表达式,则替换所有匹配项。当鼠标滑过某个元素时,会出现一个弹出层。答:以domlevel0为例,是onmouseoverdisplay:block。鼠标滑动太快无法显示怎么办?答:设置一个setTimeout当鼠标停留在上面的时间少于设定的时间,事件在他出来之前就被取消了。setTimeout应该设置多长时间?我不知道这有什么习惯的时间设置。当这个元素在页面底部时,弹出层显示在顶部,当元素在顶部时,弹出层显示在底部?从页面底部确定元素的位置。如果位置大于弹出层的高度,则在底部弹出,否则在顶部弹出。想把它做成一个工具给别人用怎么办?呃~先用模块化,注意不要和其他方法冲突,然后设置方法进入和退出需要的参数,比如元素,什么事件,弹出层的大小等等。如果你想做一个好的工具,参数肯定很多,怎么才能让别人好用呢?毕竟参数太多了,别人是不会记住的。呃~我可能会把它设置成一个对象,传入对象的属性,这样好记。事件代理答案:详见JavaScript事件代理与委托什么是冒泡,什么是捕获答案:详见JavaScript事件代理与委托C++jQuery获取的元素与原生Js获取的元素有什么区别jQuery返回的是一个jQuery对象,它是一个类数组对象,找到的DOM对象存放在属性0,1,2....这个jQuery对象有一个length属性,表示找到DOM的个数。js抓取的元素是DOM元素。Doctype的作用Answer:是声明文档的解析类型(document.compatMode),指示浏览器使用哪个HTML版本编写页面,避免浏览器的怪异模式。详见:关于DOCTYPEResponsiveness我只回答了@mediasetTimeout和setInterval的区别详见:setTimeout()和setInterval()setTimeout时间设置为0是否立即执行,为什么?不一定,因为JavaScript是单线程解释器,所以一定时间内只能执行一段代码。为了控制要执行的代码,有一个JavaScript任务队列。setTimeout时间设置为0,它告诉JavaScript在0毫秒后将当前任务添加到任务队列中。如果队列为空,则添加的代码立即执行;如果队列不为空,则等待前面的代码执行完毕。构造函数的运行机制thisbindingcall()和apply()Js继承有什么区别?什么是原型继承?解释模块化。比如GET和POST的区别。函数声明和函数字面量的区别。在jQuery中级联有什么好处?after{clear:both;content:".";height:0;display:block;visibility:hidden;}(我给自己挖了个坑after是伪元素不是伪类,我错了~)-高度像素单位和百分比单位的计算方法:长度设置固定行距。单位em、px、pt等。百分比%,基于当前字体大小的百分比行距。(我觉得我的回答是对的,但是他又重复了一遍:我说的是line-height)一个ul里面有好几个li,我想让每个li都有一个border-bottom,但是我不想让最后一个li怎么办dowithborder-bottom:(ul:last-child{border-bottom:none;}或者在最后一个li加一个类选择器,设置border:none;(他说还有,看看有什么可以加载jQuery类的~)css选择器太长如何判断其优先级:内联样式1000--id100--类、伪类、属性选择器10--类型选择器、伪元素选择器1通过添加计算较大的优先级高,如果值相等,后面语句的优先级高。如何让一个div垂直居中?你饿了吗?我告诉你~你用css3的属性是什么?动画的transformtransmationborder-radiousbox-sizingbox-shadow很长,需要截取。超过三分怎么办?如果不考虑兼容性,CSS3有text-overflow:ellipsis然后或者overfloww:hidden然后在border前面加一个span三点或者用伪元素:after{content:"..."}and之类的定位dom如何解决操作元素的两列布局中的行内块间隙如何平铺背景图像?css方法:设置图片{position:absolute;顶部:0;左:0;底部:0;右:0;z-index:-1;}js方法:判断浏览器的高度,设置图片的高度如果让图片放大还是缩小?用Js判断宽高,然后按比例放大(面试官说屏幕面板都是横屏,所以宽度设置成100%就好了)csshack条件注释显示值css3动画性能优化做什么的你知道?我只回答最好不要用allBFC,什么是haslayout,如何触发HTML,什么是语义html5,语义标签,HTTP状态码,我知道那些算法(我没有回答任何一个):优先队列,堆,快速排序数组,如何去重用十进制数构造一棵树,判断有多少个二进制码。css3动画书是如何工作的?balabala说了很多关于你的翻页有bug,请问是什么原因,如何解决?z-index的问题,怎么换普吉岛~canvas绘图怎么做?Balabala谈到你的画有很多错误,为什么以及如何修复?滚动条的问题,怎么改。..(加上滚动条的距离,面试官告诉我的~)versioncontrol懂versioncontroller吗?你知道github的一些基本操作吗?我用的是windows图形界面操作(面试官心里可能有一万匹泥马在奔腾。。。)github的工作原理是什么?我把自己的代码上传到github仓库,其他人可以下载添加代码再上传更新仓库。我可以下载更新的,继续添加修改。如果你们两个修改相同的代码发生冲突怎么办?我知道的唯一方法就是回滚,也就是和队友沟通,看看谁的代码更重要,然后进行回滚操作。这是唯一的方法吗?有必要牺牲吗?了解到github的功能其实很强大,所以一定有更好的方法,但是我目前对github的使用仅限于自己代码的存放和一些小的修改,所以不知道有什么更好的方法。...您最喜欢的其他编码工具是什么?sublimetext中很多相同的地方要修改怎么办?选择一个然后按Ctrl+D选择多个然后一起修改photoshop怎么样?简单的psd页面图可以用于ps,但不会美化人物和风景。如果要导出文件,请在相对较小的png中提及如何进行,并将其保存为网络使用的格式。..(应该是错的~)性能优化你知道多少个项目(这里聊了半天)说说你做过哪些项目?一大堆blahblah都没有具体的答案~你们是怎么进行团队项目合作的?一堆blahblah没有具体的答案~你现在在学什么?Linux下Qt开发~~blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah学他有什么用?我不只是一个前端写手,我还是一个程序员,C和C++是这些语言的基础,等等等等,说说你最满意的C++程序?Qt,class~你觉得淘宝首页的技术优势是什么?页面很大,承载的东西很多,但是能让用户很清楚的找到自己要找的东西,证明布局很好,图片轮播,点击事件等事件很多,所以避免事件冲突也是很烦人的~那你觉得淘宝首页要写多久呢?呃~一周(真不知道什么样的回答合适)为什么要来淘宝技术部?因为技术好,而且这个团队里有很多大佬,如果有机会成为其中一员,以后工作可以学到更多的东西~你觉得来淘宝科技有什么优势部门?哎,我就不告诉你我是怎么得到答案的了~~
