前端面试问题(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

<br class="Apple-interchange-newline"><div></div>
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<arr.length;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<arr.length-1-j;i++){

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

       var temp=arr[i]

       arr[i]=arr[i+1]

       arr[i+1]=temp

    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值