随机面试题

1.截取字符串abcdefg里面的cde

  str.substring(2,5)  str.substr(2,3)  str.slice(2,3)

2.清除浮动的几种方式,各自优缺点

  (1:使用空标签清除浮动clear:both。

    原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

    优点:通俗易懂,容易掌握

    缺点:会添加很多无意义的空标签,有违结构与表现的分离,在后期维护中将是噩梦

    建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

  (2:父级div定义overflow:hidden

    原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

    优点:简单,代码少,浏览器支持好

    缺点:不能和position配合使用,因为超出的尺寸的会被隐藏

    建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用

  (3:父级div定义伪类:after和zoom(用于非IE浏览器)

    原理:IE8以上和非IE浏览器才支持:after,原理和方法1有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

    优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)。

    缺点:代码多,要两句代码结合使用,才能让主流浏览器都支持

    建议:推荐使用,建议定义公共类,以减少CSS代码

3.闭包是什么,有什么特性

    为什么产生闭包:javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。出于种种原因,我们有时候需要获取到函数内部的局部变量。但是,上面已经说过了,正常情况下,这是办不到的!只有通过变通的方法才能实现。那就是在函数内部,再定义一个函数。

    什么是闭包: 闭包就是能够读取其他函数内部变量的函数。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

    优点:最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在f1调用后被自动清除。

    缺点

      1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

      2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

4.IE常见的兼容问题

    (1:不同浏览器的标签默认外补丁margin和内补丁padding不同

         发生概率:100%

         解决方案:使用CSS通配符*,设置内外补丁为0

    (2:块属性标签float之后,又有横向的margin值,在IE6中显示会比设置的大(IE6双边距bug)

           发生概率:90%

         解决方案:在float标签样式控制中加入display:inline;

    (3:滚动条到顶端的距离(滚动高度)到左端的距离

         var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

         var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;

    (4: 获取className的集合

       obj.getElementsByClassName(IE不支持)

     (5:   获取非行内样式兼容

       window.getComputedStyle ? getComputedStyle(obj,true)[attr] : obj.currentStyle[attr];

     (6:获取事件对象的兼容

         evt = evt || window.event

     (7:获取键盘按键编码值的兼容

         var key = evt.keyCode || evt.charCode || evt.which;

    (8:阻止事件冒泡的兼容和阻止超链接的默认行为的兼容

        e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; 事件冒泡

        evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;组织默认行为

     (9:添加事件监听器的兼容和移除事件监听的兼容

        obj.addEventListener(event,fn,boo);和obj.attachEvent('on' + event,fn);

        obj.removeEventListener(event,fn,boo);和obj.detachEvent('on' + event,fn);

    (10:获取事件源的兼容

        var target = event.target || event.srcElement;

5.如何居中不定宽高的div

   提供三种方法,供参考

      使用Flex

      只需要在父盒子设置:display: flex; justify-content: center;align-items: center;

   使用 CSS3 transform

      父盒子设置:position:relative

      Div 设置: transform: translate(-50%,-50%);position: absolute;top: 50%;left: 50%;

   使用 display:table-cell 方法

      父盒子设置:display:table-cell; text-align:center;vertical-align:middle;

      Div 设置: display:inline-block;vertical-align:middle;

 6.TCP的3次握手

  握手

   1、客户端采用TCP协议将带有SYN标志的数据包发送给服务器,等待服务器的确认。

   2、服务器端在收到SYN的数据包后,必须确认SYN,即自己发送的ACK标志,同时,自己也将会向客户端发送一个SYN标志。

   3、客户端在接收到服务器短的SYN+ACK包后,自己会向服务器发送ACK包,完成三次握手。那么客户端和服务器正式建立了连接,开始传输数据。

7.请简述盒模型

  CSS3中有个box-sizing属性可以控制盒子的计算方式,

  content-box:padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和。(W3C盒子模型)

  border-box:padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值。(IE6盒子模型)

8.

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     




 

转载于:https://www.cnblogs.com/web-chuan/p/11347703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值