版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
技術(shù)宅——你的面試成功了嗎?javascript篇技術(shù)宅除了上網(wǎng)、睡覺之外還會(huì)做些什么?跟HR能聊得來嗎?經(jīng)典面試你知道嗎?一切難不住技術(shù)宅,但是可認(rèn)為將來的技術(shù)宅寫一下面試題型。
?秒殺大部分公司的面試題,精心整理合集,值得收藏(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腳本兼容性問題?(1)window.event:?表達(dá)當(dāng)前的事件對(duì)象,IE有這個(gè)對(duì)象,F(xiàn)F沒有,FF通過給事件解決函數(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可讀寫?(7)innerTexttextContentouterHTML
IE:支持innerText,outerHTML?FF:支持textContent?(8)是否可用id代替HTML元素?IE:可以用id來代替HTML元素
FF:不可以
這里只列出了常見的,尚有不少,更多的介紹可以參看JavaScript在IE瀏覽器和Firefox瀏覽器中的差異總結(jié)
5,規(guī)避javascript多人開發(fā)函數(shù)重名問題
(1)可以開發(fā)前規(guī)定命名規(guī)范,根據(jù)不同開發(fā)人員開發(fā)的功能在函數(shù)前加前綴?(2)將每個(gè)開發(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還需要特殊解決
思緒如下:
在頁面中添加一個(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,編寫一個(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,編寫一個(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,寫出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)寫出函數(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)頁中實(shí)現(xiàn)一個(gè)計(jì)算當(dāng)年還剩多少時(shí)間的倒數(shù)計(jì)時(shí)程序,規(guī)定網(wǎng)頁上實(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)如何拼寫,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)擊頁面中的任意標(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)擊頁面中的任意標(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)編寫一個(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ū)別?如何解決跨域問題?
Ajax是多種技術(shù)組合起來的一種瀏覽器和服務(wù)器交互技術(shù),基本思想是允許一個(gè)互聯(lián)網(wǎng)瀏覽器向一個(gè)遠(yuǎn)程頁面/服務(wù)做異步的http調(diào)用,并且用收到的數(shù)據(jù)來更新一個(gè)當(dāng)前web頁面而不必刷新整個(gè)頁面。該技術(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ù)
異步:腳本允許頁面繼續(xù)其進(jìn)程并解決也許的回復(fù)。臥龍閣網(wǎng)wolonge.com公司點(diǎn)評(píng),各種公司工作面試經(jīng)驗(yàn)分享。?跨域問題簡(jiǎn)樸的理解就是由于JS同源策略的限制,a.com域名下的JS無法操作b.com或c.a.com下的對(duì)象,具體場(chǎng)景如下:??PS:(1)假如是端口或者協(xié)議導(dǎo)致的跨域問題前端是無能為力的?(2)在跨域問題上,域僅僅通過URL的首部來辨認(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,假如放在頁頭會(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,見代碼:?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ì)一套方案,用于保證頁面中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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大興安嶺貨運(yùn)從業(yè)資格證模擬考試題目
- 2025年阜陽貨運(yùn)從業(yè)資格證試題庫及答案
- 2024全新房地產(chǎn)項(xiàng)目場(chǎng)地承包合同模板下載3篇
- 2024年新能源汽車充電樁建設(shè)合作協(xié)議
- 2024全包家庭裝修合同:智能家居系統(tǒng)與智能家居設(shè)備集成3篇
- 2024完整烤鴨店環(huán)保設(shè)施安裝合同3篇
- 導(dǎo)體和絕緣體課件
- 2024年生態(tài)環(huán)保石渣交易合同模板3篇
- 2025空運(yùn)貨物進(jìn)口運(yùn)輸代理合同
- 2024年大型國(guó)際馬拉松賽事志愿者支援協(xié)議書3篇
- 《改善前后對(duì)比圖》課件
- 多元化宣教方式提高健康教育的有效性
- 全文逐條解讀公職人員政務(wù)處分法
- 林木分子標(biāo)記輔助育種
- 學(xué)校護(hù)理實(shí)訓(xùn)室建設(shè)方案
- 《品保QC培訓(xùn)資料》課件
- 《藥物制劑工程》課程教學(xué)大綱全套
- 《觀光園藝》課件
- 2023年創(chuàng)建智慧校園工作總結(jié)
- 國(guó)開電大《人文英語3》一平臺(tái)機(jī)考真題(第十三套)
- 承德圍場(chǎng)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)精選卷(含答案)
評(píng)論
0/150
提交評(píng)論