筆者目前大三,北京周邊院校。做爲人生的第一場面試,以及一些感觸,有感而發,經歷三面,包含部分面試題。css
我的經歷簡述: 至今接觸互聯網編程有8年多,也依靠互聯網從初二作到經濟獨立。大一的時候選擇了前端並開始深刻學習,目前基本掌握
html
,css
,js
,es6
等,有屢次先後端獨立開發經驗,也有團隊引導經歷。之因此想加入xx
,是由於xx
,想加入一個有激情、有上進的Team - 官話,也就是自我介紹html
M課網
的ES6
CP實戰教程學習的,後來又看了深刻理解ES6
這本書,感觸真的不同。不過這一點,筆者也沒作的很好,始長年輕氣燥。(筆者大一就知道這四本書:你不知道的JavaScript
,高性能Javascript
,紅寶書
,犀牛書
,但每一次拿到書,都沒有靜的下心來學習。當代年輕人,靜下心專心的完成一件事,真的很重要。)經過這一次面試吧,我以爲個人知識體系更多的是靠面試準備這段期間搭起來的,而不是平時的項目開發,或者當時在學習基礎的時候。因此我目前的想法是,經過看JS的經典書籍,把本身的知識體系用本身看的書用思惟導圖搭建起來,而不是靠面經和麪試之類的書籍,也許是知識點太淺吧,雖然面試的時候,不少問題都能回答,可是本身自身的硬件其實不算是太硬的。前端
知識點:原始類型,對象,閉包,原型,Event Loop,TCP,瀏覽器緩存機制,網絡安全方面(XSS,CSRF),CSS,HTTP2,ES6等等git
PS: 題目順序可能記不住(題目可能有交叉),大概的題以下,自行思索。es6
==
和===
的區別暫時能想起來的也就這麼多,筆者自我感受大概回答出80%--吧。由於這些不少知識點基本是靠面經或者面試相關的手冊書籍堆砌起來的知識體系,因此本身評價算是很薄弱,但這一部分在實戰項目中是很難遇到的。面試
知識點: ES6,CSS3,瀏覽器相關, 算法算法
以下圖#號區域 | ||
---|---|---|
########### | ########### | |
########### | ########### |
其餘題目暫時記不住了,前面有的挺涼的,感受回答了60%吧。固然還交流了一些不關於技術的內容(必定是面試官哥哥讓我緩解氣氛,因此是題外話)編程
實際手寫代碼的題,很涼後端
function action(id) {
return new Promise((resolve, reject) => {
setTimeout(() => {
(Math.random() <= 0.5) ? resolve(id) : reject(id)
}, 300)
})
}
function notify(id, state) {
console.log('notify=> ', id, state)
}
let idList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
/**2000 * * @param {Function} action 異步數據回調函數 - 接口 * @param {Array} idList 異步獲取數據回調所須要參數 - 傳遞的數組,需遍歷 * @param {Function} notify 異步回調通知回調函數 * return 異步數據回調成功或失敗的id結果 - 需返回Promise */
function getProList(action, idList, notify) { // 老師就給了這一行代碼,其餘的是語義補充
// 補充完成函數
}
const res = getProList(action, idList, notify)
res.then((res) => { console.log(res) })
複製代碼
回來以後在學校寫的(今早花了30分鐘左右完成的吧),遇到promise的嵌套,筆者懵了:api
function action(id) {
return new Promise((resolve, reject) => {
setTimeout(() => {
(Math.random() <= 0.5) ? resolve(id) : reject(id)
}, 300)
})
}
function notify(id, state) {
console.log('notify=> ', id, state)
}
let idList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
/**2000 * * @param {Function} action 異步數據回調函數 - 接口 * @param {Array} idList 異步獲取數據回調所須要參數 - 傳遞的數組,需遍歷 * @param {Function} notify 異步回調通知回調函數 * return 異步數據回調成功或失敗的id結果 - 需返回Promise */
function getProList(action, idList, notify) {
// 補充完成函數
return new Promise((resolve, reject) => {
let res = {
success: [],
fail: []
}
for (const id of idList) {
let promise = action(id)
promise.then(() => {
res.success.push(id)
notify(id, 'success')
return Promise.resolve(res.success.length + res.fail.length)
}, () => {
res.fail.push(id)
notify(id, 'fail')
return Promise.resolve(res.success.length + res.fail.length)
}).then((length) => {
if (length === idList.length) {
resolve(res)
}
})
}
})
}
const res = getProList(action, idList, notify)
res.then((res) => { console.log(res) })
複製代碼
// 實現child繼承parent
function extends(parent, child){
}
複製代碼
個人答案: child.prototype = Object.create(parent.prototype,{})
我本來準備好的套路:
function Parent(value) {
this.val = value
}
Parent.prototype.getValue = function() {
console.log(this.val)
}
function Child(value) {
Parent.call(this, value)
}
Child.prototype = Object.create(Parent.prototype, {
constructor: {
value: Child,
enumerable: false,
writable: true,
configurable: true
}
})
const child = new Child(1)
child.getValue() // 1
child instanceof Parent // true
複製代碼
哈哈,由於這個文章主要是想給團隊的另外兩個成員看下題目的,也想給本身的學弟學妹們一些指引,因此寫的有點迷,將就將就吧。而後我想學學弟學妹們說的是: 靜下心學習,無論未來要考研仍是搞技術,我的以爲: 考研的,在大三下學期以前,必定要學習一些技術,否則考完研,你會很迷,或者以後工做,可能偏市場方向去了,而不是技術。對於不考研的,這段話給我本身說:靜下心,繼續準備,別想着不努力,未來有好工做,別想着臨時抱佛腳,別想着我爸是雷J
。關於學校課程:我如今回去從新學數據結構和算法相關的,還有網絡相關的(TCP之類的 - 目前的課)。
還有,我不知道發麪試題算不算侵權,若是是的話,大家跟我說一下,我把題目刪了。
剛研究掘金
的草稿緩存怎麼作的,調試輸出的。原來他是網絡緩存,不放本地,這點很好。 https://post-storage-api-ms.juejin.im/v1/updateDraft
不要吹滅你的靈感和你的想象力; 不要成爲你的模型的奴隸。 ——文森特・梵高