前端框架面試題


1、JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?

考察學習知識的態度,是否僅僅是停留在使用層面,要知其然知其所以然

2、jQuery.fn的init方法返回的this指的是什么對象?為什么要返回this?

this執行init構造函數自身,其實就是jQuery實例對象,返回this是為了實現jQuery的鏈式操作

1、 jquery中如何將數組轉化為json字符串,然后再轉化回來?

$.parseJSON('{"name":"John"}');

JSON.stringify

2、 jQuery 的屬性拷貝(extend)的實現原理是什么,如何實現深拷貝?

遞歸賦值

3、 jquery.extend 與 jquery.fn.extend的區別?

Jquery.extend用來擴展jQuery對象本身;jquery.fn.extend用來擴展jQuery實例

6、談一下Jquery中的bind(),live(),delegate(),on()的區別?

jquery1.7以后就推薦使用on的方式來進行事件綁定了

7、JQuery一個對象可以同時綁定多個事件,這是如何實現的?

可以同時綁定多個事件,低層實現原理是使用addEventListner與attachEvent兼容處理做事件注冊

3、 Jquery與jQuery UI有啥區別?

jQuery是操作dom的框架,jQueryUI是基於jQuery做的一個UI組件庫

4、 jQuery和Zepto的區別?各自的使用場景?

jQuery主要用於pc端,當然有對應的jQuerymobile用於移動端,zepto比jQuery更加小巧,主要用於移動端

jquer mobile相對於zepto功能強大,但是體積也很龐大,zepto非常的輕量

6、針對 jQuery 的優化方法?

a、優先使用ID選擇器

b、jquery獲取到的DOM元素如果需要多次使用,建議使用一個變量將其保存起來,因為操作DOM的過程是非常耗費性能的

c、在class前使用tag(標簽名)

d、給選擇器一個上下文

e、慎用 .live()方法(應該說盡量不要使用)

f、使用data()方法存儲臨時變量

7、Zepto的點透問題如何解決?

點透主要是由於兩個div重合,例如:一個div調用show(),一個div調用hide();這個時候當點擊上面的div的時候就會影響到下面的那個div;

解決辦法主要有2種:

1.github上有一個叫做fastclick的庫,它也能規避移動設備上click事件的延遲響應,https://github.com/ftlabs/fastclick

將它用script標簽引入頁面(該庫支持AMD,於是你也可以按照AMD規范,用諸如require.js的模塊加載器引入),並且在dom ready時初始化在body上,

2.根據分析,如果不引入其它類庫,也不想自己按照上述fastclcik的思路再開發一套東西,需要1.一個優先於下面的“divClickUnder”捕獲的事件;2.並且通過這個事件阻止掉默認行為(下面的“divClickUnder”對click事件的捕獲,在ios的safari,click的捕獲被認為和滾屏、點擊輸入框彈起鍵盤等一樣,是一種瀏覽器默認行為,即可以被event.preventDefault()阻止的行為)。

12、知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能講出他們各自的優點和缺點么?

知識面的寬度,流行框架要多多熟悉

angular、backbone、knockout都是完整的MV*框架

angular是雙向數據綁定的,backbone、knockout是單向數據綁定的

React只是單純地View層

13、Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?

Underscore的熟悉程度

14、使用過angular嗎?angular中的過濾器是干什么用的

在表達式中轉換數據<p>姓名為 {{ lastName | uppercase }}</p>

currency,是什么過濾器——格式化數字為貨幣格式,單位是$符。

 

九、移動APP開發

1、移動端最小觸控區域是多大?

移動端的點擊事件的有延遲,時間是多久,為什么會有? 怎么解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)

十、NodeJs

1、對Node的優點和缺點提出了自己的看法:

*(優點)因為Node是基於事件驅動和無阻塞的,所以非常適合處理並發請求,

因此構建在Node上的代理服務器相比其他技術實現(如Ruby)的服務器表現要好得多。

此外,與Node代理服務器交互的客戶端代碼是由javascript語言編寫的,

因此客戶端和服務器端都用同一種語言編寫,這是非常美妙的事情。

*(缺點)Node是一個相對新的開源項目,所以不太穩定,它總是一直在變,

而且缺少足夠多的第三方庫支持。看起來,就像是Ruby/Rails當年的樣子。

2、需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、后退時正確響應。給出你的技術實現方案?

至少給出自己的思路(url-hash,可以使用已有的一些框架history.js等)

3、Node.js的適用場景?

1)、實時應用:如在線聊天,實時通知推送等等(如socket.io)

2)、分布式應用:通過高效的並行I/O使用已有的數據

3)、工具類應用:海量的工具,小到前端壓縮部署(如grunt),大到桌面圖形界面應用程序

4)、游戲類應用:游戲領域對實時和並發有很高的要求(如網易的pomelo框架)

5)、利用穩定接口提升Web渲染能力

6)、前后端編程語言環境統一:前端開發人員可以非常快速地切入到服務器端的開發(如著名的純Javascript全棧式MEAN架構)

4、(如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?

Nodejs相關概念的理解程度

5、解釋一下 Backbone 的 MVC 實現方式?

流行的MVC架構模式

6、什么是“前端路由”?什么時候適合使用“前端路由”? “前端路由”有哪些優點和缺點?

熟悉前后端通信相關知識

前端路由就是在不進行后端請求的情況下對頁面進行跳轉

7、對Node的優點和缺點提出了自己的看法?

優點:

1. 因為Node是基於事件驅動和無阻塞的,所以非常適合處理並發請求,因此構建在Node上的代理服務器相比其他技術實現(如Ruby)的服務器表現要好得多。

2. 與Node代理服務器交互的客戶端代碼是由javascript語言編寫的,因此客戶端和服務器端都用同一種語言編寫,這是非常美妙的事情。

缺點:

1. Node是一個相對新的開源項目,所以不太穩定,它總是一直在變。

2. 缺少足夠多的第三方庫支持。看起來,就像是Ruby/Rails當年的樣子(第三方庫現在已經很豐富了,所以這個缺點可以說不存在了)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM