版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
技术宅——你的面试成功了吗?javascript篇技术宅除了上网、睡觉之外还会做些什么?跟HR能聊得来吗?经典面试你知道吗?一切难不住技术宅,但是可认为将来的技术宅写一下面试题型。
ﻫ秒杀大部分公司的面试题,精心整理合集,值得收藏(javascript篇)ﻫ
1,判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20ﻫvarreg=/^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;reg.test("a1a__a1a__a1a__a1a__");
2,截取字符串abcdefg的efgvarstr="abcdefg";if(/efg/.test(str)){varefg=str.substr(str.indexOf("efg"),3);alert(efg);}ﻫﻫ3,判断一个字符串中出现次数最多的字符,记录这个次数ﻫ//将字符串的字符保存在一个hashtable中,key是字符,value是这个字符出现的次数varstr="abcdefgaddda";varobj={};for(vari=0,l=str.length;i&lt;l;i++){varkey=str[i];if(!obj[key]){obj[key]=1;}else{obj[key]++;}}/*遍历这个hashtable,获取value最大的key和value*/varmax=-1;varmax_key="";varkey;for(keyinobj){if(max<obj[key]){max=obj[key];max_key=key;}}alert("max:"+max+"max_key:"+max_key);
ﻫ4,IE与FF脚本兼容性问题ﻫ(1)window.event:ﻫ表达当前的事件对象,IE有这个对象,FF没有,FF通过给事件解决函数传递事件对象
(2)获取事件源
IE用srcElement获取事件源,而FF用target获取事件源
(3)添加,去除事件ﻫIE:element.attachEvent(“onclick”,function)element.detachEvent(“onclick”,function)
FF:element.addEventListener(“click”,function,true)element.removeEventListener(“click”,function,true)
(4)获取标签的自定义属性
IE:div1.value或div1[“value”]
FF:可用div1.getAttribute(“value”)
(5)document.getElementByName()和document.all[name]ﻫIE;document.getElementByName()和document.all[name]均不能获取div元素ﻫFF:可以
(6)input.type的属性
IE:input.type只读
FF:input.type可读写ﻫ(7)innerTexttextContentouterHTML
IE:支持innerText,outerHTMLﻫFF:支持textContentﻫ(8)是否可用id代替HTML元素ﻫIE:可以用id来代替HTML元素
FF:不可以
这里只列出了常见的,尚有不少,更多的介绍可以参看JavaScript在IE浏览器和Firefox浏览器中的差异总结
5,规避javascript多人开发函数重名问题
(1)可以开发前规定命名规范,根据不同开发人员开发的功能在函数前加前缀ﻫ(2)将每个开发人员的函数封装到类中,调用的时候就调用类的函数,即使函数重名只要类名不反复就ok。卧龙阁网wolonge.com公司点评,各种公司工作面试经验分享。ﻫﻫ6,javascript面向对象中继承实现ﻫjavascript面向对象中的继承实现一般都使用到了构造函数和Prototype原型链,简朴的代码如下:ﻫfunctionAnimal(name){this.name=name;}Animal.prototype.getName=function(){alert(this.name)}functionDog(){};Dog.prototype=newAnimal("Buddy");Dog.prototype.constructor=Dog;vardog=newDog();ﻫ
7,FF下面实现outerHTMLﻫFF不支持outerHTML,要实现outerHTML还需要特殊解决
思绪如下:
在页面中添加一个新的元素A,克隆一份需要获取outerHTML的元素,将这个元素append到新的A中,然后获取A的innerHTML就可以了。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""HYPERLINK"://3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&link2key=f872a1cff7""><htmlxmlns=""><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/><title>获取outerHMTL</title><style>div{background:#0000FF;width:100px;height:100px;}span{background:#00FF00;width:100px;height:100px;}p{background:#FF0000;width:100px;height:100px;}</style></head><body><divid="a"><span>SPAN</span>DIV</div><span>SPAN</span><p>P</p><scripttype="text/javascript">functiongetOuterHTML(id){varel=document.getElementById(id);varnewNode=document.createElement("div");document.appendChild(newNode);varclone=el.cloneNode(true);newNode.appendChild(clone);alert(newNode.innerHTML);document.removeChild(newNode);}getOuterHTML("a");</script></body></html>ﻫ
8,编写一个方法求一个字符串的字节长度ﻫ假设:ﻫ一个英文字符占用一个字节,一个中文字符占用两个字节
functionGetBytes(str){varlen=str.length;varbytes=len;for(vari=0;i<len;i++){if(str.charCodeAt(i)>255)bytes++;}returnbytes;}alert(GetBytes("你好,as"));ﻫﻫ9,编写一个方法去掉一个数组的反复元素
vararr=[1,1,2,3,3,2,1];Array.prototype.unique=function(){varret=[];varo={};varlen=this.length;for(vari=0;i<len;i++){varv=this[i];if(!o[v]){o[v]=1;ret.push(v);}}returnret;};alert(arr.unique());
ﻫ10,写出3个使用this的典型应用ﻫ(1)在html元素事件属性中使用,如ﻫ<inputtype=”button”onclick=”showInfo(this);”value=”点击一下”/>
(2)构造函数ﻫfunctionAnimal(name,color){this.name=name;this.color=color;}ﻫ(3)ﻫ<inputtype="button"id="text"value="点击一下"/><scripttype="text/javascript">varbtn=document.getElementById("text");btn.onclick=function(){alert(this.value);//此处的this是按钮元素}</script>
(4)CSSexpression表达式中使用this关键字ﻫ<tablewidth="100px"height="100px"><tr><td><divstyle="width:expression(this.parentNode.width);">divelement</div></td></tr></table>ﻫﻫ11,如何显示/隐藏一个DOM元素?ﻫel.style.display="";el.style.display="none";
el是要操作的DOM元素
12,JavaScript中如何检测一个变量是一个String类型?请写出函数实现
String类型有两种生成方式:
(1)Varstr=“helloworld”;ﻫ(2)Varstr2=newString(“helloworld”);
functionIsString(str){return(typeofstr=="string"||str.constructor==String);}varstr="";alert(IsString(1));alert(IsString(str));alert(IsString(newString(str)));
ﻫ13,网页中实现一个计算当年还剩多少时间的倒数计时程序,规定网页上实时动态显示“××年还剩××天××时××分××秒”
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""HYPERLINK"://3.org/TR/html4/loose.dtd&link2key=f872a1cff7""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>倒计时</title></head><body><inputtype="text"value=""id="input"size="1000"/><scripttype="text/javascript">functioncounter(){vardate=newDate();varyear=date.getFullYear();vardate2=newDate(year,12,31,23,59,59);vartime=(date2-date)/1000;varday=Math.floor(time/(24*60*60))varhour=Math.floor(time%(24*60*60)/(60*60))varminute=Math.floor(time%(24*60*60)%(60*60)/60);varsecond=Math.floor(time%(24*60*60)%(60*60)%60);varstr=year+"年还剩"+day+"天"+hour+"时"+minute+"分"+second+"秒";document.getElementById("input").value=str;}window.setInterval("counter()",1000);</script></body></html>
ﻫ14,补充代码,鼠标单击Button1后将Button1移动到Button2的后面<div><inputtype=”button”id=”button1″value=”1″onclick=”???”><inputtype=”button”id=”button2″value=”2″/”></div>ﻫ<div><inputtype="button"id="button1"value="1"onclick="moveBtn(this);"><inputtype="button"id="button2"value="2"/></div><scripttype="text/javascript">functionmoveBtn(obj){varclone=obj.cloneNode(true);varparent=obj.parentNode;parent.appendChild(clone);parent.removeChild(obj);}</script>ﻫ
15,JavaScript有哪几种数据类型
简朴:Number,Boolean,String,Null,Undefinedﻫ复合:Object,Array,Functionﻫ
16,下面css标签在JavaScript中调用应如何拼写,border-left-color,-moz-viewport
borderLeftColor
mozViewport
17,JavaScript中如何对一个对象进行深度cloneﻫfunctioncloneObject(o){if(!o||'object'!==typeofo){returno;}varc='function'===typeofo.pop?[]:{};varp,v;for(pino){if(o.hasOwnProperty(p)){v=o[p];if(v&&'object'===typeofv){c[p]=Ext.ux.clone(v);}else{c[p]=v;}}}returnc;};ﻫ
18,如何控制alert中的换行ﻫ\nalert(“p\np”);ﻫ
19,请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""HYPERLINK"://3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&link2key=f872a1cff7""><htmlxmlns="HYPERLINK"://3.org/1999/xhtml&link2key=f872a1cff7""><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/><title>鼠标点击页面中的任意标签,alert该标签的名称</title><style>div{background:#0000FF;width:100px;height:100px;}span{background:#00FF00;width:100px;height:100px;}p{background:#FF0000;width:100px;height:100px;}</style><scripttype="text/javascript">document.onclick=function(evt){vare=window.event||evt;vartag=e["target"]||e["srcElement"];alert(tag.tagName);};</script></head><body><divid="div"><span>SPAN</span>DIV</div><span>SPAN</span><p>P</p></body></html>
ﻫ20,请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象,如:ﻫvarurl=“HYPERLINK"://wit/index.php?key0=0&key1=1&key2=2&link2key=f872a1cff7"″;ﻫfunctionparseQueryString(url){varparams={};vararr=url.split("?");if(arr.length<=1)returnparams;arr=arr[1].split("&");for(vari=0,l=arr.length;i<l;i++){vara=arr[i].split("=");params[a[0]=a[1];}returnparams;}varurl="HYPERLINK"://wi/index.php?key0=0&key1=1&key2=2&link2key=f872a1cff7"";varps=parseQueryString(url);alert(ps["key1"]);ﻫﻫ21,ajax是什么?ajax的交互模型?同步和异步的区别?如何解决跨域问题?
Ajax是多种技术组合起来的一种浏览器和服务器交互技术,基本思想是允许一个互联网浏览器向一个远程页面/服务做异步的http调用,并且用收到的数据来更新一个当前web页面而不必刷新整个页面。该技术可以改善客户端的体验。卧龙阁网wolonge.com公司点评,各种公司工作面试经验分享。包含的技术:ﻫXHTML:相应W3C的XHTML规范,目前是XHTML1.0。ﻫCSS:相应W3C的CSS规范,目前是CSS2.0
DOM:这里的DOM重要是指HTMLDOM,XMLDOM涉及在下面的XML中
JavaScript:相应于ECMA的ECMAScript规范
XML:相应W3C的XMLDOM、XSLT、XPath等等规范
XMLHttpRequest:相应WhatWG的WebApplications1.0规范(HYPERLINK"://wha/specs/web-apps/current-work/&link2key=f872a1cff7")ﻫAJAX交互模型ﻫ
同步:脚本会停留并等待服务器发送回复然后再继续
异步:脚本允许页面继续其进程并解决也许的回复。卧龙阁网wolonge.com公司点评,各种公司工作面试经验分享。ﻫ跨域问题简朴的理解就是由于JS同源策略的限制,a.com域名下的JS无法操作b.com或c.a.com下的对象,具体场景如下:ﻫﻫPS:(1)假如是端口或者协议导致的跨域问题前端是无能为力的ﻫ(2)在跨域问题上,域仅仅通过URL的首部来辨认而不会尝试判断相同的IP地址相应的域或者两个域是否相应一个IP。卧龙阁网wolonge.com公司点评,各种公司工作面试经验分享。ﻫ前端对于跨域的解决办法:
(1)document.domain+iframeﻫ(2)动态创建script标签ﻫﻫ22,什么是闭包?下面这个ul,如何点击每一列的时候alert其index?
<ulid=”test”><li>这是第一条</li><li>这是第二条</li><li>这是第三条</li></ul>
内部函数被定义它的函数的外部区域调用的时候就产生了闭包。
(functionA(){varindex=0;varul=document.getElementById("test");varobj={};for(vari=0,l=ul.childNodes.length;i<l;i++){if(ul.childNodes[i].nodeName.toLowerCase()=="li"){varli=ul.childNodes[i];li.onclick=function(){index++;alert(index);}}}})();
23,请给出异步加载js方案,不少于两种ﻫ默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才干进行再加载,对于一些意义不是很大的javascript,假如放在页头会导致加载很慢的话,是会严重影响用户体验的。卧龙阁网wolonge.com公司点评,各种公司工作面试经验分享。
异步加载方式:
(1)defer,只支持IEﻫ(2)async:
(3)创建script,插入到DOM中,加载完毕后callBack,见代码:ﻫfunctionloadScript(url,callback){varscript=document.createElement("script")script.type="text/javascript";if(script.readyState){//IEscript.onreadystatechange=function(){if(script.readyState=="loaded"||script.readyState=="complete"){script.onreadystatechange=null;callback();}};}else{//Others:Firefox,Safari,Chrome,andOperascript.onload=function(){callback();};}script.src=url;document.body.appendChild(script);}
24,请设计一套方案,用于保证页面中JS加载完全。ﻫvarn=document.createElement("script");n.type="text/javascript";//以上省略部分代码//ie支持script的readystatechange属性(IEsupportthereadystatechangeeventforscriptandcssnodes)if(ua.ie){n.onreadystatechange=function(){varrs=this.readyState;if('loaded'===rs||'complete'===rs){n.onreadystatechange=null;f(id,url);//回调函数}};//省略部分代码//safari3.xsupportstheloadeventforscriptnodes(DOM2)n.addEventListener('load',function(){f(id,url);});//firefoxandoperasupportonload(butnotdom2inff)handlersfor//scriptnodes.opera,butnoff,supporttheonloadeventforlink//nodes.}else{n.onload=function(){f(id,url);};}
25,js中如何定义class,如何扩展prototype?ﻫEle.className=“***”;//***在css中定义,形式如下:.***{…}
A.prototype.B=C;
A是某个构造函数的名字
B是这个构造函数的属性ﻫC是想要定义的属性的值
26,如何添加html元素的事件,有几种方法.
(1)为HTML元素的事件属性赋值
(2)在JS中使用ele.on***=function(){…}ﻫ(3)使用DOM2的添加事件的方法addEventListener或attachEventﻫ
27,documen.wr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论