剛剛完成了cvte的線上筆試蔽莱,趁熱做一下總結(jié)逛万。文章將從下面幾個(gè)方面進(jìn)行講述泳猬。
1.總體體會。
2.涉及的陌生知識點(diǎn)的總結(jié)。
3.面試心得總結(jié)得封。
總體體會
總的來說埋心,面試的題目難度還是可以接受,不過涉及的知識面有點(diǎn)廣忙上,所以對于比較陌生的知識點(diǎn)可能把握的不是很好拷呆。筆試選擇題涉及到CSS(定位,Dom操作疫粥,隱藏)茬斧, JS(原型 proto),閉包梗逮,異步(async 和 await)项秉, ES6(生成器),算法(主要有插排和快排慷彤,環(huán)形隊(duì)列)伙狐,計(jì)算機(jī)網(wǎng)絡(luò)(很簡單,就考了個(gè)分層)瞬欧,正則表達(dá)式。編程題一道是數(shù)組操作罢防,一道是包裝localStorage使其存儲具備生命期艘虎,難度適中。
涉及到陌生知識點(diǎn)總結(jié)
1__proto__: 關(guān)于 __proto__
描述直接看這里
主要是理解兩點(diǎn):一是__proto__
本質(zhì)是一個(gè)訪問器咒吐,即具有g(shù)et和set方法野建;二是其指向問題: 'to the value of its constructor’s "prototype" ' (指向其構(gòu)造函數(shù)的prototype)。下面通過幾個(gè)例子說明一下恬叹。
var f = new F();
//于是有
f.__proto__ === F.prototype //true
//又因?yàn)?F.prototype === o;//true
//所以
f.__proto__ === o;
let p = {
a: function () {
console.log('aaa');
}
};
shape.prototype.__proto__ = p;//說明其具有set方法候生,`__proto__`對應(yīng)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
-
async
和await
:需要注意一下幾個(gè)方面唯鸭。我們將通過例子一一講述。
async是異步函數(shù)聲明的標(biāo)志硅确,如果把整個(gè)函數(shù)打印出來目溉,將顯示函數(shù)的所有代碼。
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"
//};
調(diào)用async函數(shù)時(shí)返回一個(gè)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暫停執(zhí)行缭付,等待 await 部分執(zhí)行完畢返回結(jié)果,所以一般而言await后面接異步執(zhí)行函數(shù)循未,這個(gè)函數(shù)的輸出結(jié)果要及時(shí)反饋出來陷猫。當(dāng)然await后面也可以不接異步函數(shù)。
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的執(zhí)行結(jié)果,await是非常方便的操作的绣檬。
如果刪去await足陨,將會看到result 為 [object Promise],而不是函數(shù)執(zhí)行結(jié)果的返回值河咽。
面試心得
總體來講钠右,編程題難度不大,而且第一道題還是leetcode上一道題的簡化版忘蟹。繼續(xù)做leetcode 吧飒房。其次,mdn 要多看看媚值,特別是javascript核心部分狠毯,還有CSS定位部分,以及DOM操作部分褥芒〗浪桑基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和算法也是很重要的,也要作為復(fù)習(xí)重點(diǎn)锰扶。
以上献酗。