總結(jié):面試官人很好,整個(gè)面試過程中就像是聊天一樣,全程演示項(xiàng)目,中間穿插了一點(diǎn)八股- 藍(lán)橋杯是什么- 問簡歷上的項(xiàng)目是實(shí)驗(yàn)室還是個(gè)人項(xiàng)目 面試官說都會(huì)把比賽項(xiàng)目給放到前面,所以以為這也是實(shí)驗(yàn)室作品。然后我就拿了挑戰(zhàn)杯寫的前端頁面簡單說了一下以下基本都是項(xiàng)目細(xì)節(jié):- Mod 開發(fā)組與你是什么關(guān)系(甲乙方?)- 為什么分了開源核心 + 后臺(tái)倉庫(后臺(tái)倉庫代碼不安全,需要審查)- 編輯人員提交流程(后臺(tái)編輯 + 管理員提交 -> gitee pr + 審查后合并 + webhook 觸發(fā) cicd 同步到 oss)- Astro 是什么,SSG SSR 是什么(說了一下基于 vite 進(jìn)行驅(qū)動(dòng)與支持 ssg + ssr,然后說了一下 ssr 的動(dòng)態(tài)拼接字符串;然后面試官說了什么 jeklly?)- 選了他的原因是什么(博客落地實(shí)踐過,知道一些底層原理,內(nèi)容驅(qū)動(dòng)生成網(wǎng)站,符合 wiki 定位要求)- 框架可以插入 react 或者 vue 組件嗎(可以,且可以一起使用)- 有試過放在一起嗎(沒有,提了一下 vite 放在過一起導(dǎo)致開發(fā)聲明報(bào)錯(cuò),其次是兩個(gè)應(yīng)用相互獨(dú)立,通過各自的 app 創(chuàng)建函數(shù)來渲染頁面,只要他們副作用不會(huì)相互影響我覺得問題都不算大,不過現(xiàn)在看來感覺還得想一想 vue react 底層,他們的更新機(jī)制不一樣,會(huì)不會(huì)一個(gè)框架的占用線程太久導(dǎo)致了另一個(gè)框架更新不及時(shí))- 整個(gè)項(xiàng)目內(nèi)核升級(jí)是什么意思(說了用插件將所有的邏輯進(jìn)行封裝,最后進(jìn)行復(fù)用,要求展示了一下除了簡歷還有哪個(gè)網(wǎng)站復(fù)用了)- 編譯器和 polyfill 的關(guān)系,知不知道每一個(gè) es 版本的區(qū)別(不會(huì))- VSCode 插件展示一下,具體在 VSCode 做了什么,用途(mdx 轉(zhuǎn) ast 語法樹,對(duì)節(jié)點(diǎn)進(jìn)行分析,并讀取工作目錄下的資源進(jìn)行查錯(cuò);給一些編外的詞條編輯人員使用)?- 網(wǎng)頁插件展示一下?(沒實(shí)現(xiàn),說了一下對(duì)每一個(gè)用戶都要開一個(gè)專用檢查進(jìn)程的原因)- 看一下你的分析器和 mdx 官方分析器的關(guān)系(完全獨(dú)立,沒來得及說存在的優(yōu)化部分)本來要進(jìn)筆試了,然后說了一下 yjs 是核心之一- 在線平臺(tái)演示效果- yjs 是什么(協(xié)同編輯中編輯沖突的一個(gè)庫)- 協(xié)同主要問題(說了并發(fā)沖突和 YATA 算法的作用,面試官似乎沒做過這個(gè)領(lǐng)域)筆試:```ts// 寫一個(gè)類似迅雷的下載管理器,用戶可以不停往里面push url,管理器需要保證同一時(shí)間最多只有3個(gè)請(qǐng)求在并發(fā)下載。class Downloader { urls = [] push(url) { }}// 每個(gè)url均需要被傳入以下fakeAxiosWrapper函數(shù)。你可以把這個(gè)函數(shù)當(dāng)做一個(gè)封裝好的axios函數(shù),作用是請(qǐng)求遠(yuǎn)程api,不要改動(dòng)這個(gè)函數(shù)。async function fakeAxiosWrapper(url) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(`download ${url} done`) resolve() }, 3000); })}// 驗(yàn)證代碼const downloader = new Downloader()downloader.push(`url1`)downloader.push(`url2`)downloader.push(`url3`)downloader.push(`url4`)downloader.push(`url5`)// 等待3s后,同時(shí)輸出// download url1 done// download url2 done// download url3 done// 再等待3s后,同時(shí)輸出// download url4 done// download url5 done```沒寫出來很可惜,因?yàn)橐郧皩戇^一個(gè)類似的并發(fā)下載控制,結(jié)果這里沒寫好。面試官換了個(gè)節(jié)流,問了一下為什么 setInterval 可以用來證明你這個(gè)函數(shù)是節(jié)流的(宏任務(wù)隊(duì)列首部)反問:工作時(shí)間(上午十點(diǎn)到晚上八點(diǎn)半)地點(diǎn)(深圳總部)實(shí)習(xí)時(shí)長(越久越好)技術(shù)棧(挺多跨端技術(shù)的,感覺進(jìn)去又要開始上手新東西了)有沒有什么可以改進(jìn)的地方(沒有,做的很好(不知道是不是客套話整體下來感覺最大的問題還是信息差與溝通點(diǎn)沒到位,項(xiàng)目yjs部分展示的內(nèi)容不是很多,然后還浪費(fèi)了一些時(shí)間,只能說很可惜,下一次對(duì)于不會(huì)的內(nèi)容就應(yīng)該直接說不會(huì)(惱)。然后就是沒問多少八股,這真的正常嗎()