75.說說你對前端架構師的理解
負責前端團隊的管理及與其餘團隊的協調工做,提高團隊成員能力和總體效率; 帶領團隊完成研發工具及平臺前端部分的設計、研發和維護; 帶領團隊進行前端領域前沿技術研究及新技術調研,保證團隊的技術領先 負責前端開發規範制定、功能模塊化設計、公共組件搭建等工做,並組織培訓。
實現一個函數clone,能夠對JavaScript中的5種主要的數據類型(包括Number、String、Object、Array、Boolean)進行值複製html
Object.prototype.clone = function(){ var o = this.constructor === Array ? [] : {}; for(var e in this){ o[e] = typeof this[e] === "object" ? this[e].clone() : this[e]; } return o; }
76.說說嚴格模式的限制
嚴格模式主要有如下限制:
變量必須聲明後再使用
函數的參數不能有同名屬性,不然報錯
不能使用with語句
不能對只讀屬性賦值,不然報錯
不能使用前綴0表示八進制數,不然報錯
不能刪除不可刪除的屬性,不然報錯
不能刪除變量delete prop,會報錯,只能刪除屬性delete global[prop]
eval不會在它的外層做用域引入變量
eval和arguments不能被從新賦值
arguments不會自動反映函數參數的變化
不能使用arguments.callee
不能使用arguments.caller
禁止this指向全局對象
不能使用fn.caller和fn.arguments獲取函數調用的堆棧
增長了保留字(好比protected、static和interface)
設立"嚴格模式"的目的,主要有如下幾個:
消除Javascript語法的一些不合理、不嚴謹之處,減小一些怪異行爲;
消除代碼運行的一些不安全之處,保證代碼運行的安全;
提升編譯器效率,增長運行速度;
爲將來新版本的Javascript作好鋪墊。
注:通過測試IE6,7,8,9均不支持嚴格模式。
77.如何刪除一個cookie
1.將時間設爲當前時間往前一點。
var date = new Date();
date.setDate(date.getDate() - 1);//真正的刪除
setDate()方法用於設置一個月的某一天。
2.expires的設置
document.cookie = 'user='+ encodeURIComponent('name') + ';expires = ' + new Date(0)
<strong>,<em>和<b>,<i>標籤
<strong> 標籤和 <em> 標籤同樣,用於強調文本,但它強調的程度更強一些。
em 是 斜體強調標籤,更強烈強調,表示內容的強調點。至關於html元素中的 <i>...</i>;
< b > < i >是視覺要素,分別表示無心義的加粗,無心義的斜體。
em 和 strong 是表達要素(phrase elements)。
78.說說你對AMD和Commonjs的理解
CommonJS是服務器端模塊的規範,Node.js採用了這個規範。CommonJS規範加載模塊是同步的,也就是說,只有加載完成,才能執行後面的操做。AMD規範則是非同步加載模塊,容許指定回調函數。
AMD推薦的風格經過返回一個對象作爲模塊對象,CommonJS的風格經過對module.exports或exports的屬性賦值來達到暴露模塊對象的目的。
詳情:也談webpack及其開發模式
79.document.write()的用法
document.write()方法能夠用在兩個方面:頁面載入過程當中用實時腳本建立頁面內容,以及用延時腳本建立本窗口或新窗口的內容。
document.write只能重繪整個頁面。innerHTML能夠重繪頁面的一部分
80.編寫一個方法 求一個字符串的字節長度
假設:一個英文字符佔用一個字節,一箇中文字符佔用兩個字節前端
function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));
81.git fetch和git pull的區別
git pull:至關因而從遠程獲取最新版本並merge到本地
git fetch:至關因而從遠程獲取最新版本到本地,不會自動merge
82.說說你對MVC和MVVM的理解
MVC
View 傳送指令到 Controller
Controller 完成業務邏輯後,要求 Model 改變狀態
Model 將新的數據發送到 View,用戶獲得反饋
全部通訊都是單向的。
Angular它採用雙向綁定(data-binding):View的變更,自動反映在 ViewModel,反之亦然。
組成部分Model、View、ViewModel
View:UI界面
ViewModel:它是View的抽象,負責View與Model之間信息轉換,將View的Command傳送到Model;
Model:數據訪問層
83.請解釋什麼是事件代理
事件代理(Event Delegation),又稱之爲事件委託。是 JavaScript 中經常使用綁定事件的經常使用技巧。顧名思義,「事件代理」便是把本來須要綁定的事件委託給父元素,讓父元素擔當事件監聽的職務。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好處是能夠提升性能。
84.attribute和property的區別是什麼?
attribute是dom元素在文檔中做爲html標籤擁有的屬性;
property就是dom元素在js中做爲對象擁有的屬性。
因此:
對於html的標準屬性來講,attribute和property是同步的,是會自動更新的,
可是對於自定義的屬性來講,他們是不一樣步的,
84.說說網絡分層裏七層模型是哪七層
應用層:應用層、表示層、會話層(從上往下)(HTTP、FTP、SMTP、DNS)
傳輸層(TCP和UDP)
網絡層(IP)
物理和數據鏈路層(以太網)
每一層的做用以下:
物理層:經過媒介傳輸比特,肯定機械及電氣規範(比特Bit)
數據鏈路層:將比特組裝成幀和點到點的傳遞(幀Frame)
網絡層:負責數據包從源到宿的傳遞和網際互連(包PackeT)
傳輸層:提供端到端的可靠報文傳遞和錯誤恢復(段Segment)
會話層:創建、管理和終止會話(會話協議數據單元SPDU)
表示層:對數據進行翻譯、加密和壓縮(表示協議數據單元PPDU)
應用層:容許訪問OSI環境的手段(應用協議數據單元APDU)
各類協議
ICMP協議: 因特網控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。
TFTP協議: 是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。
HTTP協議: 超文本傳輸協議,是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。
DHCP協議: 動態主機配置協議,是一種讓系統得以鏈接到網絡上,並獲取所須要的配置參數手段。
85.說說mongoDB和MySQL的區別
MySQL是傳統的關係型數據庫,MongoDB則是非關係型數據庫
mongodb以BSON結構(二進制)進行存儲,對海量數據存儲有着很明顯的優點。
對比傳統關係型數據庫,NoSQL有着很是顯著的性能和擴展性優點,與關係型數據庫相比,MongoDB的優勢有: ①弱一致性(最終一致),更能保證用戶的訪問速度: ②文檔結構的存儲方式,可以更便捷的獲取數據。
86.講講304緩存的原理
服務器首先產生ETag,服務器可在稍後使用它來判斷頁面是否已經被修改。本質上,客戶端經過將該記號傳回服務器要求服務器驗證其(客戶端)緩存。
304是HTTP狀態碼,服務器用來標識這個文件沒修改,不返回內容,瀏覽器在接收到個狀態碼後,會使用瀏覽器已緩存的文件
客戶端請求一個頁面(A)。 服務器返回頁面A,並在給A加上一個ETag。 客戶端展示該頁面,並將頁面連同ETag一塊兒緩存。 客戶再次請求頁面A,並將上次請求時服務器返回的ETag一塊兒傳遞給服務器。 服務器檢查該ETag,並判斷出該頁面自上次客戶端請求以後還未被修改,直接返回響應304(未修改——Not Modified)和一個空的響應體。
87.什麼樣的前端代碼是好的
高複用低耦合,這樣文件小,好維護,並且好擴展。webpack
原文地址:http://www.qdfuns.com/notes/38721/bed740616de4e5795baa5a28cc7be08c.htmlgit