• 随机面试题


    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.

       

     

         




     
  • 相关阅读:
    读《高效能人士的七个习惯》有感
    Springboot中的日志
    fastjson JSON.toJavaObject() 实体类首字母大写属性无法解析问题
    java多线程编程实例
    IDEA插件配置推荐
    Spring Boot 自定义数据源 DruidDataSource
    zookeeper环境搭建
    eureka注册中心的使用
    记事本编码
    Chrome浏览器基本操作
  • 原文地址:https://www.cnblogs.com/web-chuan/p/11347703.html
Copyright © 2020-2023  润新知