笔试题回顾~2023.04.16

50 阅读4分钟
上来直接一套笔试题,不讲武德~

出的题比较简单,考的题都很基础,比较考验只因本功~

  1. 判断答案
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
  1. 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) 多了透明度
  2. ES6 声明变量有哪几种方法?

    var

    let

    const

    function

    class

    import , 没想到吧,import 导入也是可以声明变量的,import { a } from 'aa'

  3. js 强制转换成number类型有哪几种方法?

    Number()

    parseInt()

    parseFloat()

    隐式装换:例如 let a = 1

    • 变量前面加符号 - \ + \ : -(-a) 、 +a、 1a
    • 变量运算(注意,另一变量不可转换运算时为NaN):a - 0、a * 1、a / 1
  4. CSS样式中的 important、内联选择器、ID选择器中,谁的优先级高,列出来。

     important > 内联选择器 > ID选择器
    
  5. https 默认端口号是多少

    http为80, https为443
    
  6. 箭头函数中,说法错误的是

    • 箭头函数还可以通过 .call()、.apply()、.bind() 方法来重新绑定它的 this 值 ---- 错误的,改变不了
    • 箭头函数可以像普通函数一样使用 arguments 对象 ------ 错误的
  7. 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 前缀。

  8. 页面文档完全加载并且解析完成时,会触发什么事件?

    DOMContentLoaded 事件
    
     document.addEventListener('DOMContentLoaded', (event) => {
       console.log('DOM fully loaded and parsed'); // 译者注:"DOM 完全加载以及解析"
      });
    
  9. js 数组方法哪个不会改变自身?

    concat  join  reduce  map  forEach  filter  slice  findIndex
    
    而会改变原数组的有:pop push unshift shift sort splice reverse
    
  10. iframe 会阻塞主页面的load事件吗

    会,但是可以避免;可以在 onload 事件之后再加载 iframe,或者使用setTimeout异步加载

  11. img、video、audio 标签的src资源会阻塞页面加载吗

    不会,图片等资源还没下载完成时,文字等已经在渲染了,等到图片下载好了,页面会自动重排重绘

  12. 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;
}
  1. 使用CSS实现一个圆环,颜色填充为进度75%



  1. 截止HTTP1.1,请求方法有哪几种?如何区分简单请求和复杂请求?
  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());
  1. js 实现防抖节流函数

防抖和节流函数