10-撩課大前端-面試寶典-第十篇
阿新 • • 發佈:2018-11-30
1. px和em的區別?
px和em都是長度單位;
區別是:
px的值是固定的,指定是多少就是多少,
計算比較容易。
em得值不是固定的,並且em會繼承父級元素的字型大小。
瀏覽器的預設字型高都是16px;
所以未經調整的瀏覽器都符合: 1em=16px;
那麼12px=0.75em, 10px=0.625em
2. CSS 去掉inline-block元素間隙的幾種方法?
間隙是怎麼來的: 間隙是由換行或者回車導致的; 只要把標籤寫成一行或者 標籤直接沒有空格,就不會出現間隙; 怎麼去除? 方法1: 元素間的間隙出現的原因 是元素標籤之間的空格, 把空格去掉間隙自然就會消失。 <div class="itlike"> <span>撩課itlike</span><span>撩課itlike</span> </div> 方法2: 利用HTML註釋標籤 <div class="demo"> <span>撩課itlike</span><!-- --><span>撩課itlike</span> </div> 方法3: 取消標籤閉合 <div class="demo"> <span>撩課itlike <span>撩課itlike <span>撩課itlike <span>撩課itlike </div> 方法4: 在父容器上使用font-size:0;可以消除間隙 <div class="demo"> <span>撩課itlike</span> <span>撩課itlike</span> <span>撩課itlike</span> <span>撩課itlike</span> </div> .demo {font-size: 0;}
3. 在Javascript中什麼是偽陣列?如何將偽陣列轉化為標準陣列?
偽陣列(類陣列):
無法直接呼叫陣列方法,
length屬性有什麼特殊的行為,
但仍可以對真正陣列遍歷方法來遍歷它們。
典型的是函式的argument引數,還有像調
getElementsByTagName,
document.childNodes之類的,
它們都返回NodeList物件, 這些都屬於偽陣列。
可以使用Array.prototype.slice.call(fArray)將陣列
轉化為真正的Array物件。
4. 一次完整的HTTP事務是怎樣的一個過程?
基本流程: a. 域名解析; b. 發起TCP的3次握手; c. 建立TCP連線後發起http請求; d. 伺服器端響應http請求,瀏覽器得到html程式碼; e. 瀏覽器解析html程式碼,並請求html程式碼中的資源; f. 瀏覽器對頁面進行渲染呈現給使用者
5. 陣列快速排序?
思路: a) 在資料集之中,選擇一個元素作為"基準"(pivot)。 b) 所有小於"基準"的元素,都移到"基準"的左邊; 所有大於"基準"的元素,都移到"基準"的右邊。 c) 對"基準"左邊和右邊的兩個子集, 不斷重複第一步和第二步, 直到所有子集只剩下一個元素為止。 var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); };
6. 開發中有哪些常見的Web攻擊技術?
a) XSS(Cross-Site Scripting,跨站指令碼攻擊):
指通過存在安全漏洞的Web網站註冊使用者的瀏覽器
內執行非法的HTML標籤或者JavaScript進行的一種攻擊。
b)SQL注入
c) CSRF(Cross-Site Request Forgeries,跨站點請求偽造):
指攻擊者通過設定好的陷阱,強制對已完成的認證使用者進行
非預期的個人資訊或設定資訊等某些狀態更新。
7. 正則表示式驗證郵箱格式?
var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;
var email = "[email protected]";
console.log(reg.test(email)); // true
8. 正則表示式清除字串前後的空格?
function trim(str) {
if (str && typeof str === "string") {
// 去除前後空白符
return str.replace(/(^\s*)|(\s*)$/g,"");
}
}