北京某公司前端笔试题及其答案

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Carrie_zzz/article/details/88087597

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1》用来调用函数,并用指定对象来替换(this)的值,同时指定数组来替换函数的参数
2》call
3》当后面的参数确定的时候用call.参数之间用逗号链接;当后面的参数不确定的时候用apply,参数通过数组的形式传入
(拓展他们的用途)
1》改变this指向
2》调用其他对象的函数

在这里插入图片描述

什么是跨域?
当协议,子域名,主域名,端口任意各不相同的时候,都算不同的域,不同域之间相互请求的资源,就叫做跨域。
方法
1》代理:通过后台获取其他域名下的内容,然后再把获取到的内容返回给前端
2》JSONP:创建script标签然后添加到页面
:3》XHR2:XMLHttpRequest Level2是h5提供的方法,在服务起头部添加如下代码
header( "Access-Control-Allow-Origin:*" ); header( "Access-Control-Allow-Methods:POST,GET" );

在这里插入图片描述

6种,分别是:static;relative;absolute;fixed;inherit;sticky
sticky(粘性定位) 基于用户的滚动位置来确定,在relative和flxed之间来回切换,在目标区域内他的行为就像relative;当页面滚动超出目标区域的时候,就像fixed;元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位
static默认情况下所有的定位都采用静态的定位方式
relative相对自己定位
absolute绝对定位。相对于 static 定位以外的第一个父元素(也称祖先元素)进行定位,如果不存在这样的父元素,则依据最初的包含块
fixed固定定位,相对于浏览器窗口来定位
inherit 规定应该从父元素继承 position 属性的值

在这里插入图片描述

文本居中垂直
text-align:center;line-height:xxpx; vertical-align实现垂直居中
背景图片垂直居中
background: url(xxx.jpg) #ffffff no-repeat center;
div
水平居中:margin:0 auto;
table-cell元素居中
将父盒子设置为table-cell元素,可以使用text-align: center;和vertical-align: middle;实现水平、垂直居中
绝对定位居中
1》left和top均为50%,这时子盒子的左上角居中对齐,利用margin实现偏移
2》left和top均为50%transform:translate(-50%, -50%);
3》top、right、bottom、left均为0,margin为auto实现偏移
Flexbox居中
align-items: center; justify-content: center;

在这里插入图片描述

区别
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝。
深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝例:
方法
JSON方法 JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)缺点:丢失constructor,RegExp无法实现
jquery方法 jQuery.extend(true,target,obj);
常规js方法

function extendDeepCopy(obj,newobj){
    var newobj=newobj||{};
    for(var i in obj){
        if(typeof obj[i]=='object'){
            newobj[i]=(obj[i].constructor==="Array")?[]:{};
            extendDeepCopy(obj[i],newobj[i]);
        }else{
            newobj[i]=obj[i];
        }
    }
    return newobj;
}

在这里插入图片描述

200:一切正常,对GET和POST请求的应答文档跟在后面
301:永久重定向
302:临时重定向
304:Not Modified,客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户,原来缓冲的文档还可以继续使用。
400请求出现语法错误
403资源不可用
404无法找到指定的资源
500服务器遇到了不可预料的错误,不能完成客户的请求

在这里插入图片描述

1》map返回一个新数组数组中的元素为原始数组元素调用函数处理后的值。不会对空数组进行检测,不会改变原始数组
2》filter吧数组中的某些元素过滤掉,然后返回剩下的元素 ,和map类似也接受一个函数,和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素(可以去除重复的元素)
3》some检测数组中的元素是否满足指条件,如果有一个满足条件就返回true,它不会改变原始数组
4》every检测数组中所有元素是否满足指定条件,只要有一个不满足就返回false
5》forEach等等,请参考我的博客~区别

在这里插入图片描述

如果代码中有很多if—else可以使用表驱动的方式
减少HTTP请求数
合并css图片,使用精灵图
外部脚本置底
将css放在head中
减少不必要的http跳转
避免重复的资源请求

在这里插入图片描述

var quickSort = function(arr) {
  if (arr.length <= 1) {//如果数组长度小于等于1无需判断直接返回即可 
        return arr;
    }
  var pivotIndex = Math.floor(arr.length / 2);//取基准点 
  var pivot = arr.splice(pivotIndex, 1)[0];//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数
  var left = [];//存放比基准点小的数组
  var right = [];//存放比基准点大的数组 
  for (var i = 0; i < arr.length; i++){ //遍历数组,进行判断分配 
    if (arr[i] < pivot) {
      left.push(arr[i]);//比基准点小的放在左边数组 
    } else {
      right.push(arr[i]);//比基准点大的放在右边数组 
    }
  }
         //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; 
  return quickSort(left).concat([pivot], quickSort(right));
};<br>使用的时候,直接调用quickSort()就行了。
展开阅读全文

没有更多推荐了,返回首页