58同城2021校招笔试真题-前端

58同城2021校招笔试-前端

  1. 以下代码输出:
console.log([1,2,3,4,5].splice(1,2,3,4,5));
console.log([1,2,3,4,5].slice(1,2,3,4,5));

[2,3]和[2]

  • splice:返回被删除元素组成的数组(会改变原数组
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

参数:
start:开始删除的位置(从0开始计数);
deleteCount:删除的个数;
item1…:从start位置依次开始添加的元素

  • slice:返回被提取出来的元素组成的数组(不会改变原数组
arr.slice([begin[, end]])

参数:
begin和end分别为提取的起始位置(含)和截止位置(不含),均从0开始。

  1. root元素的高 (通过getComputedStyle(root).height计算) 为?
<html>
<body>
<div id="root" style="border:1px solid red;">
    <div style="width:10px;height:10px;margin:10px;"></div>
    <div style="width:10px;height:10px;margin:20px;"></div>
</div>
</body>
</html>

70px ———— 不明白
解析:相邻元素margin重叠,BFC
CSS 盒模型、BFC、IFC、GFC、FFC

  1. 假定某次上线,1小时内出bug的概率为50%,那么3小时内出bug的概率是?
    87.5%
    反向推:3小时内不出BUG的概率是0.50.50.5=0.125,则出概率就是1-0.125=0.875
    正向推:1/2 +(1/2)² +(1/2) ³=7/8
  2. 以下代码执行返回?
parseInt('0x111')

273
0x开头是16进制

  1. 下边关于https描述正确的是: A
    A.客户端会对服务器下发的证书进行域名校验
    B.客户端和服务器交互使用的是服务器下发的私钥
    C.黑客拦截服务器下发的证书后就可以伪造服务器和客户端进行通信
    D.手机只信任CA颁发的证书
    解析:
    HTTPS采用混合加密机制,包括公开密钥加密(非对称式加密,有公钥和私钥)和共享密钥加密(对称式加密,共用同样的密钥)。
    非对称加密阶段:
    1、服务器下发公钥给客户端,客户端使用该公钥加密数据,服务器接收到密文并使用自己的私钥解密;
    所以B项错误,服务器下发的是公钥,私钥只在服务器保存。
    但在服务器下发公钥的过程中如果被黑客攻击,客户端如果保证自己收到的公钥是否真实呢?这里就出现了CA认证机构,服务器先将公钥发给权威的CA获得公钥证书,再将公钥证书下发给客户端,客户端就可以向CA确认证书的真实性(在这一步骤进行校验,A选项正确)了。
    C选项中,若黑客拦截了证书,理论上确实可以让客户端把自己认为是服务器,但是黑客没有私钥,无法解密客户端发来的密文,也就做不到和客户端通信了,C错。
    所以这个步骤的实际过程是:
    服务器从CA获取公钥证书,下发公钥证书给客户端,客户端通过浏览器内置CA公钥解密该证书得到服务器公钥,使用该公钥加密数据,服务器接收到密文并使用自己的私钥解密;
    对称加密阶段:
    2、由于1(非对称加密阶段)速度很慢,所以可以通过1中的方式安全地交换密钥,后续的通信中,服务器和客户端可以使用共享密钥加解密。
    D。采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。
  2. 下边关于XSS描述正确的是:XSS攻击需要服务器对接口进行防护
  3. 以下运行结果:
for(var i = 0; i < 10; i++) {

    setTimeout(function() {

        console.log(i);

    }, 1000);

}

10个10
8. 在跨域请求中,下列请求头中哪种content-type一定会触发cors预检查
application/json
触发预检请求的三类条件:

默认情况下,跨域请求只支持GET,HEAD,POST方法,如果不是这三个请求方法(比如:PUT、DELETE、CONNECT、OPTIONS、TRACE和PATCH),那么将触发预检请求

默认情况下,浏览器跨域请求时,会自动添加的请求头(HOST,Referer,Connection、Accept、User-Agent,Accept-Languange,Accept-Encoding,Accept-Charset和Content-Type),这些请求中还有其他请求头时,那么将触发预检请求。

如1、2所说的情况排除在外的条件下,跨域请求是,浏览器支持的Content-Type值为application/x-www-form-urlencoded,multipart/form-data和text/plain。如果是其他数据类型(如application/json,text/xml…),那么将触发预检请求。
参考
9.下面代码输出结果正确的是

function Setcount(count){

this.count=count

}

Setcount.prototype.printCount=function(){

console.log(this.count)

}

let a = new Setcount(100)

a.count =200

a.__proto__.count=300

a.__proto__.printCount()

a.printCount()

300,200
10.关于position定位,下列说法正确的是
z-index属性对元素position属性为relative,absolute, fixed都可以做层级设置
11.请选择console打印的正确值

Object.prototype.foo = 'Object';
Function.prototype.foo = 'Function';
function Animal () {};
var cat = new Animal();
console.log(cat.foo);
console.log(Animal.foo);

Object Function
解析:每个构造函数拥有__prop__和prototype属性,prop__是原型链查询时实际可以查到的,它指向构造函数的原型对象;而prototype是函数独有的,它包含所有实例共享的属性和方法,因此实例化的对象会指向它,
Animal为构造函数,实际指向的是__prop
,即Function.prototype,因此Animal.foo即Function.prototype.foo=‘Function’
cat是Animal实例化出来的,因此他们的__proto__指向的是Animal的原型对象,即cat.foo = Object.prototype.foo
12.
13.下列哪个属性不会引起浏览器重排(reflow):

 @keyframes animate {
    0%{
        transform: translate(0,0);
    }
    25%{
        transform: translate(200px,0);
    }
    50%{
        transform: translate(200px,200px);
    }
    75%{
        transform: translate(0,200px);
    }
} 
.hide {
    visibility:hidden;
}

14.关于javascript,以下选项描述错误的是 B E
A.在原型上扩展的可枚举方法,会被for in循环出来
B.通过hasOwnProperty可判断一个对象以及其原型链上是否具有指定名称的属性
C.每个函数对象都有prototype属性,返回对象类型原型的引用
D.For循环是按顺序的,for in 循环是不一定按顺序的
E.for…of 循环可遍历普通对象,如{a:‘1’, b:2}
B:hasOwnProperty的可判断对象不包括原型链
E:for…of…: 它是es6新增的一个遍历方法,但只限于迭代器(iterator),因此普通的对象用for…of遍历,是会报错的。它原型链上的某个对象,必须有一个键为 @@iterator 的属性
(包括 Array,Map,Set,String,TypedArray,arguments 对象等等

15.下列关于js事件的描述中,正确的有
A.事件冒泡是指当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。
B.不支持冒泡的事件有blur、focus、load、resize、mouseleave
D.通过addEventListener方法给Dom添加事件监听,addEventListener形参中的第三个参数控制是捕获传递触发还是冒泡传递触发。
16.css中哪些属性可以继承 font-size color
17.BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。形成BFC的条件有
A.display 为以下其中之一的值 inline-block,table-cell,table-caption、flex
B.浮动元素,float 除 none 以外的值
C.overflow 除了 visible 以外的值(hidden,auto,scroll)
D.绝对定位元素,position(absolute,fixed)
解析:浮动元素,绝对定位元素,非块级盒子的块级容器(例如inline-blocks,table-cells,and table-captions),以及overflow属性值不是“ visible”(visible是overflow的默认值)的块级盒子(视口除外),这些元素就会为他们的内容创建一个BFC。
什么是BFC
18.下列会导致页面回流reflow的操作有
添加或者删除可见的DOM元素
resize浏览器窗口
设置可见元素为display: none
读取元素的属性offsetWidth和offsetHeight
在这里插入图片描述
19.关于position定位,下列说法正确的是
absolute的元素,如果它的父容器设置了position属性,并且position的属性值为absolute或者relative,那么就会依据父容器进行偏移
fixed元素,可定位于相对于浏览器窗口的指定坐标,它始终是以 body 为依据
relative元素是参照父级的原始点为原始点,无父级则以BODY的原始点为原始点,配合TOP、RIGHT、BOTTOM、LEFT进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位
20.结果为真的表达式:
null = = undefined
undefined = == undefined
null = = null
null = = = null
21.实现一个函数,输入一个字符串,返回该字符串出现最多的字母
22.编写查询函数返回数字字符串中最大的公共前缀字符串
23.帮帮同学在设计一个文字碰碰消游戏,规定"五"和"八"形成"五八"组合碰到一起即会消除,(“八五” 不会消除)。

例如 “五八”, “五八五八”, “五五八八”。说明: “五五八八” 是内层的"五八"碰在一起消除后,外层的"五八"会碰在一起消除。

帮帮同学想知道n个"五"和"八"组成的字符串中,有多少种组合可以满足消除为空字符串。

现为帮帮同学设计一个方法,输入整数n,表示"五"和"八"的数量,返回n个"五"和n个"八"组成的字符串中,满足消除为空字符串的组合数。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值