2018 cvte 线上笔试总结

2018-03-10  本文已影响0人  ilgb

刚刚完成了cvte的线上笔试,趁热做一下总结。文章将从下面几个方面进行讲述。
1.总体体会。
2.涉及的陌生知识点的总结。
3.面试心得总结。

总体体会

总的来说,面试的题目难度还是可以接受,不过涉及的知识面有点广,所以对于比较陌生的知识点可能把握的不是很好。笔试选择题涉及到CSS(定位,Dom操作,隐藏), JS(原型 proto),闭包,异步(async 和 await), ES6(生成器),算法(主要有插排和快排,环形队列),计算机网络(很简单,就考了个分层),正则表达式。编程题一道是数组操作,一道是包装localStorage使其存储具备生命期,难度适中。

涉及到陌生知识点总结

1__proto__: 关于 __proto__ 描述直接看这里
主要是理解两点:一是__proto__ 本质是一个访问器,即具有get和set方法;二是其指向问题: 'to the value of its constructor’s "prototype" ' (指向其构造函数的prototype)。下面通过几个例子说明一下。

var f = new F(); 
//于是有
f.__proto__ === F.prototype //true
//又因为
F.prototype === o;//true
//所以
f.__proto__ === o;
let p = {
    a: function () {
        console.log('aaa');
    }
};
shape.prototype.__proto__ = p;//说明其具有set方法,`__proto__`对应constructor的prototype,即shape.prototype.constructor.prototype=>shape.prototype,所以方法a就是shape.prototype.a,显然可以被new shape出的示例访问。

let circle = new shape();
circle.a();//aaa
console.log(shape.prototype === circle.__proto__);//true
  1. asyncawait:需要注意一下几个方面。我们将通过例子一一讲述。
    async是异步函数声明的标志,如果把整个函数打印出来,将显示函数的所有代码。
function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

var a = async function asyncCall() {
  console.log('calling');
 var result =  await resolveAfter2Seconds();

  // expected output: "resolved"
};
console.log(a);
//async function asyncCall() {
//  console.log('calling');
// var result =  await resolveAfter2Seconds();

 // // expected output: "resolved"
//};

调用async函数时返回一个Promise对象。

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

 async function asyncCall() {
  console.log('calling');
 var result =  await resolveAfter2Seconds();

  // expected output: "resolved"
};
var a = asyncCall();
console.log(a);//[obeject promise]

await 会使asnyc暂停执行,等待 await 部分执行完毕返回结果,所以一般而言await后面接异步执行函数,这个函数的输出结果要及时反馈出来。当然await后面也可以不接异步函数。

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

async function asyncCall() {
  console.log('calling');
  var result = await resolveAfter2Seconds();
  console.log(result);
  // expected output: "resolved"
}

asyncCall();//calling(2s后)resolved,可以看出如果需要在下面引用到resolveAfter2Seconds的执行结果,await是非常方便的操作的。
如果删去await,将会看到result 为 [object Promise],而不是函数执行结果的返回值。

面试心得

总体来讲,编程题难度不大,而且第一道题还是leetcode上一道题的简化版。继续做leetcode 吧。其次,mdn 要多看看,特别是javascript核心部分,还有CSS定位部分,以及DOM操作部分。基础的数据结构和算法也是很重要的,也要作为复习重点。

以上。

上一篇下一篇

猜你喜欢

热点阅读