摘要:去公司面試前端,給了一套題,一看,大體上不會(huì),跟面試官說這題對(duì)我有些難,他說這是基礎(chǔ),你可以走了,于是我走了。回來查了才知道原來數(shù)組就有方法。一查我再掩面而泣,原來里就帶了就可以干這活。
去XX公司面試前端,給了一套題,一看,大體上不會(huì),跟面試官說這題對(duì)我有些難,他說這是基礎(chǔ),你可以走了,于是我走了。人艱不拆啊。
但是作為一個(gè)知錯(cuò)就改的好少年,我要發(fā)揚(yáng)不懂就問,不懂就去研究的優(yōu)良傳統(tǒng)。于是今天花了些時(shí)間把我有印象的題目和我的思考寫出來,按照面試官的說法是基礎(chǔ),但是基礎(chǔ)是重中之重啊,希望可以對(duì)各位有些幫助,如果你們有機(jī)會(huì)去XX公司面試前端,這也算作前車之鑒了。
題目1 數(shù)組排序給了一個(gè)數(shù)字?jǐn)?shù)組,有一位的有兩位的,讓你按照從大到小排序
基礎(chǔ)吧,簡(jiǎn)單吧,但我就是不會(huì)(掩面)?;貋聿榱瞬胖涝瓉頂?shù)組就有sort方法。
好吧,是不是我直接把數(shù)組sort一下就可以了呢,于是我試了一下
var arr = [11,2,28,5,8,4] arr.sort() //return [11, 2, 28, 4, 5, 8]
尼瑪,為什么11跑到2前面了,難道這個(gè)函數(shù)是按字來排序的,太不智能了吧。原來不帶參數(shù)的sort是按照字符編碼的順序進(jìn)行排序的。那么從大到小要怎么寫呢?
var arr = [11,2,28,5,8,4] arr.sort(function(a,b){return a-b})
要這樣寫,為什么是這樣呢?sort的參數(shù)是一個(gè)排序函數(shù),我們可以把參數(shù)a當(dāng)作數(shù)組里靠后的元素,b當(dāng)作數(shù)組里靠前的元素,排序函數(shù)return的值如果是正的,才執(zhí)行排序,所以最后排下來是從小到大,相反,如果return的是b-a,那么就是從大到小排序。
題目2 數(shù)組清除重復(fù)項(xiàng)這是另外一道題目,數(shù)組里有重復(fù)項(xiàng),要怎么清除。一查我再掩面而泣,原來js里就帶了filter就可以干這活。代碼如下:
myArray.filter(function(elem, pos,self){return self.indexOf(elem)== pos;})
filter是過濾的意思,filter通過一個(gè)函數(shù)的參數(shù)來選擇什么項(xiàng)需要被filter掉,函數(shù)返回true保留,false干掉。
函數(shù)參數(shù)帶三個(gè)參數(shù),第一個(gè)elem是這一項(xiàng)元素,第二個(gè)pos是這一項(xiàng)所在的位置,第三個(gè)self指的是執(zhí)行filter的數(shù)組。那么,你看,巧妙嗎:self.indexOf(elem) 是指這個(gè)項(xiàng)目在數(shù)組中的位置,位置是第一個(gè),也就是說同樣的項(xiàng)目在第一位和第5位都出現(xiàn)了,他返回的是0,而此時(shí)pos還是4,所以通過self.indexOf(elem) == pos 能判斷出這一項(xiàng)是不是重復(fù)出現(xiàn)的項(xiàng),如果是(返回false),則干掉它。
題目3 閉包和++這題我真不好意思說,丟人,我先寫出來吧:
function a(x){ return function b(y){ return y+x++ } } var a1 = a(10) var a2 = a(20) a1(10) a2(10)
問后面兩個(gè)值。我一看這不是考閉包嗎,幸虧我有點(diǎn)復(fù)習(xí),就是說x被帶進(jìn)去了,跟里面的匿名函數(shù)創(chuàng)建了一個(gè)閉包,所以一個(gè)是10,一個(gè)20。這都沒問題,下面一個(gè)值++,再加上10,好嘛,++優(yōu)先級(jí)顯然大于+,所以10+1 = 11 再加10,一個(gè)等于21,一個(gè)等于31.
尼瑪,回來一試我又傻掉了,a++雖然優(yōu)先級(jí)算,但是他返回的還是本身啊,++a才返回加過以后的值啊。理解的太不深刻了,該打。
題目4 說一個(gè)list里面有幾個(gè)元素,讓你寫一段代碼在點(diǎn)擊這個(gè)元素的時(shí)候返回他在list里的index好吧,我本來還想說終于有一道可以做的題了,但后面大字寫的請(qǐng)使用原生javascript實(shí)現(xiàn)讓我蒙了,完蛋,一道都做不對(duì)。
我先是在sf里提問:
這里
然后結(jié)合朋友們的答案,自己試著寫,我開始是這么寫的:
var nodeList = document.getElementsByTagName("li"); for(var i = 0;i < nodeList.length;i++){ nodeList[i].onclick = function(){ console.log(nodeList.indexOf(nodeList[i])); } }
我的思路是把所有的li放到一個(gè)數(shù)組里,然后遍歷他,為每個(gè)元素添加事件,事件觸發(fā)數(shù)組中當(dāng)前項(xiàng)所在的index。
但是現(xiàn)實(shí)無情的打擊了我,報(bào)錯(cuò),nodeList找不到indexOf方法,我幻想中的nodeList難道不是數(shù)組嗎。依然google,才知道怪不得那么多人使用那種復(fù)雜的方式聲明數(shù)組啊,方法如下:
var nodeList = Array.prototype.slice.call(document.getElementsByTagName("li"),0) ;
調(diào)用array對(duì)象的方法slice,把取得的li放進(jìn)去,這樣能保證這玩意是一個(gè)數(shù)組,具有數(shù)組的一切方法。
然后我繼續(xù)執(zhí)行,擦,不對(duì)循環(huán)里的i永遠(yuǎn)是最后一項(xiàng)的值,不對(duì),這不就是閉包里說的要避免的情況嗎?也就是說onclick的匿名函數(shù)和變量i之間建立起了一個(gè)閉包,而這個(gè)i是循環(huán)以后最后的那個(gè)值。
然后呢,上網(wǎng)搜解決辦法唄。原來解決循環(huán)閉包錯(cuò)誤的辦法就是再創(chuàng)建一個(gè)閉包函數(shù),結(jié)果這個(gè)函數(shù)只需要打印出循環(huán)中的i就行了,最終代碼如下:
var nodeList = Array.prototype.slice.call(document.getElementsByTagName("li"),0) ; function conIndex(i){ return function(){ console.log(i) } } for(var i = 0;i < nodeList.length;i++){ nodeList[i].onclick = conIndex(i); }
我沒有較系統(tǒng)的學(xué)習(xí)計(jì)算機(jī)知識(shí),我這個(gè)人學(xué)習(xí)還有一個(gè)特點(diǎn)特別不喜歡用術(shù)語,從高中開始我就喜歡把知識(shí)用我理解的方式講出來,雖然一直在做前端,但是越來越發(fā)現(xiàn)自己的知識(shí)不夠用,對(duì)js的理解還不夠深入。我想嘛,js知識(shí)就那么多,它增長(zhǎng)的速度只要趕不上我學(xué)習(xí)的速度,就總有一天我能把它全學(xué)會(huì),我的目標(biāo)是,下一次去面試的時(shí)候可以理直氣壯的把他們給的基礎(chǔ)題目完全搞定!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78012.html
摘要:美團(tuán)點(diǎn)評(píng)面試實(shí)習(xí)經(jīng)歷回想總結(jié)一下美團(tuán)實(shí)習(xí)經(jīng)歷給想去美團(tuán)的小伙伴一些參考順便積累點(diǎn)人品面試兩輪技術(shù)面一輪不刷人的月份的時(shí)候內(nèi)推了美團(tuán)實(shí)習(xí)簡(jiǎn)歷估計(jì)太水了沒等到面試機(jī)會(huì)四月的時(shí)候在美團(tuán)的學(xué)長(zhǎng)幫推了簡(jiǎn)歷直接給了幾天后接到電話面試三天順利完成兩輪技術(shù) 2017美團(tuán)點(diǎn)評(píng)面試實(shí)習(xí)經(jīng)歷 回想總結(jié)一下美團(tuán)實(shí)習(xí)經(jīng)歷,給想去美團(tuán)的小伙伴一些參考.順便積累點(diǎn)人品. 面試 兩輪技術(shù)面+一輪不刷人的HR3月份的...
摘要:美團(tuán)點(diǎn)評(píng)面試實(shí)習(xí)經(jīng)歷回想總結(jié)一下美團(tuán)實(shí)習(xí)經(jīng)歷給想去美團(tuán)的小伙伴一些參考順便積累點(diǎn)人品面試兩輪技術(shù)面一輪不刷人的月份的時(shí)候內(nèi)推了美團(tuán)實(shí)習(xí)簡(jiǎn)歷估計(jì)太水了沒等到面試機(jī)會(huì)四月的時(shí)候在美團(tuán)的學(xué)長(zhǎng)幫推了簡(jiǎn)歷直接給了幾天后接到電話面試三天順利完成兩輪技術(shù) 2017美團(tuán)點(diǎn)評(píng)面試實(shí)習(xí)經(jīng)歷 回想總結(jié)一下美團(tuán)實(shí)習(xí)經(jīng)歷,給想去美團(tuán)的小伙伴一些參考.順便積累點(diǎn)人品. 面試 兩輪技術(shù)面+一輪不刷人的HR3月份的...
摘要:失業(yè)的兩周真的也是爽啊,每天打打球,去面試面試,當(dāng)作逛街。為什么走我一定是瘋了,我才辭職的吧。我一直覺得工作是自己喜歡,不是因?yàn)樯钏?。錢,只是說能力的體現(xiàn)。但是不忘初心,善始善終,生活才剛剛開始啊。。。? 失業(yè)的第二周,一邊玩的很開心一邊又擔(dān)心工作,一邊投簡(jiǎn)歷一邊面試,一邊嫌棄廠太小不想去,一邊大廠又沒有消息,糾結(jié)糾結(jié)。 ? 從大一暑假邊上課邊工作到后來全職工作,其中寒暑假無休,畢業(yè)跟實(shí)...
摘要:自我沉淀工作有周報(bào)月總結(jié)季度年終等各種總結(jié),那么自我學(xué)習(xí)呢也一樣,今天寫下的點(diǎn)滴,就是對(duì)明天的自己最好的饋贈(zèng)禮物。 showImg(https://segmentfault.com/img/bVbm9ZZ?w=1008&h=298); 前言 歲月不居,時(shí)節(jié)如流,轉(zhuǎn)眼間都到2019年1月中旬了,時(shí)間過的好快,說好的周末睡到自然醒,但還是跟以往一樣,到上班時(shí)間就醒了,這算不算心里只有工作呢...
閱讀 949·2021-09-27 13:36
閱讀 905·2021-09-08 09:35
閱讀 1075·2021-08-12 13:25
閱讀 1447·2019-08-29 16:52
閱讀 2915·2019-08-29 15:12
閱讀 2736·2019-08-29 14:17
閱讀 2622·2019-08-26 13:57
閱讀 1021·2019-08-26 13:51