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开始。
2.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
3.假定某次上线,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
4.以下代码执行返回?
parseInt('0x111')
1
273
0x开头是16进制
5.下边关于https描述正确的是: A
A.客户端会对服务器下发的证书进行域名校验
B.客户端和服务器交互使用的是服务器下发的私钥
C.黑客拦截服务器下发的证书后就可以伪造服务器和客户端进行通信
D.手机只信任CA颁发的证书
解析:
HTTPS采用混合加密机制,包括公开密钥加密(非对称式加密,有公钥和私钥)和共享密钥加密(对称式加密,共用同样的密钥)。
非对称加密阶段:
1、服务器下发公钥给客户端,客户端使用该公钥加密数据,服务器接收到密文并使用自己的私钥解密;
所以B项错误,服务器下发的是公钥,私钥只在服务器保存。
但在服务器下发公钥的过程中如果被黑客攻击,客户端如果保证自己收到的公钥是否真实呢?这里就出现了CA认证机构,服务器先将公钥发给权威的CA获得公钥证书,再将公钥证书下发给客户端,客户端就可以向CA确认证书的真实性(在这一步骤进行校验,A选项正确)了。
C选项中,若黑客拦截了证书,理论上确实可以让客户端把自己认为是服务器,但是黑客没有私钥,无法解密客户端发来的密文,也就做不到和客户端通信了,C错。
所以这个步骤的实际过程是:
服务器从CA获取公钥证书,下发公钥证书给客户端,客户端通过浏览器内置CA公钥解密该证书得到服务器公钥,使用该公钥加密数据,服务器接收到密文并使用自己的私钥解密;
对称加密阶段:
由于1(非对称加密阶段)速度很慢,所以可以通过1中的方式安全地交换密钥,后续的通信中,服务器和客户端可以使用共享密钥加解密。
D。采用HTTPS协议的服务器必须要有一套数字证书,可以是自己制作或者CA证书。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用CA证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。
6.下边关于XSS描述正确的是:
XSS攻击需要服务器对接口进行防护
7.以下运行结果:
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.
var bar = [
1
,
2
,
3
];
for
(var i in bar) {
setTimeout(function(){console.log(bar[i])},
0
);
console.log(bar[i]);
}
答案:123和333
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。
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个"八"组成的字符串中,满足消除为空字符串的组合数。
标签:公钥,58,真题,元素,证书,2021,服务器,prototype,客户端 From: https://www.cnblogs.com/iqcarry/p/16598136.html