上来直接一套笔试题,不讲武德~
出的题比较简单,考的题都很基础,比较考验只因本功~
- 判断答案
null === undefined -- false
null == undefined -- true
typeof NaN -- number
typeof Object -- function
typeof Function -- function
Object instanceof Function -- true
Function instanceof Object -- true
'40' * 7 -- 280
'40' - 7 -- 33
-
css 自定义颜色属性有几种方式?
CSS的自定义颜色有六种表达方式:
- 16进制,例如 #ffffff
- RGB, 例如 RGB(255, 255, 255)
- rgba,例如 RGB(0, 0, 0, 0.5)
- 颜色关键字, 例如 red、blue
- hsl, 例如 hsl(0, 100%, 100%) 参数分别表示 色调(0\360:red,120:green,240:blue)、饱和度、亮度
- hsla, 例如 hsl(0, 100%, 100%, 0.5) 多了透明度
-
ES6 声明变量有哪几种方法?
var
let
const
function
class
import , 没想到吧,import 导入也是可以声明变量的,import { a } from 'aa'
-
js 强制转换成number类型有哪几种方法?
Number()
parseInt()
parseFloat()
隐式装换:例如 let a = 1
- 变量前面加符号 - \ + \ : -(-a) 、 +a、 1a
- 变量运算(注意,另一变量不可转换运算时为NaN):a - 0、a * 1、a / 1
-
CSS样式中的 important、内联选择器、ID选择器中,谁的优先级高,列出来。
important > 内联选择器 > ID选择器
-
https 默认端口号是多少
http为80, https为443
-
箭头函数中,说法错误的是
- 箭头函数还可以通过 .call()、.apply()、.bind() 方法来重新绑定它的 this 值 ---- 错误的,改变不了
- 箭头函数可以像普通函数一样使用 arguments 对象 ------ 错误的
-
ES6 中首次对函数的 name 属性进行了标准化,而且为了方便在调用栈里看到具体的函数名,ES6 里还增加了函数名推断的功能。下面哪个选项中函数的 name 属性并不完全等于 foo ?
A. const foo = () => {} B {foo: function(){}} C. {*foo(){}} D. {[Symbol("foo")](){}} E. class C {static get foo(){}} F. {async foo(){}}
选择 D E, D 中 name 属性为 [foo] ,Symbol 类型的属性键需要加中括号,E 中 name 属性为 get foo,getter 和 setter 分别加 get 和 set 前缀。
-
页面文档完全加载并且解析完成时,会触发什么事件?
DOMContentLoaded 事件
document.addEventListener('DOMContentLoaded', (event) => { console.log('DOM fully loaded and parsed'); // 译者注:"DOM 完全加载以及解析" });
-
js 数组方法哪个不会改变自身?
concat join reduce map forEach filter slice findIndex 而会改变原数组的有:pop push unshift shift sort splice reverse
-
iframe 会阻塞主页面的load事件吗
会,但是可以避免;可以在 onload 事件之后再加载 iframe,或者使用setTimeout异步加载
-
img、video、audio 标签的src资源会阻塞页面加载吗
不会,图片等资源还没下载完成时,文字等已经在渲染了,等到图片下载好了,页面会自动重排重绘
-
CSS多行文本居中方法
1. 使用flex
.father {
display: flex;
align-items:center;
}
2. 父元素使用等高 line-height 子元素使用inline-block 和 vertical-align
.father {
height: 100px;
line-height: 100px;
}
.child {
display: inline-block;
vertical-align: middle;
line-height: 1.5em;
}
- 使用CSS实现一个圆环,颜色填充为进度75%
- 截止HTTP1.1,请求方法有哪几种?如何区分简单请求和复杂请求?
- js 实现一个 Set 数据类型,要求有集合的差集、并集、补集、交集等方法
// set 数据类型
class mySet {
constructor() {
this.set = {};
}
add(val) {
if(!this.has(val)) {
this.set[val] = val;
return true;
}
return false;
}
delete(val) {
if(this.has(val)) {
delete this.set[val];
return true;
}
return false;
}
has(val) {
return this.set.hasOwnProperty(val);
}
clear() {
this.set = {};
}
size() {
return Object.keys(this.set).length;
}
values() {
return Object.values(this.set);
}
// 并集
union(otherSet) {
let unionSet = new mySet();
let values = this.values();
for(let i = 0; i < values.length; i++) {
unionSet.add(values[i]);
}
values = otherSet.values();
for(let i = 0; i < values.length; i++) {
unionSet.add(values[i]);
}
return unionSet;
}
// 交集
intersection(otherSet) {
let intersectionSet = new mySet();
let values = this.values();
for(let i = 0; i < values.length; i++) {
if(otherSet.has(values[i])) {
intersectionSet.add(values[i]);
}
}
return intersectionSet;
}
// 差集
difference(otherSet) {
let differenceSet = new mySet();
let values = this.values();
for(let i = 0; i < values.length; i++) {
if(!otherSet.has(values[i])) {
differenceSet.add(values[i]);
}
}
return differenceSet;
}
// 补集
complement(otherSet) {
let complementSet = new mySet();
let values = this.values();
for(let i = 0; i < values.length; i++) {
if(!otherSet.has(values[i])) {
complementSet.add(values[i]);
}
}
values = otherSet.values();
for(let i = 0; i < values.length; i++) {
if(!this.has(values[i])) {
complementSet.add(values[i]);
}
}
return complementSet;
}
}
let set = new mySet();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
//
let set2 = new mySet();
set2.add(3);
set2.add(4);
set2.add(5);
set2.add(6);
// 并集
let unionSet = set.union(set2);
console.log(unionSet.values());
- js 实现防抖节流函数