11.13牛客58同城校招题

124 阅读7分钟

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

  • 盒模型分为: 标准盒模型和怪异盒模型

b733bdb0fe768b81a0b05c75b00a3e4.jpg
标准盒模型大小=content + padding + border + margin
宽和高 : content

ec824793f3e7594aed8793cf8c3d253.jpg
怪异盒模型大小(给元素添加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属性时,当前级的原始点则参照父级内容区的原始点进行定位
答案:ACD D有疑问

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个"八"组成的字符串中,满足消除为空字串的组合数