一、Javascript實現2分法查找javascript
1 // 非遞歸實現 2 function binary_search(arr, key) { 3 var high = arr.length - 1; 4 var low = 0; 5 6 while (low <= high) { 7 var mid = parseInt((high + low) / 2); 8 9 if (arr[mid] == key) { 10 return mid; 11 } else if (arr[mid] < key) { 12 low = mid + 1; 13 } else if (arr[mid] > key) { 14 high = mid - 1; 15 } 16 } 17 } 18 19 // 遞歸實現 20 function binary_search2(arr, low, high, key) { 21 if (low > high) retuen - 1 22 var mid = parseInt((high + low) / 2); 23 24 if (arr[mid] == key) { 25 return mid; 26 } else if (arr[mid] < key) { 27 low = mid + 1; 28 return binary_search2(arr, low, high, key); 29 } else if (arr[mid] > key) { 30 high = mid - 1; 31 return binary_search2(arr, low, high, key); 32 } 33 } 34 35 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 36 console.log(binary_search(arr, 6)); 37 console.log(binary_search2(arr, 0, 9, 6));
二、你所瞭解到的Web攻擊技術?java
1)XSS(Cross-Site Scripting,跨站腳本攻擊)指經過存在安全漏洞的Wev網站註冊用戶的瀏覽器內運行非法的HTML標籤或者Javascript進行的一種攻擊。算法
處理辦法:【1】過濾特殊字符 【2】使用HTTP頭指定類型 w.Header().Set("Content-Type", "text/javascript");數據庫
2) SQL注入 攻擊者向服務器提交惡意的SQL查詢代碼,程序在接受後錯誤的將攻擊者的輸入做爲查詢語句的一部分執行,致使原始的查詢邏輯瀏覽器
被改變,額外的執行撩攻擊者精心構造的惡意代碼。安全
處理辦法:對進入數據庫的特殊字符(‘「\尖括號&*;等)進行轉義處理,或者編碼轉換服務器
3)CSRF(Cross-Site Request Forgeries,跨站點請求僞造)攻擊者盜用了你的身份,以你的名義發送惡意請求。app
三、寫一個function,清楚字符串先後的空格。(兼容全部的瀏覽器)函數
1 if(!String.prototype.trim) { 2 3 String.prototype.trim = function() { 4 return this.replace(/(^\s+)|(\s+$)/g, ""); 5 } 6 }
四、有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少走法?網站
1 function cStairs(n) { 2 if (n === 1 || n === 2) { 3 return 1; 4 } else { 5 return cStairs(n - 1) + cStairs(n - 2); 6 } 7 }
五、遞歸設計。實現一個函數,給該函數一個DOM節點,函數訪問其全部子元素(全部子元素,不單單是直接子元素),
每次訪問子元素的時候,併爲其傳一個callback?
// 訪問一個DOM tree,是一個經典的深度優先搜索的算法
1 function Traverse(DOM, callback) { 2 callback(DOM); 3 var list = DOM.children; 4 Array.prototype.forEach.apply(list, (item) => { 5 Traverse(item, callback); 6 }) 7 }