自己寫的面試題醋寝,自己想的答案搞挣!

大家都知道‘不忘初心,方得始終’音羞,但多少人知道‘初心易得囱桨,始終難守’。時代在變化嗅绰,技術(shù)在發(fā)展舍肠,基礎(chǔ)沒變搀继。學習新技術(shù)的時候,不應(yīng)把基礎(chǔ)落下翠语。

1.前言

因為機緣巧合叽躯,讓當了無數(shù)次面試者的我,當上了面試官肌括,也和幾個面試者交流過点骑。既然要應(yīng)對面試者,我就當然要準備面試題了谍夭,好讓我大概知道面試者是什么水平黑滴。這個時候,也該詳解下慧库,自己的寫的那些題目跷跪。因為題目是我自己寫的馋嗜,并不是網(wǎng)上摘的齐板,所以知識點比較基礎(chǔ),也不全面葛菇。如果大家對面試題有什么建議甘磨,歡迎指點。

2.考點-面向?qū)ο?/p>

需求:定義‘我吃火鍋

面向過程的思想是:動作(我,吃火鍋)

代碼實現(xiàn)方面:

//面向過程leteat=function(who,someThing){console.log(`${who}吃${someThing}`);}eat('我','火鍋');//我吃火鍋

使用面向?qū)ο蟮姆绞礁膶懸幌逻@個實例眯停。

這道題济舆,只希望有一個面向?qū)ο蟮囊馑荚谶@里就行了,我期待的答案是這樣的莺债。

letperson={name:'守候',eat:function(someThing){console.log(`${this.name}吃${someThing}`);? ? }}person.eat('火鍋');

更好的方式看下面這篇文章:JavaScript:面試頻繁出現(xiàn)的幾個易錯點滋觉。這里不展開講。

3.考點-預(yù)解析

根據(jù)以下代碼齐邦,寫出結(jié)果

這道題我印象很深刻椎侠,因為是我在一年多以前,在Q群看到有人說直自己各種精通的時候措拇,我就出這道題來提問我纪,一抓一個準,至今那些各種精通的人丐吓,沒一個回答出來的浅悉。即使是面試題,也有人掉坑券犁。

之前發(fā)布一篇文章的時候术健,有提及過這個面試題,也被人罵過粘衬,大概的意思是:現(xiàn)在都什么年代了荞估,ES都不知道更新多少版本了比被,誰還這么寫代碼?看到這個我并沒有回應(yīng)泼舱,也沒打算和誰對撕等缀。但是我腦子里想到的第一件事就是:以前,新聞有條微博說70%網(wǎng)友贊成數(shù)學退出高考娇昙,有人談定回答:數(shù)學就是用來淘汰這70%人的尺迂。在這里我想說,雖然開發(fā)上這樣寫代碼肯定會被批斗冒掌,但是面試題噪裕,考的不只是開發(fā)上遇到的問題,也有考一些基礎(chǔ)知識股毫。這道題就是其中之一膳音。而且,現(xiàn)在我也覺得還有必要知道這個知識铃诬,還沒到全民寫 ES6 的時代祭陷,拋棄 ES5 的時代。

alert(a)a();vara=3;functiona(){

? ? alert(10)

}alert(a)a=6;a();//------------分割線------------------alert(a)a();vara=3;vara=function(){

? ? alert(10)

}alert(a)a=6;a();

這個之前寫文章有寫過趣席,現(xiàn)在賦值粘貼下兵志。?

考點其實就兩個,第一變量聲明提前宣肚,第二函數(shù)聲明優(yōu)先于變量聲明想罕!

下面我簡單分析一下,

第一部分運行結(jié)果:

1.函數(shù)聲明優(yōu)先于變量聲明霉涨,所以按价,剛開始,a就是function a(){alert(10)}?笙瑟,就會看到這個函數(shù)楼镐。

2.a(),執(zhí)行函數(shù)逮走,就是出現(xiàn)alert(10)

3.執(zhí)行了var a=3;?所以alert(a)就是顯示3

4.由于a不是一個函數(shù)了鸠蚪,所以往下在執(zhí)行到a()的時候, 報錯师溅。

第二部分運行結(jié)果:

1.underfind

2.報錯

在之前說過茅信,預(yù)解析是把帶有var和function關(guān)鍵字的事先聲明芹血,但不會賦值哲戚。所以一開始是underfind,然后報錯是因為執(zhí)行到a()的時候囚戚,a并不是一個函數(shù)窿锉。

//函數(shù)表達式酌摇,和變量聲明同等vara=function(){? ? alert(10)}//函數(shù)聲明膝舅,優(yōu)于變量聲明? ? functiona(){? ? alert(10)}

4.考點-事件委托

一個簡單的需求,比如想給ul下面的li加上點擊事件窑多,點擊哪個li仍稀,就顯示那個li的innerHTML。這個貌似很簡單埂息!代碼如下技潘!

  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • varoUl=document.getElementById("ul-test");varoLi=oUl.getElementsByTagName("li");for(vari=0,len=oLi.length;i

    問題在于:

    1.for循環(huán),循環(huán)的是li千康,10個li就循環(huán)10次享幽,綁定10次事件,100個就循環(huán)了100次拾弃,綁定100次事件值桩!

    2.如果li不是本來就在頁面上的,是未來元素豪椿,是頁面加載了奔坟,再通過js動態(tài)加載進來了,上面的寫法是無效的砂碉,點擊li是沒有反應(yīng)的蛀蜜!

    應(yīng)該怎么解決以上問題?

    在道題的考點就是事件委托增蹭,就是把事件綁在ul上面,之后的li就可以隨便添加磅摹。代碼如下

    varoUl=document.getElementById("ul-test");oUl.addEventListener("click",function(ev){varev=ev||window.event;vartarget=ev.target||ev.srcElement;//如果點擊的最底層是li元素if(target.tagName.toLowerCase()==='li'){? ? ? ? alert(target.innerHTML)? ? }})

    但是有些面試者就是從vue的角度回答這個問題--利用v-for進行綁定滋迈。雖然我們公司的項目是使用vue,這樣說也沒錯户誓,但是這道題我沒提及到vue饼灿,說vue的,反而就是一個扣分項了帝美。

    5.考點-DOM操作

    比如有一個需求碍彭,往ul里面添加10個li,如下代碼

    varoUl=document.getElementById("ul-test");for(vari=0;i<10;i++){varoLi=document.createElement('li');? ? ? ? ? ? oLi.innerHTML=i;? ? ? ? ? ? oUl.appendChild(oLi);? ? ? ? }

    問題:這里相當于操作了10次DOM悼潭,有什么方案庇忌,減少DOM的操作次數(shù)?可寫代碼簡單說明舰褪。

    這道題皆疹,有幾個人還是從vue的角度來解決問題(v-for,data)占拍,雖然這樣不能說錯略就,但是我題目沒提及vue的任何東西捎迫。考點就是利用innerHTML或者文檔碎片的形式表牢。

    代碼如下

    innerHTML

    varoUl=document.getElementById("ul-test");//定義臨時變量var_html='';for(vari=0;i<10;i++){//保存臨時變量_html+='

  • '+i+'
  • '}//添加元素oUl.innerHTML=_html;

    文檔碎片-createDocumentFragment

    varoUl=document.getElementById("ul-test"),_frag =document.createDocumentFragment();for(vari=0;i<10;i++){varoLi=document.createElement('li');? ? oLi.innerHTML=i;//把元素添加進文檔碎片_frag.appendChild(oLi);}//把文檔碎片添加進元素oUl.appendChild(_frag);

    6.考點-對象深拷貝

    寫出一個函數(shù)窄绒,實現(xiàn)對,對象的深拷貝

    要求實現(xiàn)一個函數(shù)clone崔兴。

    letobj={? ? name:'小明',? ? age:24}letobj1=clone(obj);

    修改obj1颗祝,不會影響到obj的值。

    這道題恼布,在obj上面螺戳,我故意只寫一層,對象里面沒有嵌套數(shù)組或?qū)ο笳酃褪窍肟聪旅嬖囌吣懿荒芡钐幭胍幌戮笥住=Y(jié)果面試者都踩坑了。但是可以理解爽待,畢竟大家都是針對題目而論损同。

    基本上回答都是類似下面這樣

    functionclone(object){let_obj={}for(letkeyinobject){_obj[key]=object[key];? ? }return_obj;}letobj1=clone(obj);//-------------------或者-------------functionclone(obj){let_obj=Object.assign({},object);return_obj;}letobj1=clone(obj);

    這個方案,目的是達到了鸟款,但是如果obj里面的屬性膏燃,嵌套著對象或者數(shù)組,這個就有問題了何什。所以理想的解決方案應(yīng)該是這個组哩。

    functionclone(object){let_obj=JSON.parse(JSON.stringify(obj))}

    這種方案,如果需要屬性值是函數(shù)或者是null处渣,undefined伶贰,就會被過濾掉。保險的做法是下面這樣罐栈。原理也很簡單黍衙,就是逐個遍歷,如果檢測到屬性值是時引用類型就用當前屬性進行遍歷荠诬。

    functionclone(obj){if(!obj&& typeof obj!=='object'){return;? ? ? }varnewObj=obj.constructor===Object?{}:[];for(varkeyinobj){newObj[key] =(obj[key]&&typeof obj[key]==='object')?clone(obj[key]):obj[key];? ? ? ? }returnnewObj; }

    7.其它考點

    其余幾道題都是比較籠統(tǒng)的題目琅翻,沒有唯一的解決方案,這里就不統(tǒng)一回答了柑贞!

    1.如果設(shè)計中使用了非標準的字體方椎,你該如何去實現(xiàn)?

    圖片凌外,字體圖標代替辩尊,如果是比較小的英文字體可以使用css3的@font-face。

    2.在開發(fā)項目上康辑,知道那些優(yōu)化的方式摄欲,提升性能轿亮,減少頁面加載時間,代碼質(zhì)量胸墙,代碼可讀性等方面

    性能優(yōu)化-壓縮代碼我注,懶加載,預(yù)加載迟隅,合并請求但骨,小圖片轉(zhuǎn)換base64編碼,資源按需加載等智袭。

    代碼質(zhì)量優(yōu)化-命名有意義奔缠,適當?shù)淖⑨專苊饩薮蠛瘮?shù)吼野,避免對象強耦合校哎,代碼邏輯清晰等。

    3.列舉Es6瞳步,常用的一些新特性闷哆。

    參考資料如下:

    ECMAScript 6 入門

    30分鐘掌握ES6/ES2015核心內(nèi)容(上)

    30分鐘掌握ES6/ES2015核心內(nèi)容(下)

    實例感受-es6的常用語法和優(yōu)越性

    ES6 Promise 用法講解

    4.Div+css排版的時候,從頁面渲染和代碼可讀性的角度单起,應(yīng)該注意些什么抱怔?

    標簽語義化,class和id命名有意義并且命名統(tǒng)一規(guī)范嘀倒,css避免深嵌套(3級就得注意)屈留,避免@import,!important括儒,和*通配符绕沈,避免行內(nèi)樣式,在head引入css等帮寻。

    參考:

    21條CSS高級技巧

    css寫作建議和性能優(yōu)化小結(jié)

    5.說下自己對模塊化開發(fā)的理解,以及模塊化開發(fā)的好處赠摇。

    提高開發(fā)效率固逗,有利團隊協(xié)同開發(fā),

    避免全局變量污染藕帜,命名沖突烫罩,

    方便代碼的復(fù)用維護等。

    1洽故、具有1-5工作經(jīng)驗的贝攒,面對目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的时甚。

    2隘弊、在公司待久了哈踱,過得很安逸,但跳槽時面試碰壁梨熙。需要在短時間內(nèi)進修开镣、跳槽拿高薪的。

    3咽扇、如果沒有工作經(jīng)驗邪财,但基礎(chǔ)非常扎實,對java工作機制质欲,常用設(shè)計思想树埠,常用java開發(fā)框架掌握熟練的。

    4嘶伟、覺得自己很牛B怎憋,一般需求都能搞定。但是所學的知識點沒有系統(tǒng)化奋早,很難在技術(shù)領(lǐng)域繼續(xù)突破的盛霎。

    5.群號:java高級架構(gòu)群:725633148?備注好信息!

    6.阿里Java高級大牛直播講解知識點耽装,分享知識愤炸,多年工作經(jīng)驗的梳理和總結(jié)?帶著大家全面?科學地建立自己的技術(shù)體系和技術(shù)認知!

    8.小結(jié)

    面試題就是這10道掉奄,我自己的解決方案也說完了规个。雖熱我們公司的技術(shù)棧用的主要是vue,webpack這一些姓建,我面試交流的時候诞仓,也會問相關(guān)的問題,但是我在面試題里面我不出關(guān)于vue速兔,webpack這些題目墅拭,就問文章這些題目,就是想知道面試者的基礎(chǔ)如何(因為現(xiàn)在的行情涣狗,很多人都是注重學習熱門的框架谍婉,庫,工具等镀钓,卻把基礎(chǔ)落下了)穗熬。基礎(chǔ)好的話丁溅,框架不難上手唤蔗,但是基礎(chǔ)不牢,就熟悉兩三的框架和一些構(gòu)建工具,以后技術(shù)轉(zhuǎn)型可能會有阻力〖斯瘢現(xiàn)在前端的發(fā)展很快箱季,技術(shù)很雜,但是基礎(chǔ)一直沒變领虹。建議大家在學習新技術(shù)的同時规哪,不要忘記鞏固基礎(chǔ)。

    最后塌衰,如果大家對面試題有什么解法建議或者建議出什么題型诉稍,歡迎指點。

    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    • 序言:七十年代末最疆,一起剝皮案震驚了整個濱河市杯巨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌努酸,老刑警劉巖服爷,帶你破解...
      沈念sama閱讀 211,817評論 6 492
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異获诈,居然都是意外死亡仍源,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 90,329評論 3 385
    • 文/潘曉璐 我一進店門舔涎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼踩,“玉大人,你說我怎么就攤上這事亡嫌『坑冢” “怎么了?”我有些...
      開封第一講書人閱讀 157,354評論 0 348
    • 文/不壞的土叔 我叫張陵挟冠,是天一觀的道長于购。 經(jīng)常有香客問我,道長知染,這世上最難降的妖魔是什么肋僧? 我笑而不...
      開封第一講書人閱讀 56,498評論 1 284
    • 正文 為了忘掉前任,我火速辦了婚禮控淡,結(jié)果婚禮上色瘩,老公的妹妹穿的比我還像新娘。我一直安慰自己逸寓,他們只是感情好,可當我...
      茶點故事閱讀 65,600評論 6 386
    • 文/花漫 我一把揭開白布覆山。 她就那樣靜靜地躺著竹伸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勋篓,一...
      開封第一講書人閱讀 49,829評論 1 290
    • 那天吧享,我揣著相機與錄音,去河邊找鬼譬嚣。 笑死钢颂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的拜银。 我是一名探鬼主播殊鞭,決...
      沈念sama閱讀 38,979評論 3 408
    • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尼桶!你這毒婦竟也來了操灿?” 一聲冷哼從身側(cè)響起,我...
      開封第一講書人閱讀 37,722評論 0 266
    • 序言:老撾萬榮一對情侶失蹤泵督,失蹤者是張志新(化名)和其女友劉穎趾盐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體小腊,經(jīng)...
      沈念sama閱讀 44,189評論 1 303
    • 正文 獨居荒郊野嶺守林人離奇死亡救鲤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點故事閱讀 36,519評論 2 327
    • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秩冈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本缠。...
      茶點故事閱讀 38,654評論 1 340
    • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖漩仙,靈堂內(nèi)的尸體忽然破棺而出搓茬,到底是詐尸還是另有隱情,我是刑警寧澤队他,帶...
      沈念sama閱讀 34,329評論 4 330
    • 正文 年R本政府宣布卷仑,位于F島的核電站,受9級特大地震影響麸折,放射性物質(zhì)發(fā)生泄漏锡凝。R本人自食惡果不足惜,卻給世界環(huán)境...
      茶點故事閱讀 39,940評論 3 313
    • 文/蒙蒙 一垢啼、第九天 我趴在偏房一處隱蔽的房頂上張望窜锯。 院中可真熱鬧,春花似錦芭析、人聲如沸锚扎。這莊子的主人今日做“春日...
      開封第一講書人閱讀 30,762評論 0 21
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽驾孔。三九已至芍秆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翠勉,已是汗流浹背妖啥。 一陣腳步聲響...
      開封第一講書人閱讀 31,993評論 1 266
    • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留对碌,地道東北人荆虱。 一個月前我還...
      沈念sama閱讀 46,382評論 2 360
    • 正文 我出身青樓,卻偏偏與公主長得像朽们,于是被迫代替她去往敵國和親怀读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
      茶點故事閱讀 43,543評論 2 349

    推薦閱讀更多精彩內(nèi)容

    • 請參看我github中的wiki华坦,不定期更新愿吹。https://github.com/ivonzhang/Front...
      zhangivon閱讀 7,116評論 2 19
    • HTML+CSS 1.對WEB標準以及W3C的理解與認識 標簽閉合、標簽小寫惜姐、不亂嵌套犁跪、提高搜索機器人搜索幾率、使...
      aymincoder閱讀 5,054評論 2 189
    • 本章轉(zhuǎn)載自新浪博客網(wǎng)友:blog.sina.com.cn/s/blog_7f5571aa0102w2tv.html...
      czboy閱讀 1,452評論 0 11
    • end方法一般在一次請求中只調(diào)用一次,而且他會阻斷程序,就是后面的代碼不會執(zhí)行歹袁,表示我們的響應(yīng)已經(jīng)完成 在實際開發(fā)...
      小草莓蹦蹦跳閱讀 536評論 0 0
    • 《時空歷險記--超時空詭異事件》 法國標志性建筑--埃菲爾鐵塔神秘失蹤坷衍!--《每日新聞》報。 “這年頭真...
      睡覺的石頭閱讀 587評論 1 1