• 前端面试问题(3)


    1.怪异盒模型与正常盒模型的区别

    正常盒模型设置padding和border会增大盒模型面积  "外扩"

    ie盒模型设置padding和border会挤压内容区  "内嵌"

    2.如何清除浮动

    (1)在父级使用overflow:hidden

    (2)动态向父元素后面添加一个clear:both的块属性元素

    (3)动态添加一个div

    3.== 与 ===的区别是什么

    ==:值相等就可以

    ===:数据类型和值必须都相等

    4.基本数据类型与引用数据类型的区别是什么

    基本数据类型:值在栈区

    引用数据类型:值在堆区

    5.请写出三种定位的参考物分别是什么

    固定定位:相对于浏览器窗口

    相对定位:相对于元素原来的位置

    绝对定位:相对于有定位的父元素或者祖先元素

    6.字符串方法substr与substring的区别是什么

    substr(start,length)返回从start位置开始length长度的子串

    substring(start,end)返回从start位置开始到end位置的子串(不包含end)

    7.什么是原型链

    原型链:对象调用属性或方法的寻找过程

    先在自己的构造函数中寻找,如果没有就到自己的原型中寻找,如果还没有就到原型的原型中寻找,一直到找到object的原型,如果没有就报错

    8.请解释事件委托

    把事件添加给标签的父元素,通过事件对象e.target来实现具体的操作

    9.DOM0与DOM2的区别是什么

    Dom0:同一个事件只能实现一次

    Dom2:同一个事件可以添加多个观察者

    10.说一下存储机制之间的区别

    localStorage   数据存储在本地,(没有过期时间)需要手动删除,存储量大  

    sessionStorage  数据依赖浏览器,当页面关闭或者退出浏览器时清空数据,  存储量大

    cookie  可以为数据设置过期时间,存储量小,可以与后台共用

    11.说一下你对闭包的理解

    函数内实现另一个函数

    作用:局部变量数据持久化

    缺点:造成一定的内存压力

    12.call方法与apply方法的异同

    工作原理:改变this指向

    call(this,参数1,参数2,......)

    apply(this,[参数列表])

    13.请写出 阻止冒泡 与 阻止默认

    阻止默认  e.preventDefault()

    阻止冒泡  e.stopPropagation()

    14.请解释 构造函数 与 析构函数

    构造函数:开辟内存空间

    析构函数:释放内存空间

    15.什么是响应式开发

    一套代码适用于多个平台

    16.dom对象与jq对象如何互换

    dom转jq:$(对象)

    jq转dom:取下标

    17.简述一下你对this的理解

    this所属函数属于谁就指向谁

    18.请从html,css,js三个维度说一下如何减少页面加载时间

    html角度:多使用语义化标签,减少标签层级化嵌套

    css角度:减少动画使用;

                    适当的时候使用服务器字体;

                    使用精灵图/雪碧图(减少网络请求)

                    减少网络请求次数(节流)

    js角度:减少for循环的嵌套

                  适当多使用switch

                  减少重绘和回流次数,多使用类来修改样式,减少内联样式修改

                  少使用load,多使用ready

                  减少网络请求次数 

                  按需加载

    19.请用setTimeout实现setInterval



    timerFun()
    function timerFun(){
      //要执行的操作
      var timer=setTimeout(function(){
      timerFun()
      clearTimeout(timer)
      },2000)
    }

    20.代码:冒泡排序

    1.思想:两两比较,交换位置,小的在前面,大的在后面,一直比较

                  数组遍历第一遍以后,那么最后一个数字就是最大的

                  数组进行第二遍遍历,按照规则,第二大的数字就会跑到倒数第二大的位置

    2.两个数据交换位置

    var arr=[4,6,7,1,8,6,3,9]

    var temp=arr[0]

    arr[0]=arr[1]

    arr[1]=temp

    3.满足条件交换

    for(var i=0;i

        if(arr[i]>arr[i+1]){

          var temp=arr[i]

          arr[i]=arr[i+1]

          arr[i]=temp

       }

    }

    4.实现冒泡排序法

    var arr=[7,5,9,3,4,2,1,6,8]

    console.log(arr);

    for(var j=0;j

         if(arr[i]>arr[i+1]){

           var temp=arr[i]

           arr[i]=arr[i+1]

           arr[i+1]=temp

        }

    }
     

  • 相关阅读:
    tf.contrib.image
    使用 Secrets OPerationS 管理 Kubernetes 密钥
    R语言编写用户自定义函数:处理可能出错的代码、遇到错误继续处理而不停止代码运行
    猿人学 第一题
    Oracle database 21c 新特性:密码逐步切换策略
    未知待解决问题整理_像素流带宽占用问题
    FullCalendar日历插件说明文档
    Node.js简介
    如何恢复文件夹隐藏文件?超实用的2种技巧来了
    Android/Linux系统学习---目录
  • 原文地址:https://blog.csdn.net/weixin_53163211/article/details/127095298