1.講講輸入完網址按下回車,到看到網頁這個過程中發生了什么
a. 域名解析
b. 發起TCP的3次握手
c. 建立TCP連接后發起http請求
d. 服務器端響應http請求,瀏覽器得到html代碼
e. 瀏覽器解析html代碼,並請求html代碼中的資源
f. 瀏覽器對頁面進行渲染呈現給用戶
2.談談你對前端性能優化的理解
a. 請求數量:合並腳本和樣式表,CSS Sprites,拆分初始化負載,划分主域
b. 請求帶寬:開啟GZip,精簡JavaScript,移除重復腳本,圖像優化,將icon做成字體
c. 緩存利用:使用CDN,使用外部JavaScript和CSS,添加Expires頭,減少DNS查找,配置ETag,使AjaX可緩存
d. 頁面結構:將樣式表放在頂部,將腳本放在底部,盡早刷新文檔的輸出
e. 代碼校驗:避免CSS表達式,避免重定向
3.前端 MV*框架的意義
早期前端都是比較簡單,基本以頁面為工作單元,內容以瀏覽型為主,也偶爾有簡單的表單操作,基本不太需要框架。
隨着 AJAX 的出現,Web2.0的興起,人們可以在頁面上可以做比較復雜的事情了,然后前端框架才真正出現了。
如果是頁面型產品,多數確實不太需要它,因為頁面中的 JavaScript代碼,處理交互的絕對遠遠超過處理模型的,但是如果是應用軟件類產品,這就太需要了。
長期做某個行業軟件的公司,一般都會沉淀下來一些業務組件,主要體現在數據模型、業務規則和業務流程,這些組件基本都存在於后端,在前端很少有相應的組織。
從協作關系上講,很多前端開發團隊每個成員的職責不是很清晰,有了前端的 MV框架,這個狀況會大有改觀。
之所以感受不到 MV*框架的重要性,是因為Model部分代碼較少,View的相對多一些。如果主要在操作View和Controller,那當然 jQuery 這類庫比較好用了。
4.請簡述盒模型
IE6盒子模型與W3C盒子模型。
文檔中的每個元素被描繪為矩形盒子。盒子有四個邊界:外邊距邊界margin, 邊框邊界border, 內邊距邊界padding與內容邊界content。
CSS3中有個box-sizing屬性可以控制盒子的計算方式,
content-box:padding和border不被包含在定義的width和height之內。對象的實際寬度等於設置的width值和border、padding之和。(W3C盒子模型)
border-box:padding和border被包含在定義的width和height之內。對象的實際寬度就等於設置的width值。(IE6盒子模型)
5.請你談談Cookie的弊端
a. 每個特定的域名下最多生成的cookie個數有限制
b. IE和Opera 會清理近期最少使用的cookie,Firefox會隨機清理cookie
c. cookie的最大大約為4096字節,為了兼容性,一般不能超過4095字節
d. 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session信息。
6.瀏覽器本地存儲
在HTML5中提供了sessionStorage和localStorage。
sessionStorage用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問並且當會話結束后數據也隨之銷毀,是會話級別的存儲。
localStorage用於持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。
7.web storage和cookie的區別
a. Cookie的大小是受限的
b. 每次你請求一個新的頁面的時候Cookie都會被發送過去,這樣無形中浪費了帶寬
c. cookie還需要指定作用域,不可以跨域調用
d. Web Storage擁有setItem,getItem等方法,cookie需要前端開發者自己封裝setCookie,getCookie
e. Cookie的作用是與服務器進行交互,作為HTTP規范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數據而生
f. IE7、IE6中的UserData通過簡單的代碼封裝可以統一到所有的瀏覽器都支持web storage
8.對BFC規范的理解
BFC全稱是Block Formatting Context,即塊格式化上下文。它是CSS2.1規范定義的,關於CSS渲染定位的一個概念。
BFC是頁面CSS 視覺渲染的一部分,用於決定塊盒子的布局及浮動相互影響范圍的一個區域。
BFC的一個最重要的效果是,讓處於BFC內部的元素與外部的元素相互隔離,使內外元素的定位不會相互影響。
利用BFC可以閉合浮動,防止與浮動元素重疊。
9.線程與進程的區別
a. 一個程序至少有一個進程,一個進程至少有一個線程
b. 線程的划分尺度小於進程,使得多線程程序的並發性高
c. 進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率
d. 每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制
e. 多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配
10.請說出三種減少頁面加載時間的方法
a. 盡量減少頁面中重復的HTTP請求數量
b. 服務器開啟gzip壓縮
c. css樣式的定義放置在文件頭部
d. Javascript腳本放在文件末尾
e. 壓縮合並Javascript、CSS代碼
f. 使用多域名負載網頁內的多個文件、圖片
11.你都使用哪些工具來測試代碼的性能?
JSPerf, Dromaeo
12.你遇到過比較難的技術問題是?你是如何解決的?
13.你常使用的庫有哪些?常用的前端開發工具?開發過什么應用或組件?
14.列舉IE與其他瀏覽器不一樣的特性?
a. IE的排版引擎是Trident (又稱為MSHTML)
b. Trident內核曾經幾乎與W3C標准脫節(2005年)
c. Trident內核的大量 Bug等安全性問題沒有得到及時解決
d. JS方面,有很多獨立的方法,例如綁定事件的attachEvent、創建事件的createEventObject等
e. CSS方面,也有自己獨有的處理方式,例如設置透明,低版本IE中使用濾鏡的方式
15.什么叫優雅降級和漸進增強?
漸進增強 progressive enhancement:
針對低版本瀏覽器進行構建頁面,保證最基本的功能,然后再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
優雅降級 graceful degradation:
一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容。
區別:
a. 優雅降級是從復雜的現狀開始,並試圖減少用戶體驗的供給
b. 漸進增強則是從一個非常基礎的,能夠起作用的版本開始,並不斷擴充,以適應未來環境的需要
c. 降級(功能衰減)意味着往回看;而漸進增強則意味着朝前看,同時保證其根基處於安全地帶
16.WEB應用從服務器主動推送Data到客戶端有那些方式?
a. html5 websoket
b. WebSocket 通過 Flash
c. XHR長時間連接
d. XHR Multipart Streaming
e. 不可見的Iframe
f. 標簽的長時間連接(可跨域)
17.對前端界面工程師這個職位是怎么樣理解的?
a. 前端是最貼近用戶的程序員,前端的能力就是能讓產品從 90分進化到 100 分,甚至更好
b. 參與項目,快速高質量完成實現效果圖,精確到1px;
c. 與團隊成員,UI設計,產品經理的溝通;
d. 做好的頁面結構,頁面重構和用戶體驗;
e. 處理hack,兼容、寫出優美的代碼格式;
f. 針對服務器的優化、擁抱最新前端技術。
18.你在現在的團隊處於什么樣的角色,起到了什么明顯的作用?
請自行根據自己情況做回答,這個沒有統一標准答案。
19.你的優點是什么?缺點是什么?
請自行根據自己情況做回答,這個沒有標准答案。
20.如何管理前端團隊?
請自行根據自己情況做回答,這個沒有標准答案。
21.最近在學什么?能談談你未來3,5年給自己的規划嗎?
請自行根據自己情況做回答,這個沒有標准答案。
22.平時如何管理你的項目?
a. 先期團隊必須確定好全局樣式(globe.css),編碼模式(utf-8) 等;
b. 編寫習慣必須一致(例如都是采用繼承式的寫法,單樣式都寫成一行);
c. 標注樣式編寫人,各模塊都及時標注(標注關鍵樣式調用的地方);
d. 頁面進行標注(例如 頁面 模塊 開始和結束);
e. CSS跟HTML 分文件夾並行存放,命名都得統一(例如style.css);
f. JS 分文件夾存放 命名以該JS功能為准的英文翻譯。
g. 圖片采用整合的 images.png png8 格式文件使用 盡量整合在一起使用方便將來的管理
23.說說最近最流行的一些東西吧?常去哪些網站?
CSDN、SegmentFault、php.net、MDN、css參考手冊、iconfont、
underscore、github、Bootstrap、W3Shool、W3Cplus、caniuse
24.請解釋一下 JavaScript 的同源策略
同源策略指的是:協議,域名,端口相同,同源策略是一種安全協議。
指一段腳本只能讀取來自同一來源的窗口和文檔的屬性。
25.AMD和CMD 規范的區別?
AMD 提前執行依賴 - 盡早執行,requireJS 是它的實現
CMD 按需執行依賴 - 懶執行,seaJS 是它的實現
26.網站重構的理解
重構:在不改變外部行為的前提下,簡化結構、添加可讀性,而在網站前端保持一致的行為。
a. 使網站前端兼容於現代瀏覽器(針對於不合規范的CSS、如對IE6有效的)
b. 對於移動平台的優化,針對於SEO進行優化
c. 減少代碼間的耦合,讓代碼保持彈性
d. 壓縮或合並JS、CSS、image等前端資源
27.瀏覽器的內核分別是什么?
IE瀏覽器的內核Trident;
Mozilla的Gecko;
Chrome的Blink(WebKit的分支);
Opera內核原為Presto,現為Blink;
28.請介紹下cache-control
每個資源都可以通過 Cache-Control HTTP 頭來定義自己的緩存策略
Cache-Control 指令控制誰在什么條件下可以緩存響應以及可以緩存多久
Cache-Control 頭在 HTTP/1.1 規范中定義,取代了之前用來定義響應緩存策略的頭(例如 Expires)。
29.前端頁面有哪三層構成,分別是什么?作用是什么?
a. 結構層:由 HTML 或 XHTML 之類的標記語言負責創建,僅負責語義的表達。解決了頁面“內容是什么”的問題。
b. 表示層:由CSS負責創建,解決了頁面“如何顯示內容”的問題。
c. 行為層:由腳本負責。解決了頁面上“內容應該如何對事件作出反應”的問題。
30.知道的網頁制作會用到的圖片格式有哪些?
png-8,png-24,jpeg,gif,svg
Webp:谷歌(google)開發的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的服務器帶寬資源和數據空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。
Apng:全稱是“Animated Portable Network Graphics”, 是PNG的位圖動畫擴展,可以實現png格式的動態圖片效果。04年誕生,但一直得不到各大瀏覽器廠商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF成為下一代動態圖標准。
31.一次js請求一般情況下有哪些地方會有緩存處理?
a. 瀏覽器端存儲
b. 瀏覽器端文件緩存
c. HTTP緩存304
d. 服務器端文件類型緩存
e. 表現層&DOM緩存
32.一個頁面上有大量的圖片(大型電商網站),加載很慢,你有哪些方法優化這些圖片的加載,給用戶更好的體驗[性能優化]。
a. 圖片懶加載,滾動到相應位置才加載圖片。
b. 圖片預加載,如果為幻燈片、相冊等,將當前展示圖片的前一張和后一張優先下載。
c. 使用CSSsprite,SVGsprite,Iconfont、Base64等技術,如果圖片為css圖片的話。
d. 如果圖片過大,可以使用特殊編碼的圖片,加載時會先加載一張壓縮的特別厲害的縮略圖,以提高用戶體驗。
33.談談以前端角度出發做好SEO需要考慮什么?
a. 了解搜索引擎如何抓取網頁和如何索引網頁
b. meta標簽優化
c. 關鍵詞分析
d. 付費給搜索引擎
e. 鏈接交換和鏈接廣泛度(Link Popularity)
f. 合理的標簽使用