1、前端面試題分析

1、? ?function fun(n,o) {
????????????console.log(o)
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? fun:function(m){
????????????????????return fun(m,n);
????????????????}
????????????}
????????}
????????var fn = fun(0).fun(1)
? ? ? ? fn.fun(2)
????????fn.fun(3)
? ?這個(gè)也是很經(jīng)典的面試題了,首先這個(gè)里面考的是閉包的知識(shí)。答案是會(huì)打印undefined, 0,1,1.下面我們來分析下這個(gè)題,首先要能區(qū)分fun函數(shù)里面的兩個(gè)fun地方,第一個(gè)是函數(shù)對(duì)象返回的值,是一個(gè)名為fun的函數(shù),在這個(gè)函數(shù)里面返回的fun函數(shù)才是這個(gè)最外層的fun函數(shù)本身。這里由于返回的fun函數(shù)引用了參數(shù)n,所以這個(gè)參數(shù)會(huì)在保留內(nèi)存中,而不會(huì)被釋放掉.
? ? ?再來看題目.? fun(0), 這里傳入了一個(gè)參數(shù)0,所以 n = 0, o = undefined, 所以打印undefined, 介質(zhì)fun(0).fun(1), 調(diào)用函數(shù)返回的fun變量,同時(shí)傳入?yún)?shù)m = 1, 所以最后返回的這樣一個(gè)函數(shù)?
? ? fun (1, 0)? ?這里執(zhí)行console.log(o), 此時(shí) o 為0, 所以打印0.? ? 然后fn是什么,fn是fun(1, 0)返回的fun變量, 所以fn.fun(2)和fn.fun(3)都是一樣會(huì)打印1.

2、css選擇器(遺忘), 要求寫出div后面的p標(biāo)簽的屬性? ? ?div +? p
3、css寫出三角形
? ? ? 這里我們是通過css的border屬性來寫出三角形,之前一直不太理解這個(gè)原理,現(xiàn)在用自己的理解來解釋這種寫法。首先來看border的作用,根據(jù)盒模型,border是盒子寬度里面的一部分。
? ? ? ?div { width: 5px; height: 5px; border: 5px solid #ccc}
這個(gè)時(shí)候div實(shí)際寬度為10px, 10px。
? ? ? ? div { width: 0; height: 0; border: 4px solid #ccc}
這個(gè)div為寬高為4px的正方形.
? ? ? ? div { width: 5px; height: 5px; border-left: 5px solid #000;border-top: 5px solid #ff0000;border-left: 5px solid #ff0000;border-left: 5px solid #000;??}

? ? ? ? 四個(gè)邊框顏色不一致的時(shí)候,效果就出來了,也就是說我們正常的border: 5px solid #ccc, 其實(shí)也是四個(gè)部分組成的,這四個(gè)邊框的具體形狀取決于盒子本身的寬度,比如
? ? ? ? div{height: 10px;width: 10px;border-left: 10px solid red;border-right: 10px solid red;border-bottom: 10px solid black;border-top: 10px solid black;}

? ? ? ? 我的理解是這個(gè)盒子本身是一個(gè)正方形,這個(gè)時(shí)候給它去添加border,是從某一個(gè)邊去引申出去的,而它的原則是到這條邊的距離是我們?cè)O(shè)置的10px solid red中的10px, 基于這個(gè)原則,最后我們看到的總是一個(gè)規(guī)則的方形,如果剛好4個(gè)距離一致則是正方形,這個(gè)原則同時(shí)也是基于盒模型的,一個(gè)盒子的寬度/寬度=? width/height + border + margin + padding。。再來看上面那個(gè)當(dāng)div的寬高為0時(shí),所以div只是一個(gè)點(diǎn),這個(gè)時(shí)候border就是從這個(gè)點(diǎn)引申出去。
? ? ? ?在知道了這些的情況下,我們就可以寫出一個(gè)三角形了,?div{height: 0px;width: 0px;border-left: 10px solid transparent;border-right: 10px solid transparent;border-bottom: 10px solid red;}, 只給border-left一個(gè)值,將border-top和border-bottom設(shè)置值并且將顏色設(shè)為透明,這樣他們的部分就隱藏掉了。


? 4、如何從1000萬個(gè)數(shù)里面挑選出前100最大的數(shù)
? ? 這里涉及到算法方面的問題,因?yàn)閷?duì)算法不是很專業(yè),所以也只是想出了一種類似二分法的解決方案,
????(1) 遞歸對(duì)所有數(shù)據(jù)分成[a,b)b(b,d]兩個(gè)區(qū)間,(b,d]區(qū)間內(nèi)的數(shù)都是大于[a,b)區(qū)間內(nèi)的數(shù)
????(2) 對(duì)(b,d]重復(fù)(1)操作,直到最右邊的區(qū)間個(gè)數(shù)小于100個(gè)。注意[a,b)區(qū)間不用劃分
????(3) 返回上一個(gè)區(qū)間,并返回此區(qū)間的數(shù)字?jǐn)?shù)目。接著方法仍然是對(duì)上一區(qū)間的左邊進(jìn)行劃分,分為[a2,b2)b2(b2,d2]兩個(gè)區(qū)間,?。╞2,d2]區(qū)間。如果個(gè)數(shù)不夠,繼續(xù)(3)操作,如果個(gè)數(shù)超過100的就重復(fù)1操作,直到最后右邊只有100個(gè)數(shù)為止。?

5、已知有一個(gè)排序好的數(shù)組和給定的一個(gè)數(shù)字x, 要得到其中數(shù)組中兩個(gè)元素,滿足這兩個(gè)元素的和為x,要求算法時(shí)間復(fù)雜度為O(n), n為數(shù)組長(zhǎng)度.
? ? var arr = [0, 1,2,3,4,5,6,7]
? ? 1、可以直接循環(huán)遍歷數(shù)組arr, 判斷arr.indexOf(x - arr[i]) > -1,? 這樣的話算法時(shí)間復(fù)雜度最大為O(n)
? ? 2、如果不用indexOf內(nèi)置函數(shù)去判斷的話怎么做?
? ? ? ? 因?yàn)閿?shù)組時(shí)順序的,所以可以由前后向中間遍歷,一前一后兩個(gè)指針來找到兩個(gè)數(shù)的和等于x。

6、要求有這樣一個(gè)后退按鈕,從b頁(yè)面返回到a頁(yè)面的時(shí)候讓a頁(yè)面達(dá)到緩存效果。
? ? ?用keep-alive結(jié)合路由中meta設(shè)置變量,在b頁(yè)面監(jiān)聽beforeRouterEnter, 當(dāng)上一個(gè)頁(yè)面時(shí)a頁(yè)面時(shí)改變變量值,在a頁(yè)面里面activated函數(shù)中判斷當(dāng)滿足條件時(shí)不重新加載數(shù)據(jù),否則加載數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,861評(píng)論 1 45
  • 請(qǐng)參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,778評(píng)論 2 19
  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱: 工作地點(diǎn) 崗位名...
    lilyping閱讀 2,015評(píng)論 0 1
  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,990評(píng)論 0 8
  • 時(shí)間:2017年9月23日13:30-17:30 地點(diǎn):上海市黃浦區(qū)福州路431號(hào)吳宮大酒店3樓花都咖啡廳(上海書...
    璇吾閱讀 333評(píng)論 0 0

友情鏈接更多精彩內(nèi)容