逗比的腾讯面试
騰訊一面,被虐。
意識到自己是有多菜,內容明天補充。
以下是還記得的問題內容:
1.cookies的屬性有哪些?(這個問題完全不會,之前沒了解過cookies。)
比較常見的cookies的屬性除了name名稱和value值以外,還有下面的4種:
?、?span style="color:#ff0000;"> Expires:過期時間。
值為事件的字符串,指定瀏覽器可以刪除cookie文件的時間。
?、?Path:路徑。
值可以為一個目錄,或者一個路徑,指定與cookie關聯的Web頁。
?、?Domain:域。
值為域名,這是對path路徑屬性的延伸,指定與cookie關聯的Web服務器或者域。
注意:不能講cookie域屬性設置成與設置它的服務器所在域不同的值。
?、?Secure:安全。
值為“secure”或者為空,缺省狀態下為空,指定cookie的值通過網絡如何在用戶和Web服務器之前傳輸,即是否用https或者其他安全傳輸協議來傳輸數據。
注意:只加密與服務器傳輸過程中的數據,不加密本地保存的cookie文件。
2.JS如何獲取當前頁面的URL?
這個問題十分基礎,無奈當時忘記。
?、?span style="color:#ff0000;"> window.location.url 該方法以字符串的結果返回url的所有內容。
② 類似的方法還有:window.location.protocol、window.location.port、window.location.host、window.location.pathname,分別對面獲取協議、端口號、主機名和文件路徑。
3.JS事件冒泡?
對冒泡有所了解,但是到面試時要說清楚卻遇到困難,歸根結蒂還是對冒泡了解不深。
JS事件冒泡是指,在一個對象上觸發某類事件(比如單擊onclick事件),如果此對象定義了此事件的處理程序,那么此事件就會調用這個處理程序,如果沒有定義此事件處理程序或者事件返回true,那么這個事件會向這個對象的父級對象傳播,從里到外,直至它被處理(父級對象所有同類事件都將被激活),或者它到達了對象層次的最頂層,即document對象(有些瀏覽器是window)。
很簡單,就是子元素上觸發事件時,如果沒有定義對應的處理程序或者事件返回了true,那么就會發生冒泡,導致事件向父級對象傳播,直到被處理,或者到根元素即document對象。
那么應該如何阻止冒泡呢?
根據網上搜索到的內容,總結有以下的幾種:
?、僬{用event.stopPropagation()方法
1 <script type="text/javascript"> 2 $(function() { 3 $("#hr_three").click(function(event) { 4 event.stopPropagation(); //阻止事件冒泡5 }); 6 }); 7 <script>
這個方法會阻止事件冒泡,但不會阻止默認的事件行為。
?、诮o方法增加return false;
<script type="text/javascript">$(function() {$("#hr_three").click(function(event) {return false;});}); </script>這個方法阻止事件冒泡的同時還會阻止默認的事件。
?、厶砑?span style="color:#ff0000;">.target的條件
<script type="text/javascript">$(document).ready(function(){$('#switcher').click(function(event){if(event.target==this){ //這里添加一個判定條件$('#switcher .button').toggleClass('hidden');}})}) </script>?、苎a充event.preventDefault()方法
event.preventDefault()方法不會阻止冒泡,但是會阻止默認的事件行為。
4.JS事件捕獲?
待補充
5.從輸入url的那一刻起,到瀏覽器顯示頁面,中間的過程是怎么樣的?
真是TM好問題。
6.時針和分針夾角問題(貌似前端面試必問)
7.JS閉包是怎么樣的?
待補充
8.代碼或偽代碼解釋Ajax的工作過程
待補充
9.冒泡排序
用JavaScript完成:
1 function bSort(arr){ 2 var len = arr.length(); 3 for(var i = 0; i < len - 1; i++){ 4 for(var j =0; j < len - 1 -i; j++){ 5 if(arr[j] > arr[j+1]){ 6 var temp = arr[j]; 7 arr[j] = arr[j+1]; 8 arr[j+1] = temp; 9 } 10 } 11 } 12 }?
10.正則表達式識別手機號
正則表達式書寫如下:
中國電信:1[3578][01379]\d{8}
中國移動:134[012345678]\d{7}或1[34578][012356789]\d{8}
中國聯通:1[34578][01256]\d{8}
function IsMobile(text){var _emp = /^\s*|\s*$/g;text = text.replace(_emp,""); //去掉空格等無關內容var _d = /^1[3578][01379]\d{8}$/g;var _l = /^1[34578][01256]\d{8}$/g;var _y = /^(134[012345678]\d{7}|1[34578][012356789]\d{8})$/g;if(_d.test(text)){return 3; //中國電信
} else if(_l.test(text)){return 2; //中國聯通
}else if(_y.test(text)){return 1; //中國移動
}return 0; }
?
11.字母大小寫轉換函數
①toUpperCase():
用法:str.toUpperCase();
返回一個新的字符串,在其中 str 的所有小寫字符全部被轉換為了大寫字符。
?、趖oLowerCase():
用法:str.toLowerCase();
返回一個新的字符串,在其中 str 的所有大寫字符全部被轉換為了寫寫字符。
③和toLocaleLowerCase()
? toLocaleUpperCase() 用法和返回格式與 toUpperCase() 相同,但是toLocaleUpperCase()方法適應宿主環境的當前區域設置,按照本地方式把字符串轉換為大寫。只有幾種語言(如土耳 其語具)有地方特有的大小寫映射,所有該方法的返回值通常與 toUpperCase() 一樣。
轉載于:https://www.cnblogs.com/s1nker/p/4413118.html
總結
- 上一篇: 简化PHP开发的10个工具
- 下一篇: Twisted