1.以下代码输出 ?
console.log([1,2,3,4,5].splice(1,2,3,4,5)); // [2,3]
console.log([1,2,3,4,5].slice(1,2,3,4,5)); // [2]
- splice( ): 拼接,该方法返回被删除元素组成的数组, 并且会改变原数组 , 语法为
arr.splice(start, deletecoount ,item1,item2,....)
start: 开始删除的索引
deletecount: 删除的个数
item1 item2 : 从start的索引依次开始添加元素
返回值: 被删除元素组成的数组 没有删除则为空数组 - slice( ): 切割,该方法返回被提取出来的元素组成的数组,但不会改变原数组,语法为
arr.slice(begin, end)
begin: 提取的起始索引位置(包含)
end: 提取的结束索引位置(不包含)
2.root元素的高(通过getComputedStyle(root).height计算)为 ?
<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>
答案:root元素的高为70px div的margin发生了重叠 取大的20 10+10+20+10+20=70
- 盒模型分为: 标准盒模型和怪异盒模型
标准盒模型大小=content + padding + border + margin
宽和高 : content
怪异盒模型大小(给元素添加css3属性box-sizing:border-box;)=content(content+padding+border) + margin
宽和高:conent(content+padding+border)
3.假定某次上线,1小时内出bug的概率为50%,那么3小时内出bug的概率是?
答案:87.5%
1小时内不出bug的概率是0.5 三小时内不出bug的概率是0.5*0.5 *0.5=0.125 出bug的概率是1-0.125=0.875
4.以下代码执行返回?
parseInt('0x111'); //273
1*16^0 + 1*16^1 + 1*16^2 = 273
- parseInt( ):将参数(字符串)强制转换成整型
- 有效数字转换成整数 到非数字为止 即非数字后面的数字不能转换
- 取整数 去小数 非有效数字开头 直接NaN
- 第二个参数是转换为几进制 注意不能超出数字范围 否则结果为NAN
- 0x开头会默认转化为16进制
5.下边关于https描述正确的是:
A.客户端会对服务器下发的证书进行域名校验
B.客户端和服务器交互使用的是服务器下发的私钥
C.黑客拦截服务器下发的证书后就可以伪造服务器和客户端进行通信
D.手机知心人CA颁发的证书答案:A
6.下边关于XSS描述正确的是:
A.XSS又名跨站脚本攻击,是利用服务器查询漏洞,在提交数据中注入sql语句,从而破坏网站数据
B.防范XSS攻击只要前端对数据进行Base64就可以解决
C.XSS攻击需要也服务器对接口进行防护
D.XSS攻击仅在表单提交时使用答案:C
7.以下运行结果:
for(var i = 0;i < 10; i++) {
setTimeout(function(){
console.log(i);
},1000)
} //10个10
setTimeout中的闭包函数是每1s执行一次,由于for循环的执行速度远小于1s,所以当开始执行闭包函数的时候for循环已经结束了(i = 10),之后闭包执行10次,所以打印了10个10
8.在跨域请求中,下列请求头中哪种content-type一定会触发cors预检查
A.text/plain
B.multipart/from-data
C.application/x-www-from-unlencoded
D.application/json答案:C
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(); //300
a.printCount(); //200
原型和原型链:a是Setcount的实例 即 a.__proto__ = Setcount.prototype 查找一个属性时 先在本身找 本身找不到 顺着原型链找 两次调用的this一个指向a.__proto__(即构造函数的显性原型)一个指向a
10.关于position定位,下列说法正确的是
A.relative,absolute,fixed都会脱离当前文档流,并相对于当前位置设置偏移量
B.absolute元素如果其父级设置了fixed属性,则其会相对于浏览器窗口设置偏移
C.z-index属性对于元素position属性为relative,absolute,fixed都可以做层级设置
D.relative元素以及它原来的位置为基准偏移,在其移动后,原来的位置不再占据空间答案:C
- 文档流就是默认规则: 布局从上至下 从左至右
- 默认定位static: 无任何差别
- 相对定位relative: 元素相对于自己在标准流中的位置偏移 其他元素仍然以为该元素在原位置 也就是没有脱标
- 绝对定位absolute: 元素相对于自己的父元素偏移 如果不存在 则相对于body偏移(即浏览器窗口) 其他元素认为该元素不在原位置了 也就是脱标
- 固定定位fixed: 元素始终相对于浏览器窗口偏移 也脱标
- 粘性定位sticky: 在可视区不脱离文档流 滚动到某个阈值点之后 开始固定
- 使用定位就可能重叠 那么怎样控制哪一个元素在顶层(即不被覆盖)呢?
- 通过给定位的元素设置
z-index:数值属性可以控制元素的层叠顺序
- 通过给定位的元素设置
11.请选择console打印的正确值
Object.prototype.zhangsan = 'Object';
Function.prototype.zhangsan = "Function";
function Animal() {};
var cat = new Animal();
console.log(cat.zhangsan); //Object
console.log(Animal.zhangsan); //Function
原型 原型链 画图理解
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.关于javascript,以下选项描述错误的是
A.在原型上扩展的可枚举方法,会被for in 循环出来
B.通过hasOwnProperty可判断一个对象以及其原型链上是否具有指定名称的属性
C.每个函数对象都有prototype属性,返回对象类型原型的引用
D.For循环是按顺序的,for in循环是不一定按顺序的
E.for...of循环可遍历普通对象,如{a:'1',b:2}答案:BE
- hasOwnProperty检测对象本身 in原型链和本身任意一个有都为true
14.下列关于js事件的描述中,正确的有
A.事件冒泡是指当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发
B.不支持冒泡的事件有blur,focus,load,resize,mouseleave
C.事件委托不依赖于事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件
D.通过addEventListener方法给Dom添加事件监听,addEventListener形参中的第三个参数控制是捕获传递触发还是冒泡传递触发答案:ABD
- 总结不支持冒泡的类型
addEventListener(event,function,useCapture);
15.css中哪些属性可以继承
- 字体系列属性 font相关
- 文本系列属性 text相关 包括line-height行高
- 元素可见性: visibility
- 表格布局属性:
16.BFC格式化上下文,是web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器 形成BFC的条件有
17.下列会导致页面回流reflow的操作有
A.添加或者删除可见的DOM元素
B.仅修改DOM元素的字体颜色 背景色
C.resize浏览器窗口
D.设置可见元素为display:none
E.读取元素的属性offsetWidth和offsetHeight答案:ACDE
18.关于position定位,下列说法正确的是
A.absolute的元素,如果它的父容器设置了position属性,并且position的属性值为absolute或者relative,那么就会根据父容器进行偏移
B.relative元素以它原来的位置为基准偏移,在其移动后,原来的位置不再占据空间
C.fixed元素,可定位于相对浏览器窗口的指定坐标,它始终是以body为根据
D.relative元素是参照父级的原始点为原始点,无父级则以BODY的原始点为原始点,配合top,right,bottom,left进行定位,当父级内有padding等css属性时,当前级的原始点则参照父级内容区的原始点进行定位答案:ACDD有疑问
19.请选择结果为真的表达式
console.log(null === undefined); //false
console.log(null == undefined); //true
console.log(undefined === undefined); //true
console.log(null == null); //true
console.log(null === null); //true
20.哪个属性不会引起浏览器重排reflow
21.实现一个函数,输入一个字符串,返回该字符串出现最多的字母
22.编写查询函数返回数字字符串中最大的公共前缀字符串
23.帮帮同学在设计一个文字碰碰消游戏,规定"五"和"八"形成"五八"组合碰到一起即会消除,("八五"不会消除) 例如"五八","五八五八","五五八八". 说明:"五五八八"是内层的"五八"碰在一起消除后,外层的"五八"会碰在一起消除
帮帮同学想知道n个"五"和"八"组成的字符串中,有多少种组合可以满足消除为空字符串
现为帮帮同学设计一个方法,输入整数n,表示"五"和"八"的数量,返回n个"五"和n个"八"组成的字符串中,满足消除为空字串的组合数