逗比的腾讯面试

腾讯一面,被虐。

意识到自己是有多菜,内容明天补充。

以下是还记得的问题内容:

1.cookies的属性有哪些?(这个问题完全不会,之前没了解过cookies。)

  比较常见的cookies的属性除了name名称和value值以外,还有下面的4种:

  ① Expires:过期时间。

  值为事件的字符串,指定浏览器可以删除cookie文件的时间。

  ② Path:路径。

  值可以为一个目录,或者一个路径,指定与cookie关联的Web页。

  ③ Domain:域。

  值为域名,这是对path路径属性的延伸,指定与cookie关联的Web服务器或者域。

  注意:不能讲cookie域属性设置成与设置它的服务器所在域不同的值。

  ④ Secure:安全。

  值为“secure”或者为空,缺省状态下为空,指定cookie的值通过网络如何在用户和Web服务器之前传输,即是否用https或者其他安全传输协议来传输数据。

  注意:只加密与服务器传输过程中的数据,不加密本地保存的cookie文件。

2.JS如何获取当前页面的URL?

  这个问题十分基础,无奈当时忘记。

  ① 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>

  这个方法会阻止事件冒泡,但不会阻止默认的事件行为。

  ②给方法增加return false;

<script type="text/javascript">
    $(function() {
        $("#hr_three").click(function(event) {
            return false;
        });
    });
</script>

  这个方法阻止事件冒泡的同时还会阻止默认的事件。  

  ③添加.target的条件

<script type="text/javascript">
    $(document).ready(function(){
        $('#switcher').click(function(event){
            if(event.target==this){ //这里添加一个判定条件
                $('#switcher .button').toggleClass('hidden');
            }
        })
    })
</script>

  ④补充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 的所有小写字符全部被转换为了大写字符。

  ②toLowerCase():

    用法:str.toLowerCase();

    返回一个新的字符串,在其中 str 的所有大写字符全部被转换为了写写字符。

  ③和toLocaleLowerCase()

     toLocaleUpperCase() 用法和返回格式与 toUpperCase() 相同,但是toLocaleUpperCase()方法适应宿主环境的当前区域设置,按照本地方式把字符串转换为大写。只有几种语言(如土耳  其语具)有地方特有的大小写映射,所有该方法的返回值通常与 toUpperCase() 一样。

原文地址:https://www.cnblogs.com/s1nker/p/4413118.html