經(jīng)典面試題
9.在Javascript中什么是偽數(shù)組鳄橘?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組功舀?
- 具有l(wèi)ength屬性
- 按索引方式存儲數(shù)據(jù)
- 不具有數(shù)組的push( )、pop( )方法
- 這種對象有很多篮绿,比較特別的是function內(nèi)的arguments對象纹份,還有像調(diào)用getElementsByTagName, document.childNodes之類的,它們都返回的NodeList對象都屬于偽數(shù)組旗们,也稱為類數(shù)組蚓哩,還有自定義的對象,也屬于偽數(shù)組
- 可以通過Array.prototype.slice.call(fakeArray)將偽數(shù)組轉(zhuǎn)變?yōu)檎嬲腁rray對象上渴。
10.瀏覽器本地存儲?
- cookie:存儲空間小岸梨,存儲類型簡單,消息會被發(fā)送到服務(wù)器
- sessionstorage:針對一個 session 來存儲數(shù)據(jù)(當(dāng)關(guān)閉瀏覽器標(biāo)簽頁時數(shù)據(jù)會丟失)
- localstorage:存儲沒有截止日期的數(shù)據(jù)稠氮,瀏覽器被關(guān)閉時數(shù)據(jù)不會被刪除
11.線程與進(jìn)程的區(qū)別?
線程是進(jìn)程中執(zhí)行運算的最小單位曹阔,是進(jìn)程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位隔披,線程自己不擁有系統(tǒng)資源赃份,只擁有一點在運行中必不可少的資源,但它可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源奢米。一個線程可以創(chuàng)建和撤消另一個線程抓韩,同一進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行。
12.請說出三種減少頁面加載時間的方法鬓长。
- 減少http請求(合并文件谒拴、合并圖片)
- 優(yōu)化圖片文件,減小其尺寸痢士,特別是縮略圖彪薛,一定要按尺寸生成縮略圖然后調(diào)用,不要在網(wǎng)頁中用resize方法實現(xiàn)怠蹂,雖然這樣看到的圖片外形小了善延,但是其加載的數(shù)據(jù)量一點也沒減少。普通圖像城侧、icon也要盡可能壓縮后易遣,可以采用web圖像保存、減少顏色數(shù)等等方法實現(xiàn)嫌佑。
- 圖像格式的選擇(GIF:提供的顏色較少豆茫,可用在一些對顏色要求不高的地方)
- 壓縮JavaScript侨歉、CSS代碼:一般js、css文件中存在大量的空格揩魂、換行幽邓、注釋,這些利于閱讀火脉,如果能夠壓縮掉牵舵,將會很有利于網(wǎng)絡(luò)傳輸。
- 服務(wù)器啟用gzip壓縮功能:將要傳輸?shù)奈募嚎s后傳輸?shù)娇蛻舳嗽俳鈮壕牍遥诰W(wǎng)絡(luò)傳輸 數(shù)據(jù)量會大幅減小畸颅。在服務(wù)器上的Apache、Nginx可直接啟用方援,也可用代碼直接設(shè)置傳輸文件頭没炒,增加gzip的設(shè)置,也可從 負(fù)載均衡設(shè)備直接設(shè)置犯戏。不過需要留意的是送火,這個設(shè)置會略微增加服務(wù)器的負(fù)擔(dān)。服務(wù)器性能不是很好的網(wǎng)站笛丙,要慎重考慮漾脂。
- 標(biāo)明高度和寬度(如果瀏覽器沒有找到這兩個參數(shù),它需要一邊下載圖片一邊計算大小胚鸯,如果圖片很多骨稿,瀏覽器需要不斷地調(diào)整頁面。這不但影響速度姜钳,也影響瀏覽體驗坦冠。 當(dāng)瀏覽器知道了高度和寬度參數(shù)后,即使圖片暫時無法顯示哥桥,頁面上也會騰出圖片的空位辙浑,然后繼續(xù)加載后面的內(nèi)容。從而加載時間快了拟糕,瀏覽體驗也更好了判呕。)
- 網(wǎng)址后面加上“/”:對服務(wù)器而言,不加斜杠服務(wù)器會多一次判斷的過程送滞,加斜杠就會直接返回網(wǎng)站設(shè)置的存放在網(wǎng)站根目錄下的默認(rèn)頁面侠草。
思考題:
5.在鏈接中應(yīng)該使用諸如“Click here” 一類的籠統(tǒng)詞匯嗎?
正方:
事實證明犁嗅,“Click here”比描述性的鏈接更容易獲得點擊边涕,因此應(yīng)該使用該詞匯以獲得更好的點擊率。
反方:
“Click here”一類的鏈接損害Web的易用性,用戶在點擊之前功蜓,只能通過周圍的上下文關(guān)系猜測這個鏈接是做什么的园爷。QualITy guidelines建議,任何鏈接文字都應(yīng)該明確描述該鏈接的目的式撼。
和事佬:
為了提高站點的易用性童社,可訪問性和SEO性能,應(yīng)該始終使用描述性鏈接著隆。很有趣聽到有人說“Clickhere”比描述性鏈接可以獲得更多點擊率叠洗,不知道那些點擊進(jìn)來的人是不是看兩眼就離開了。
6.鏈接是否應(yīng)該在新窗口打開旅东?
正方:
外部鏈接應(yīng)該始終從新窗口打開,當(dāng)你瀏覽一個站點的時候十艾,點擊了一個鏈接抵代,卻被帶到另外一個站點,你在這個站點的會話也因此丟失忘嫉,這實在令人惱怒荤牍。因此,站點內(nèi)的鏈接可以在現(xiàn)有窗口打開庆冕,而站點外鏈接則應(yīng)該在新窗口打開康吵。
反方:
作為Web設(shè)計師,我們不該控制用戶的行為访递,一個鏈接是否在新窗口打開晦嵌,應(yīng)該是用戶自己的選擇。剝奪用戶的控制權(quán)拷姿,在用戶的桌面上打開一堆窗口或標(biāo)簽惭载,這才是真正讓人惱怒的事。如果用戶想打開新窗口响巢,他們可以自己選擇描滔,而對非熟練用戶,新窗口讓他們丟失了“后退”按鈕更讓他們無所適從踪古。
和事佬:
總體來講含长,應(yīng)該避免使用新窗口打開鏈接,但在某些場合伏穆,如打開購物車中的幫助鏈接拘泞,打開一個非html文件(如PDF文件),應(yīng)該使用新窗口蜈出。為了提高易用性田弥,最好在需要打開新窗口的地方,用一個小圖標(biāo)提示一下铡原。