前端面試題

你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級之間的不同嗎?

優(yōu)雅降級:Web站點(diǎn)在所有新式瀏覽器中都能正常工作职恳,如果用戶使用的是老式瀏覽器夫植,則代碼會檢查以確認(rèn)它們是否能正常工作。由于IE獨(dú)特的盒模型布局問題,針對不同版本的IE的hack實(shí)踐過優(yōu)雅降級了,為那些無法支持功能的瀏覽器增加候選方案斤寂,使之在舊式瀏覽器上以某種形式降級體驗(yàn)卻不至于完全失效.
漸進(jìn)增強(qiáng):從被所有瀏覽器支持的基本功能開始,逐步地添加那些只有新式瀏覽器才支持的功能,向頁面增加無害于基礎(chǔ)瀏覽器的額外樣式和功能的钠糊。當(dāng)瀏覽器支持時垫言,它們會自動地呈現(xiàn)出來并發(fā)揮作用。

線程與進(jìn)程的區(qū)別
一個程序至少有一個進(jìn)程瞻讽,一個進(jìn)程至少有一個線程鸳吸。線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高速勇。
另外层释,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個線程共享內(nèi)存快集,從而極大地提高了程序的運(yùn)行效率贡羔。
線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個獨(dú)立的線程有一個程序運(yùn)行的入口个初、順序執(zhí)行序列和程序的出口乖寒。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中院溺,由應(yīng)用程序提供多個線程執(zhí)行控制楣嘁。
從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中珍逸,有多個執(zhí)行部分可以同時執(zhí)行逐虚。但操作系統(tǒng)并沒有將多個線程看做多個獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配谆膳。這就是進(jìn)程和線程的重要區(qū)別叭爱。

說說你對語義化的理解?
1:去掉或樣式丟失的時候能讓頁面呈現(xiàn)清晰的結(jié)構(gòu):html本身是沒有表現(xiàn)的漱病,我們看到例如<h1>是粗體买雾,字體大小2em把曼,加粗;<strong>是加粗的漓穿,不要認(rèn)為這是html的表現(xiàn)嗤军,這些其實(shí)html默認(rèn)的css樣式在起作用,所以去掉或樣式丟失的時候能讓頁面呈現(xiàn)清晰的結(jié)構(gòu)不是語義化的HTML結(jié)構(gòu)的優(yōu)點(diǎn)晃危,但是瀏覽器都有有默認(rèn)樣式叙赚,默認(rèn)樣式的目的也是為了更好的表達(dá)html的語義,可以說瀏覽器的默認(rèn)樣式和語義化的HTML結(jié)構(gòu)是不可分割的僚饭。
2.屏幕閱讀器(如果訪客有視障)會完全根據(jù)你的標(biāo)記來“讀”你的網(wǎng)頁纠俭。
3.PDA、手機(jī)等設(shè)備可能無法像普通電腦的瀏覽器一樣來渲染網(wǎng)頁(通常是因?yàn)檫@些設(shè)備對CSS的支持較弱)浪慌。
4.有利于SEO:和搜索引擎建立良好溝通冤荆,有助于爬蟲抓取更多的有效信息:爬蟲依賴于標(biāo)簽來確定上下文和各個關(guān)鍵字的權(quán)重。
5.便于團(tuán)隊(duì)開發(fā)和維護(hù)权纤,語義化更具可讀性钓简,是下一步吧網(wǎng)頁的重要動向,遵循W3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個標(biāo)準(zhǔn)汹想,可以減少差異化外邓。

你如何對網(wǎng)站的文件和資源進(jìn)行優(yōu)化?
期待的解決方案包括:文件合并文件最小化/文件壓縮使用CDN托管緩存的使用(多個域名來提供緩存)其他古掏。

為什么利用多個域名來提供網(wǎng)站資源會更有效损话?
1.CDN緩存更方便
2.突破瀏覽器并發(fā)限制(一般每個域名建立的鏈接不超過6個)
3.Cookieless,節(jié)省帶寬槽唾,尤其是上行帶寬一般比下行要慢
4.對于UGC的內(nèi)容和主站隔離丧枪,防止不必要的安全問題(上傳js竊取主站cookie之類的)。正是這個原因要求用戶內(nèi)容的域名必須不是自己主站的子域名庞萍,而是一個完全獨(dú)立的第三方域名拧烦。
5.數(shù)據(jù)做了劃分,甚至切到了不同的物理集群钝计,通過子域名來分流比較省事恋博。這個可能被用的不多。

請說出三種減少頁面加載時間的方法私恬。(加載時間指感知的時間或者實(shí)際加載時間)
1.優(yōu)化圖片
2.圖像格式的選擇(GIF:提供的顏色較少债沮,可用在一些對顏色要求不高的地方)
3.優(yōu)化CSS(壓縮合并css,如margin-top,margin-left...)
4.網(wǎng)址后加斜杠(如www.campr.com/目錄本鸣,會判斷這個“目錄是什么文件類型疫衩,或者是目錄。)
5.標(biāo)明高度和寬度(如果瀏覽器沒有找到這兩個參數(shù)永高,它需要一邊下載圖片一邊計算大小隧土,如果圖片很多提针,瀏覽器需要不斷地調(diào)整頁面命爬。這不但影響速度曹傀,也影響瀏覽體驗(yàn)。當(dāng)瀏覽器知道了高度和寬度參數(shù)后饲宛,即使圖片暫時無法顯示皆愉,頁面上也會騰出圖片的空位,然后繼續(xù)加載后面的內(nèi)容艇抠。從而加載時間快了幕庐,瀏覽體驗(yàn)也更好了。)
6.減少http請求(合并文件家淤,合并圖片)异剥。

如果你參與到一個項(xiàng)目中,發(fā)現(xiàn)他們使用Tab來縮進(jìn)代碼絮重,但是你喜歡空格冤寿,你會怎么做?
建議這個項(xiàng)目使用像EditorConfig之類的規(guī)范為了保持一致性青伤,接受項(xiàng)目原有的風(fēng)格督怜,直接使用VIM的retab命令

如果今年你打算熟練掌握一項(xiàng)新技術(shù),那會是什么狠角?
node.js号杠,html5,css3丰歌,less等姨蟋。

請談一下你對網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解。
w3c存在的意義就是讓瀏覽器兼容性問題盡量小立帖,首先是他們對瀏覽器開發(fā)者的約束芬探,然后是對開發(fā)者的約束。

什么是FOUC(無樣式內(nèi)容閃爍)厘惦?你如何來避免FOUC偷仿?
FOUC(Flash Of Unstyled Content)--文檔樣式閃爍
<style type="text/css"media="all">@import"../fouc.css";</style>而引用CSS文件的@import就是造成這個問題的罪魁禍?zhǔn)住E會先加載整個HTML文檔的DOM宵蕉,然后再去導(dǎo)入外部的CSS文件酝静,因此,在頁面DOM加載完成到CSS導(dǎo)入完成中間會有一段時間頁面上的內(nèi)容是沒有樣式的羡玛,這段時間的長短跟網(wǎng)速别智,電腦速度都有關(guān)系。解決方法簡單的出奇稼稿,只要在<head>之間加入一個<link>或者<script>元素就可以了薄榛。

doctype(文檔類型)的作用是什么讳窟?你知道多少種文檔類型?
此標(biāo)簽可告知瀏覽器文檔使用哪種HTML或XHTML規(guī)范敞恋。該標(biāo)簽可聲明三種DTD類型丽啡,分別表示嚴(yán)格版本、過渡版本以及基于框架的HTML文檔硬猫。
HTML 4.01規(guī)定了三種文檔類型:Strict补箍、Transitional以及Frameset。
XHTML 1.0規(guī)定了三種XML文檔類型:Strict啸蜜、Transitional以及Frameset坑雅。
Standards(標(biāo)準(zhǔn))模式(也就是嚴(yán)格呈現(xiàn)模式)用于呈現(xiàn)遵循最新標(biāo)準(zhǔn)的網(wǎng)頁,而Quirks(包容)模式(也就是松散呈現(xiàn)模式或者兼容模式)用于呈現(xiàn)為傳統(tǒng)瀏覽器而設(shè)計的網(wǎng)頁衬横。

瀏覽器標(biāo)準(zhǔn)模式和怪異模式之間的區(qū)別是什么裹粤?
W3C標(biāo)準(zhǔn)推出以后,瀏覽器都開始采納新標(biāo)準(zhǔn)蜂林,但存在一個問題就是如何保證舊的網(wǎng)頁還能繼續(xù)瀏覽遥诉,在標(biāo)準(zhǔn)出來以前,很多頁面都是根據(jù)舊的渲染方法編寫的悉尾,如果用的標(biāo)準(zhǔn)來渲染突那,將導(dǎo)致頁面顯示異常。為保持瀏覽器渲染的兼容性构眯,使以前的頁面能夠正常瀏覽愕难,瀏覽器都保留了舊的渲染方法(如:微軟的IE)。這樣瀏覽器渲染上就產(chǎn)生了Quircks mode和Standars mode惫霸,兩種渲染方法共存在一個瀏覽器上猫缭。IE盒子模型和標(biāo)準(zhǔn)W3C盒子模型:ie的width包括:padding\border。標(biāo)準(zhǔn)的width不包括:padding\border

在js中如何判斷當(dāng)前瀏覽器正在以何種方式解析壹店?
document對象有個屬性compatMode,它有兩個值:BackCompat對應(yīng)quirks mode猜丹,CSS1Compat對應(yīng)strict mode。

盒子垂直居中方法
position: absolute;left:50%;top:50%;width:400px;
height:400px;margin-left:-200px;margin-top:-200px;

eval是做什么的
它的功能是把對應(yīng)的字符串解析稱js代碼運(yùn)行硅卢;
應(yīng)該避免使用eval,不安全射窒,非常耗能.

setState 和 replaceState 的區(qū)別
setState 是修改其中的部分狀態(tài),相當(dāng)于 Object.assign将塑,只是覆蓋脉顿,
不會減少原來的狀態(tài) replaceState 是完全替換原來的狀態(tài),相當(dāng)于賦值点寥,將原來的 state 替換為另一個對象艾疟,如果新狀態(tài)屬性減少,那么 state 中就沒有這個狀態(tài)了

react diff 原理
把樹形結(jié)構(gòu)按照層級分解,只比較同級元素蔽莱。
給列表結(jié)構(gòu)的每個單元添加唯一的 key 屬性弟疆,方便比較。
React 只會匹配相同 class 的 component(這里面的 class 指的是組件的名字) 合并操作盗冷,調(diào)用 component 的 setState 方法的時候, React 將其標(biāo)記為 dirty.
到每一個事件循環(huán)結(jié)束, React 檢查所有標(biāo)記 dirty 的 component 重新繪制. 選擇性子樹渲染怠苔。開發(fā)人員可以重寫 shouldComponentUpdate 提高 diff 的性能

狀態(tài)(state)和屬性(props)之間有何區(qū)別
State 是一種數(shù)據(jù)結(jié)構(gòu),用于組件掛載時所需數(shù)據(jù)的默認(rèn)值正塌。
State 可能會隨著時間的推移而發(fā)生突變嘀略,但多數(shù)時候是作為用戶事件行為的結(jié)果恤溶。
Props(properties 的簡寫)則是組件的配置乓诽。props 由父組件傳遞給子組件,并且就子組件而言咒程,props 是不可變的(immutable)鸠天。
組件不能改變自身的 props,但是可以把其子組件的 props 放在一起(統(tǒng)一管理)帐姻。Props 也不僅僅是數(shù)據(jù)--回調(diào)函數(shù)也可以通過 props 傳遞稠集。

.shouldComponentUpdate 是做什么的?
shouldComponentUpdate 這個方法用來判斷是否需要調(diào)用 render 方法重新描繪 dom饥瓷。因?yàn)?dom 的描繪非常消耗性能剥纷,如果我們能在 shouldComponentUpdate 方法中能夠?qū)懗龈鼉?yōu)化的 dom diff 算法,可以極大的提高性能呢铆。

當(dāng)你調(diào)用 setState 的時候晦鞋,發(fā)生了什么事?
將傳遞給 setState 的對象合并到組件的當(dāng)前狀態(tài)棺克,這將啟動一個和解的過程悠垛,構(gòu)建一個新的 react 元素樹,與上一個元素樹進(jìn)行對比( diff )娜谊,從而進(jìn)行最小化的重渲染

在書寫高效CSS時會有哪些問題需要考慮确买?
1.樣式是:從右向左的解析一個選擇器;
2.ID最快纱皆,Universal最慢有四種類型的key selector湾趾,解析速度由快到慢依次是:ID、class派草、tag和universal 搀缠;
3.不要tag-qualify(永遠(yuǎn)不要這樣做ul#main-navigation{}ID已經(jīng)是唯一的,不需要Tag來標(biāo)識澳眷,這樣做會讓選擇器變慢胡嘿。);
4.后代選擇器最糟糕(換句話說钳踊,下面這個選擇器是很低效的:html body ul li a{})衷敌;
5.想清楚你為什么這樣寫勿侯;
6.CSS3的效率問題(CSS3選擇器(比如:nth-child)能夠漂亮的定位我們想要的元素,又能保證我們的CSS整潔易讀缴罗。但是這些神奇的選擇器會浪費(fèi)很多的瀏覽器資源助琐。);
7.我們知道#ID速度是最快的面氓,那么我們都用ID兵钮,是不是很快。但是我們不應(yīng)該為了效率而犧牲可讀性和可維護(hù)性舌界。

如果網(wǎng)頁內(nèi)容需要支持多語言掘譬,你會怎么做?
下面這些問題需要考慮:
1.應(yīng)用字符集的選擇呻拌,選擇UTF-8編碼
2.語言書寫習(xí)慣&導(dǎo)航結(jié)構(gòu)
3.數(shù)據(jù)庫驅(qū)動型網(wǎng)站

Javascript中葱轩,執(zhí)行時對象查找時,永遠(yuǎn)不會去查找原型的函數(shù)藐握?
Object.hasOwnProperty(proName):是用來判斷一個對象是否有你給出名稱的屬性靴拱。不過需要注意的是,此方法無法檢查該對象的原型鏈中是否具有該屬性猾普,該屬性必須是對象本身的一個成員袜炕。

css 動畫和 js 動畫的差異
代碼復(fù)雜度,js 動畫代碼相對復(fù)雜一些
動畫運(yùn)行時初家,對動畫的控制程度上偎窘,js 能夠讓動畫,暫停笤成,取消评架,終止,css 動畫不能添加事件
動畫性能看炕泳,js 動畫多了一個 js 解析的過程纵诞,性能不如 css 動畫好

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市培遵,隨后出現(xiàn)的幾起案子浙芙,更是在濱河造成了極大的恐慌,老刑警劉巖籽腕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗡呼,死亡現(xiàn)場離奇詭異,居然都是意外死亡皇耗,警方通過查閱死者的電腦和手機(jī)南窗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人万伤,你說我怎么就攤上這事窒悔。” “怎么了敌买?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵简珠,是天一觀的道長。 經(jīng)常有香客問我虹钮,道長聋庵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任芙粱,我火速辦了婚禮祭玉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宅倒。我一直安慰自己攘宙,他們只是感情好屯耸,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布拐迁。 她就那樣靜靜地躺著,像睡著了一般疗绣。 火紅的嫁衣襯著肌膚如雪线召。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天多矮,我揣著相機(jī)與錄音缓淹,去河邊找鬼。 笑死塔逃,一個胖子當(dāng)著我的面吹牛讯壶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾盗,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼伏蚊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了格粪?” 一聲冷哼從身側(cè)響起躏吊,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帐萎,沒想到半個月后比伏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疆导,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年赁项,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡悠菜,死狀恐怖紫新,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情李剖,我是刑警寧澤芒率,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站篙顺,受9級特大地震影響偶芍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜德玫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一匪蟀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宰僧,春花似錦材彪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至造成,卻和暖如春显熏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晒屎。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工喘蟆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鼓鲁。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓蕴轨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骇吭。 傳聞我的和親對象是個殘疾皇子橙弱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

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

  • 一、理論基礎(chǔ)知識部分 1.1绵跷、講講輸入完網(wǎng)址按下回車膘螟,到看到網(wǎng)頁這個過程中發(fā)生了什么 a. 域名解析 b. 發(fā)起T...
    我家媳婦蠢蠢噠閱讀 3,129評論 2 106
  • 一.簡述前端構(gòu)建工具。fis3碾局,Gulp荆残,Grunt,Webpack www.tuicool.com/articl...
    錢小強(qiáng)_閱讀 1,335評論 0 5
  • 面試題一:https://github.com/jimuyouyou/node-interview-questio...
    R_X閱讀 1,625評論 0 5
  • 本文旨在加深對前端知識點(diǎn)的理解净当,資料來源于網(wǎng)絡(luò)内斯,由本人(博客:http://segmentfault.com/u/...
    風(fēng)起云帆閱讀 331評論 0 0
  • 李笑來曾經(jīng)擲地有聲的說過一句話蕴潦,“你要相信,就在未來這幾年俘闯,個人品牌價值的增幅至少超過房價漲幅十倍”潭苞。其實(shí)不光未來...
    秋之白華白之秋閱讀 412評論 3 8