版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
技術(shù)宅——你的面試成功了嗎?javascript篇技術(shù)宅除了上網(wǎng)、睡覺(jué)之外還會(huì)做些什么?跟HR能聊得來(lái)嗎?經(jīng)典面試你知道嗎?一切難不住技術(shù)宅,但是可認(rèn)為將來(lái)的技術(shù)宅寫(xiě)一下面試題型。
?秒殺大部分公司的面試題,精心整理合集,值得收藏(javascript篇)?
1,判斷字符串是否是這樣組成的,第一個(gè)必須是字母,后面可以是字母、數(shù)字、下劃線,總長(zhǎng)度為5-20?varreg=/^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;reg.test("a1a__(dá)a1a__a1a__a1a__");
2,截取字符串a(chǎn)bcdefg的efgvarstr="abcdefg";if(/efg/.test(str)){varefg=str.substr(str.indexOf("efg"),3);alert(efg);}??3,判斷一個(gè)字符串中出現(xiàn)次數(shù)最多的字符,記錄這個(gè)次數(shù)?//將字符串的字符保存在一個(gè)hashtable中,key是字符,value是這個(gè)字符出現(xiàn)的次數(shù)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]++;}}/*遍歷這個(gè)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腳本兼容性問(wèn)題?(1)window.event:?表達(dá)當(dāng)前的事件對(duì)象,IE有這個(gè)對(duì)象,F(xiàn)F沒(méi)有,FF通過(guò)給事件解決函數(shù)傳遞事件對(duì)象
(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)獲取標(biāo)簽的自定義屬性
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可讀寫(xiě)?(7)innerTexttextContentouterHTML
IE:支持innerText,outerHTML?FF:支持textContent?(8)是否可用id代替HTML元素?IE:可以用id來(lái)代替HTML元素
FF:不可以
這里只列出了常見(jiàn)的,尚有不少,更多的介紹可以參看JavaScript在IE瀏覽器和Firefox瀏覽器中的差異總結(jié)
5,規(guī)避javascript多人開(kāi)發(fā)函數(shù)重名問(wèn)題
(1)可以開(kāi)發(fā)前規(guī)定命名規(guī)范,根據(jù)不同開(kāi)發(fā)人員開(kāi)發(fā)的功能在函數(shù)前加前綴?(2)將每個(gè)開(kāi)發(fā)人員的函數(shù)封裝到類中,調(diào)用的時(shí)候就調(diào)用類的函數(shù),即使函數(shù)重名只要類名不反復(fù)就ok。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。??6,javascript面向?qū)ο笾欣^承實(shí)現(xiàn)?javascript面向?qū)ο笾械睦^承實(shí)現(xiàn)一般都使用到了構(gòu)造函數(shù)和Prototype原型鏈,簡(jiǎn)樸的代碼如下:?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下面實(shí)現(xiàn)outerHTML?FF不支持outerHTML,要實(shí)現(xiàn)outerHTML還需要特殊解決
思緒如下:
在頁(yè)面中添加一個(gè)新的元素A,克隆一份需要獲取outerHTML的元素,將這個(gè)元素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>獲?。飖terHMTL</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,編寫(xiě)一個(gè)方法求一個(gè)字符串的字節(jié)長(zhǎng)度?假設(shè):?一個(gè)英文字符占用一個(gè)字節(jié),一個(gè)中文字符占用兩個(gè)字節(jié)
functionGetBytes(str){varlen=str.length;varbytes=len;for(vari=0;i<len;i++){if(str.charCodeAt(i)>255)bytes++;}returnbytes;}alert(GetBytes("你好,as"));??9,編寫(xiě)一個(gè)方法去掉一個(gè)數(shù)組的反復(fù)元素
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,寫(xiě)出3個(gè)使用this的典型應(yīng)用?(1)在html元素事件屬性中使用,如?<inputtype=”button”onclick=”showInfo(this);”value=”點(diǎn)擊一下”/>
(2)構(gòu)造函數(shù)?functionAnimal(name,color){this.name=name;this.color=color;}?(3)?<inputtype="button"id="text"value="點(diǎn)擊一下"/><scripttype="text/javascript">varbtn=document.getElementById("text");btn.onclick=function(){alert(this.value);//此處的this是按鈕元素}</script>
(4)CSSexpression表達(dá)式中使用this關(guān)鍵字?<tablewidth="100px"height="100px"><tr><td><divstyle="width:expression(this.parentNode.width);">divelement</div></td></tr></table>??11,如何顯示/隱藏一個(gè)DOM元素??el.style.display="";el.style.display="none";
el是要操作的DOM元素
12,JavaScript中如何檢測(cè)一個(gè)變量是一個(gè)String類型?請(qǐng)寫(xiě)出函數(shù)實(shí)現(xiàn)
String類型有兩種生成方式:
(1)Varstr=“helloworld”;?(2)Varstr2=newString(“helloworld”);
functionI(lǐng)sString(str){return(typeofstr=="string"||str.constructor==String);}varstr="";alert(IsString(1));alert(IsString(str));alert(IsString(newString(str)));
?13,網(wǎng)頁(yè)中實(shí)現(xiàn)一個(gè)計(jì)算當(dāng)年還剩多少時(shí)間的倒數(shù)計(jì)時(shí)程序,規(guī)定網(wǎng)頁(yè)上實(shí)時(shí)動(dòng)態(tài)顯示“××年還?!痢撂臁痢?xí)r××分××秒”
<!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>倒計(jì)時(shí)</title></head><body><inputtype="text"value=""id="input"size="1000"/><scripttype="text/javascript">functioncounter(){vardate=newDate();varyear=date.getFullYear();vardate2=newDat(yī)e(year,12,31,23,59,59);vartime=(date2-date)/1000;varday=Mat(yī)h.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+"時(shí)"+minute+"分"+second+"秒";document.getElementById("input").value=str;}window.setInterval("counter()",1000);</script></body></html>
?14,補(bǔ)充代碼,鼠標(biāo)單擊Button1后將Button1移動(dòng)到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有哪幾種數(shù)據(jù)類型
簡(jiǎn)樸:Number,Boolean,String,Null,Undefined?復(fù)合:Object,Array,F(xiàn)unction?
16,下面css標(biāo)簽在JavaScript中調(diào)用應(yīng)如何拼寫(xiě),border-left-color,-moz-viewport
borderLeftColor
mozViewport
17,JavaScript中如何對(duì)一個(gè)對(duì)象進(jìn)行深度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,請(qǐng)實(shí)現(xiàn),鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽,alert該標(biāo)簽的名稱.(注意兼容性)
<!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>鼠標(biāo)點(diǎn)擊頁(yè)面中的任意標(biāo)簽,alert該標(biāo)簽的名稱</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,請(qǐng)編寫(xiě)一個(gè)JavaScript函數(shù)parseQueryString,它的用途是把URL參數(shù)解析為一個(gè)對(duì)象,如:?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的交互模型?同步和異步的區(qū)別?如何解決跨域問(wèn)題?
Ajax是多種技術(shù)組合起來(lái)的一種瀏覽器和服務(wù)器交互技術(shù),基本思想是允許一個(gè)互聯(lián)網(wǎng)瀏覽器向一個(gè)遠(yuǎn)程頁(yè)面/服務(wù)做異步的http調(diào)用,并且用收到的數(shù)據(jù)來(lái)更新一個(gè)當(dāng)前web頁(yè)面而不必刷新整個(gè)頁(yè)面。該技術(shù)可以改善客戶端的體驗(yàn)。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。包含的技術(shù):?XHTML:相應(yīng)W3C的XHTML規(guī)范,目前是XHTML1.0。?CSS:相應(yīng)W3C的CSS規(guī)范,目前是CSS2.0
DOM:這里的DOM重要是指HTMLDOM,XMLDOM涉及在下面的XML中
JavaScript:相應(yīng)于ECMA的ECMAScript規(guī)范
XML:相應(yīng)W3C的XMLDOM、XSLT、XPat(yī)h等等規(guī)范
XMLHttpRequest:相應(yīng)WhatWG的WebApplicat(yī)ions1.0規(guī)范(HYPERLINK"://wha/specs/web-apps/current-work/&link2key=f872a1cff7")?AJAX交互模型?
同步:腳本會(huì)停留并等待服務(wù)器發(fā)送回復(fù)然后再繼續(xù)
異步:腳本允許頁(yè)面繼續(xù)其進(jìn)程并解決也許的回復(fù)。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。?跨域問(wèn)題簡(jiǎn)樸的理解就是由于JS同源策略的限制,a.com域名下的JS無(wú)法操作b.com或c.a.com下的對(duì)象,具體場(chǎng)景如下:??PS:(1)假如是端口或者協(xié)議導(dǎo)致的跨域問(wèn)題前端是無(wú)能為力的?(2)在跨域問(wèn)題上,域僅僅通過(guò)URL的首部來(lái)辨認(rèn)而不會(huì)嘗試判斷相同的IP地址相應(yīng)的域或者兩個(gè)域是否相應(yīng)一個(gè)IP。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。?前端對(duì)于跨域的解決辦法:
(1)document.domain+iframe?(2)動(dòng)態(tài)創(chuàng)建script標(biāo)簽??22,什么是閉包?下面這個(gè)ul,如何點(diǎn)擊每一列的時(shí)候alert其index?
<ulid=”test”><li>這是第一條</li><li>這是第二條</li><li>這是第三條</li></ul>
內(nèi)部函數(shù)被定義它的函數(shù)的外部區(qū)域調(diào)用的時(shí)候就產(chǎn)生了閉包。
(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,請(qǐng)給出異步加載js方案,不少于兩種?默認(rèn)情況javascript是同步加載的,也就是javascript的加載時(shí)阻塞的,后面的元素要等待javascript加載完畢后才干進(jìn)行再加載,對(duì)于一些意義不是很大的javascript,假如放在頁(yè)頭會(huì)導(dǎo)致加載很慢的話,是會(huì)嚴(yán)重影響用戶體驗(yàn)的。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。
異步加載方式:
(1)defer,只支持IE?(2)async:
(3)創(chuàng)建script,插入到DOM中,加載完畢后callBack,見(jiàn)代碼:?functionloadScript(url,callback){varscript=document.createElement("script")script.type="text/javascript";if(script.readyStat(yī)e){//IEscript.onreadystat(yī)echange=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,請(qǐng)?jiān)O(shè)計(jì)一套方案,用于保證頁(yè)面中JS加載完全。?varn=document.creat(yī)eElement("script");n.type="text/javascript";//以上省略部分代碼//ie支持script的readystatechange屬性(IEsupportthereadystatechangee(cuò)ventforscriptandcssnodes)if(ua.ie){n.onreadystatechange=function(){varrs=this.readyState;if('loaded'===rs||'complete'===rs){n.onreadystatechange=null;f(id,url);//回調(diào)函數(shù)}};//省略部分代碼//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,如何擴(kuò)展prototype??Ele.className=“***”;//***在css中定義,形式如下:.***{…}
A.prototype.B=C;
A是某個(gè)構(gòu)造函數(shù)的名字
B是這個(gè)構(gòu)造函數(shù)的屬性?C是想要定義的屬性的值
26,如何添加html元素的事件,有幾種方法.
(1)為HTML元素的事件屬性賦值
(2)在JS中使用ele.on***=function(){…}?(3)使用DOM2的添加事件的方法addEventListener或attachEvent?
27,documen.wr
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉首大學(xué)《高級(jí)語(yǔ)言程序設(shè)計(jì)B實(shí)驗(yàn)》2021-2022學(xué)年期末試卷
- 吉首大學(xué)《軟件工程導(dǎo)論》2021-2022學(xué)年期末試卷
- 《供應(yīng)鏈管理》課件 張靜芳 第9章 供應(yīng)鏈金融管理;第10章 供應(yīng)鏈績(jī)效管理
- 倉(cāng)庫(kù)出貨免責(zé)協(xié)議書(shū)范文范本
- 慈善籌款合作協(xié)議書(shū)范文模板
- 2024年大型養(yǎng)羊場(chǎng)出讓協(xié)議書(shū)模板范本
- 吉林師范大學(xué)《文學(xué)概論II》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024年大件搬運(yùn)維修合同范本
- 2022年公務(wù)員多省聯(lián)考《申論》真題(遼寧B卷)及答案解析
- 吉林師范大學(xué)《光電子技術(shù)》2021-2022學(xué)年期末試卷
- 形勢(shì)與政策-論朝鮮半島局勢(shì)
- 通達(dá)信指標(biāo)公式源碼主力動(dòng)向
- 潛油泵及潛油泵加油機(jī)講義
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 第8章 腹部檢查(講稿)
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 濕法脫硫工藝計(jì)算書(shū)
- 江西上饒鉛山汽車駕駛科目三考試線路
- (醫(yī)學(xué)PPT課件)NT檢查規(guī)范
- 導(dǎo)電炭黑的用途及使用方法
評(píng)論
0/150
提交評(píng)論