水滴筹笔试题,2019年,记录下来
一、http请求
一次完整的HTTP请求,期间一共需要 3 次握手。
二、js小数
在js中,0.1 + 0.2 > 0.3 (0.1 + 0.2 = 0.30000004)
三、测试 文案的font-size是多少px(答案: 12px)
1 | * { |
1 | <div id='test' class='test1 test2' style="font-size: 17px;">测试</div> |
解释:!important的优先级竟然高于内联样式。
优先级顺序:!important > 内联样式 > id选择器样式 > 类选择器样式 > 元素选择器样式
四、红色区域的大小是(160px * 160px)
1 | .box{ |
知识延伸:
- 标准盒模型:元素的实际占位 = width + padding + border + margin
- IE盒模型:元素实际占位 = width + margin (其中width包含了padding和border)
- 这里设置box-sizing为border-box,实际上就用了IE盒模型(也称怪异模式),其中width=200px包含了padding和border。但是border左右共40px为黑色,所以红色部分为200-40=160px;(如果去掉box-sizing属性,那么红色部分就是width加上左右padding,200+20*2=240px了)
五、以下代码输出结果为 8
1 | console.log(foo()) |
解析:主要知识点是变量提升和函数提升(),参照 https://www.cnblogs.com/kawask/p/6225317.html
- 变量提升即将变量声明提升到它所在作用域的最开始的部分
- 函数声明式和函数字面量式。只有函数声明才存在函数提升
六、控制台输出结果为 false
1 | localStorage.setItem('show', false) |
解析:localStorage可以直接通过.的方式取值,同localStorage.getItem
七、控制台输出结果为 0 3 2 1
1 | setTimeout(function(){ |
八、控制台输出结果为 5
1 | var a = 5; |
解析:因为todo函数内部定义的变量a是局部变量,外边访问不到
九、控制台输出结果为 [“S”, “h”, “u”, “i”, “d”, “i”]
1 | (function(){ |
解析: 字符串强制转成数组 ?
十、代码题:点击li元素的时候输出其索引值 0,1,2
1 | <ul id="ul"> |
1 | // 答案 |
十一、代码题:实现get函数
1 | // 实现效果 |
1 | // 代码 |
十二、代码题:请解码被多次编码的 URL
例子: https%25253A%25252F%25252Fwww.baidu.com%25252F%25253Ftest%25253D1
条件: 被编码次数未知
结果: https://www.baidu.com/?test=1
1 | function dec(url) { |
十三、代码题
下面的数据结构中,不同层级的key可能会相同,实现一个方法,调用时更新上面数组的key值,是所有的key对应的值变更为新的随机数,并保证更新前相同的key更新为新值后也依然相同即可
1 | var arr = [{ |
1 | // 答案 |