前端面試題

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?前端面試題



?什么是HTTP持久化和管線化

出現(xiàn)背景:?HTTP?最初的版本中囚戚,每進(jìn)行一次?HTTP?通信堕澄,就要斷開一次?TCP?連接(無連接)

為解決上述問題漾唉,HTTP/1.1?增加了持久連接(HTTP Persistent Connections )的方法蹄衷,其特點(diǎn)是正歼,只要一方未明確提出斷開連接赠尾,則另一方保持?TCP?連接狀態(tài)

管線化是指將多個(gè)?HTTP?請(qǐng)求整批發(fā)送力穗,在發(fā)送過程中不用等待對(duì)方響應(yīng)

管線化是在持久連接的基礎(chǔ)上實(shí)現(xiàn)的,管線化的實(shí)現(xiàn)气嫁,能夠同時(shí)并行發(fā)送多個(gè)請(qǐng)求当窗,而不需要一個(gè)接一個(gè)的等待響應(yīng)

為什么利用多個(gè)域名來存儲(chǔ)網(wǎng)站資源會(huì)更有效

CDN?緩存更方便

突破瀏覽器并發(fā)限制

節(jié)約?cookie?帶寬

節(jié)約主域名的連接數(shù),優(yōu)化頁面響應(yīng)速度

防止不必要的安全問題

使用XHTML的局限有哪些寸宵?

XHTML 與HTML的區(qū)別為:

XHTML 元素必須被正確地嵌套崖面。

XHTML 元素必須被關(guān)閉。

標(biāo)簽名必須用小寫字母梯影。

XHTML 文檔必須擁有根元素巫员。

局限:

所有的 XHTML 元素都必須被正確地嵌套,XHTML 必須擁有良好的結(jié)構(gòu)甲棍,所有的標(biāo)簽必須小寫简识,并且所有的 XHTML 元素必須被關(guān)閉。所有的 XHTML 文檔必須擁有 DOCTYPE 聲明感猛,并且 html七扰、head、title 和 body 元素必須存在陪白。雖然代碼更加的優(yōu)雅颈走,但缺少容錯(cuò)性,不利于快速開發(fā)咱士。

盒子垂直居中方法

position: absolute;left:50%;top:50%;width:400px;

height:400px;margin-left:-200px;margin-top:-200px;

?浮動(dòng)元素清除浮動(dòng)方法

四種方法:1立由、使用空標(biāo)簽清除浮動(dòng)2轧钓、使用overflow屬性。(overflow:auto锐膜;zoom:1″用于兼容IE6)3毕箍、使用after偽對(duì)象清除浮動(dòng)。 該方法只適用于非IE瀏覽器4枣耀、浮動(dòng)外部元素霉晕,float-in-float庭再。這種方法很簡單捞奕,就是把“#outer”元素也進(jìn)行浮動(dòng)(向左或者向右)。

?閉包的理解拄轻,javascript的作用域

a颅围、閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。b恨搓、在本質(zhì)上院促,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁。閉包的用途閉包可以用在許多地方斧抱。它的最大用處有兩個(gè)常拓,一個(gè)是前面提到的可以讀取函數(shù)內(nèi)部的變量,另一個(gè)就是讓這些變量的值始終保持在內(nèi)存中辉浦。 實(shí)例如下:根據(jù)作用域鏈的規(guī)則弄抬,底層作用域沒有聲明的變量,會(huì)向上一級(jí)找宪郊,找到就返回掂恕,沒找到就一直找,直到window的變量弛槐,沒有就返回undefined懊亡。這里明顯count 是函數(shù)內(nèi)部的flag2 的那個(gè)count 。

varcount=10;//全局作用域 標(biāo)記為flag1

functionadd(){varcount=0;//函數(shù)全局作用域 標(biāo)記為flag2

returnfunction(){? ? ? ? count+=1;//函數(shù)的內(nèi)部作用域alert(count);? ? }? ? }

vars = add()? ? s();//輸出1s();//輸出2

網(wǎng)站性能優(yōu)化的方法

1)將css和js文件放在獨(dú)立外部文件中引用

2) 使用gzip壓縮網(wǎng)頁內(nèi)容

3)將CSS放在頁面頂端乎串,JS文件放在頁面底端

4)使JS文件內(nèi)容最小化

5)盡量減少外部腳本的使用店枣,減少DNS查詢時(shí)間

( 文件合并

? 文件最小化/文件壓縮

? 使用 CDN 托管

? 緩存的使用(多個(gè)域名來提供緩存))

vuex?原理

vuex?僅僅是作為?vue?的一個(gè)插件而存在,不像?Redux,MobX?等庫可以應(yīng)用于所有框架叹誉,vuex?只能使用在?vue?上艰争,很大的程度是因?yàn)槠涓叨纫蕾囉?vue?的?computed?依賴檢測系統(tǒng)以及其插件系統(tǒng),

vuex?整體思想誕生于?flux,可其的實(shí)現(xiàn)方式完完全全的使用了?vue?自身的響應(yīng)式設(shè)計(jì)桂对,依賴監(jiān)聽甩卓、依賴收集都屬于?vue?對(duì)對(duì)象?Property?set?get?方法的代理劫持。最后一句話結(jié)束?vuex?工作原理蕉斜,vuex?中的?store?本質(zhì)就是沒有?template?的隱藏著的?vue?組件逾柿;


eval是做什么的

它的功能是把對(duì)應(yīng)的字符串解析稱js代碼運(yùn)行缀棍;

應(yīng)該避免使用eval,不安全,非常耗能.

setState?和?replaceState?的區(qū)別

setState?是修改其中的部分狀態(tài)机错,相當(dāng)于?Object.assign爬范,只是覆蓋,

不會(huì)減少原來的狀態(tài)?replaceState?是完全替換原來的狀態(tài)弱匪,相當(dāng)于賦值青瀑,將原來的?state?替換為另一個(gè)對(duì)象,如果新狀態(tài)屬性減少萧诫,那么?state?中就沒有這個(gè)狀態(tài)了


react?diff?原理

把樹形結(jié)構(gòu)按照層級(jí)分解斥难,只比較同級(jí)元素。

給列表結(jié)構(gòu)的每個(gè)單元添加唯一的?key?屬性帘饶,方便比較哑诊。

React?只會(huì)匹配相同?class?的?component(這里面的?class?指的是組件的名字)?合并操作,調(diào)用?component?的?setState?方法的時(shí)候,?React?將其標(biāo)記為?dirty.

到每一個(gè)事件循環(huán)結(jié)束,?React?檢查所有標(biāo)記?dirty?的?component?重新繪制.?選擇性子樹渲染及刻。開發(fā)人員可以重寫?shouldComponentUpdate?提高?diff?的性能

狀態(tài)(state)和屬性(props)之間有何區(qū)別

State?是一種數(shù)據(jù)結(jié)構(gòu)镀裤,用于組件掛載時(shí)所需數(shù)據(jù)的默認(rèn)值。

State?可能會(huì)隨著時(shí)間的推移而發(fā)生突變缴饭,但多數(shù)時(shí)候是作為用戶事件行為的結(jié)果暑劝。

Props(properties?的簡寫)則是組件的配置。props?由父組件傳遞給子組件颗搂,并且就子組件而言担猛,props?是不可變的(immutable)。

組件不能改變自身的?props峭火,但是可以把其子組件的?props?放在一起(統(tǒng)一管理)毁习。Props?也不僅僅是數(shù)據(jù)--回調(diào)函數(shù)也可以通過?props?傳遞。


.shouldComponentUpdate?是做什么的卖丸?

shouldComponentUpdate?這個(gè)方法用來判斷是否需要調(diào)用?render?方法重新描繪?dom纺且。因?yàn)?dom?的描繪非常消耗性能,如果我們能在?shouldComponentUpdate?方法中能夠?qū)懗龈鼉?yōu)化的?dom?diff?算法稍浆,可以極大的提高性能载碌。

當(dāng)你調(diào)用?setState?的時(shí)候,發(fā)生了什么事衅枫?

將傳遞給?setState?的對(duì)象合并到組件的當(dāng)前狀態(tài)嫁艇,這將啟動(dòng)一個(gè)和解的過程,構(gòu)建一個(gè)新的?react?元素樹弦撩,與上一個(gè)元素樹進(jìn)行對(duì)比(?diff?)步咪,從而進(jìn)行最小化的重渲染。

如果網(wǎng)頁內(nèi)容需要支持多語言益楼,你會(huì)怎么做猾漫?

下面這些問題需要考慮:

應(yīng)用字符集的選擇点晴,選擇UTF-8編碼

語言書寫習(xí)慣&導(dǎo)航結(jié)構(gòu)

數(shù)據(jù)庫驅(qū)動(dòng)型網(wǎng)站

React?優(yōu)勢

1、React?速度很快:它并不直接對(duì)?DOM?進(jìn)行操作悯周,引入了一個(gè)叫做虛擬?DOM?的概念粒督,安插在?javascript?邏輯和實(shí)際的?DOM?之間,性能好禽翼。

2屠橄、跨瀏覽器兼容:虛擬?DOM?幫助我們解決了跨瀏覽器問題,它為我們提供了標(biāo)準(zhǔn)化的?API闰挡,甚至在?IE8?中都是沒問題的锐墙。

3、一切都是?component:代碼更加模塊化解总,重用代碼更容易贮匕,可維護(hù)性高姐仅。

4花枫、單向數(shù)據(jù)流:Flux?是一個(gè)用于在?JavaScript?應(yīng)用中創(chuàng)建單向數(shù)據(jù)層的架構(gòu),它隨著?React?視圖庫的開發(fā)而被?Facebook?概念化掏膏。

5劳翰、同構(gòu)、純粹的?javascript:因?yàn)樗阉饕娴呐老x程序依賴的是服務(wù)端響應(yīng)而不是?JavaScript?的執(zhí)行馒疹,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化佳簸。

6、兼容性好:比如使用?RequireJS?來加載和打包颖变,而?Browserify?和?Webpack?適用于構(gòu)建大型應(yīng)用生均。它們使得那些艱難的任務(wù)不再讓人望而生畏。

在?React?當(dāng)中?Element?和?Component?有何區(qū)別腥刹?

React?Element?是描述屏幕上所見內(nèi)容的數(shù)據(jù)結(jié)構(gòu)马胧,是對(duì)于?UI?的對(duì)象表述。

典型的?React?Element?就是利用?JSX?構(gòu)建的聲明式代碼片然后被轉(zhuǎn)化為?createElement?的調(diào)用組合衔峰。

React?Component?是一個(gè)函數(shù)或一個(gè)類佩脊,可以接收參數(shù)輸入,并且返回某個(gè)?React?Element

action?執(zhí)行函數(shù)中第一個(gè)參數(shù)?store?從哪里獲取的垫卤?

store?初始化時(shí)威彰,所有配置的?action?和?mutation?以及?getters?均被封裝過。在執(zhí)行如?dispatch('submitOrder',?payload)的時(shí)候穴肘,actions?中?type?為?submitOrder?的所有處理方法都是被封裝后的歇盼,其第一個(gè)參數(shù)為當(dāng)前的?store?對(duì)象,所以能夠獲取到?{?dispatch,?commit,?state,?rootState?}?等數(shù)據(jù)评抚。


Javascript中豹缀,執(zhí)行時(shí)對(duì)象查找時(shí)赵讯,永遠(yuǎn)不會(huì)去查找原型的函數(shù)?

Object.hasOwnProperty(proName):是用來判斷一個(gè)對(duì)象是否有你給出名稱的屬性耿眉。不過需要注意的是边翼,此方法無法檢查該對(duì)象的原型鏈中是否具有該屬性,該屬性必須是對(duì)象本身的一個(gè)成員鸣剪。

DOM操作

(1)創(chuàng)建新節(jié)點(diǎn)

createDocumentFragment() //創(chuàng)建一個(gè)DOM片段

createElement() //創(chuàng)建一個(gè)具體的元素

createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)

(2)添加组底、移除、替換筐骇、插入

appendChild()

removeChild()

replaceChild()

insertBefore() //在已有的子節(jié)點(diǎn)前插入一個(gè)新的子節(jié)點(diǎn)

(3)查找

getElementsByTagName() //通過標(biāo)簽名稱

getElementsByName() //通過元素的Name屬性的值(IE容錯(cuò)能力較強(qiáng)债鸡,會(huì)得到一個(gè)數(shù)組,其中包括id等于name值的)

getElementById()?

.css?動(dòng)畫和?js?動(dòng)畫的差異

代碼復(fù)雜度铛纬,js?動(dòng)畫代碼相對(duì)復(fù)雜一些

動(dòng)畫運(yùn)行時(shí)厌均,對(duì)動(dòng)畫的控制程度上,js?能夠讓動(dòng)畫告唆,暫停棺弊,取消,終止擒悬,css?動(dòng)畫不能添加事件

動(dòng)畫性能看模她,js?動(dòng)畫多了一個(gè)?js?解析的過程,性能不如?css?動(dòng)畫好

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末懂牧,一起剝皮案震驚了整個(gè)濱河市侈净,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌僧凤,老刑警劉巖畜侦,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異躯保,居然都是意外死亡旋膳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門吻氧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溺忧,“玉大人,你說我怎么就攤上這事盯孙÷成” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵振惰,是天一觀的道長歌溉。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么痛垛? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任草慧,我火速辦了婚禮,結(jié)果婚禮上匙头,老公的妹妹穿的比我還像新娘漫谷。我一直安慰自己,他們只是感情好蹂析,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布舔示。 她就那樣靜靜地躺著,像睡著了一般电抚。 火紅的嫁衣襯著肌膚如雪惕稻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天蝙叛,我揣著相機(jī)與錄音俺祠,去河邊找鬼。 笑死借帘,一個(gè)胖子當(dāng)著我的面吹牛蜘渣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姻蚓,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宋梧,長吁一口氣:“原來是場噩夢啊……” “哼匣沼!你這毒婦竟也來了狰挡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤释涛,失蹤者是張志新(化名)和其女友劉穎加叁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唇撬,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡它匕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窖认。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫柬。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扑浸,靈堂內(nèi)的尸體忽然破棺而出烧给,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站季二,受9級(jí)特大地震影響竿滨,放射性物質(zhì)發(fā)生泄漏嘉抒。R本人自食惡果不足惜迹鹅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一炼绘、第九天 我趴在偏房一處隱蔽的房頂上張望织盼。 院中可真熱鬧巫财,春花似錦盗似、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至葵礼,卻和暖如春号阿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸳粉。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工扔涧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人届谈。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓枯夜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親艰山。 傳聞我的和親對(duì)象是個(gè)殘疾皇子湖雹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • Vue面試題 1.什么是 vue 生命周期 2.vue生命周期的作用是什么 3.第一次頁面加載會(huì)觸發(fā)哪幾個(gè)鉤子 4...
    在下高姓閱讀 2,194評(píng)論 0 11
  • 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn)曙搬,適合面試和開發(fā)小程序摔吏。并總結(jié)vue React htm...
    糖醋里脊120625閱讀 2,958評(píng)論 0 6
  • 1. webpack的看法 webpack是一個(gè)打包工具,可以使用webpack管理你的模塊依賴可以分析各模塊之間...
    月半女那閱讀 2,465評(píng)論 0 7
  • 昨夜的夢里 陽光很是刺眼灼人
    大圣的金箍棒我來扛閱讀 157評(píng)論 0 0
  • 今天看《我家那小子》里面海喬的媽媽16年的時(shí)候得了癌癥纵装,然后度過了艱難的歲月征讲,看到這個(gè)的時(shí)候,我也很難受橡娄,18...
    小小人吖閱讀 231評(píng)論 0 1