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當年的樣子(第三方庫現在已經很豐富了,所以這個缺點可以說不存在了)。