兩個(gè)部門,六輪面試,終與字節(jié)無(wú)緣
大家好,我是TianTian。
今天想分享的是一位來(lái)自讀者投稿字節(jié)的面試記錄。
首發(fā)內(nèi)容來(lái)自掘金,讀者小K,和他接觸后才發(fā)現(xiàn),他是大專,學(xué)歷跟我差不多, 本科學(xué)歷,求職的艱辛我都明白。
好在他十分努力,最后拿下滴滴offer,真的挺不容易的。
替他高興,終于卷進(jìn)大廠啦,希望我的讀者早日進(jìn)入心儀的公司。
我們聊的還不錯(cuò),在某些方面上,我們達(dá)成了共識(shí)。

他說(shuō)過(guò):
雖然這一路挺艱辛,也不知道自己下一步是邁向哪里,但是在心態(tài)和技術(shù)上讓我成長(zhǎng)了很多,回頭看來(lái)我還算是挺幸運(yùn)的吧。
共勉!!!
點(diǎn)贊超過(guò)50的話,后續(xù)更新他的求職經(jīng)歷!!!
兩個(gè)部門,六輪面試
兩個(gè)部門,六輪面試,終與字節(jié)無(wú)緣。
這個(gè)面試機(jī)會(huì)來(lái)的挺意外的,先在 Boss 投遞的簡(jiǎn)歷,后再牛客網(wǎng)看到了內(nèi)推人的微信,加了微信問(wèn)了下進(jìn)度,掛了。
內(nèi)推人給我打電話根據(jù)簡(jiǎn)歷簡(jiǎn)單詢問(wèn)了一下情況(內(nèi)推人很謙遜,畢業(yè)于一所 211 大學(xué),和我說(shuō)他的學(xué)歷也很一般),然后和 hr 溝通撈了我一下,才有的這個(gè)面試機(jī)會(huì),太感謝了。
一面
6 月 9 日 16:00
自我介紹
怪異盒模型和標(biāo)準(zhǔn)盒模型的區(qū)別
給了一段代碼說(shuō)兩個(gè)盒子背景為藍(lán)色的區(qū)域
兩個(gè)盒子分別設(shè)置了 box-sizing: border-box, box-sizing: content-box
如何觸發(fā) BFC
給一段代碼問(wèn)效果是什么樣的
會(huì)有一個(gè)外邊距合并的問(wèn)題,怎么解決這個(gè)問(wèn)題
垂直水平居中
你了解得數(shù)組遍歷方式有哪些,你覺(jué)得那個(gè)性能最優(yōu)那
this 指向誰(shuí),如何更改 this 的指向
// 非原題 非原題 非原題
const o1 = {
text: 'o1',
fn: function() {
return this.text;
}
}
const o2 = {
text: 'o2',
fn: o1.fn
}
console.log(o2.fn());你常用的 React Hooks 有哪些,描述功能
打出來(lái) 服務(wù)端渲染了解嗎 和 SPA(單頁(yè)面應(yīng)用) 的區(qū)別
Commonjs 和 ES6 Module 得區(qū)別
還了解過(guò)其他的嗎,不了解(AMD、CMD、UMD...) 算法題
題不難,但是思路跑偏了
先用的遞歸O(n ^ 2)
可以優(yōu)化一下嗎?
改成了循環(huán)可以提前終止
面試官: 其實(shí)你思路跑偏了,O(n)的復(fù)雜度就可以,用棧(瞬間頓悟),不過(guò)解出來(lái)就好
反問(wèn)
大概 45 分鐘吧
說(shuō)一面就給我過(guò)了,等會(huì) 17:00 二面
二面
講講項(xiàng)目,說(shuō)說(shuō)你的亮點(diǎn)
亮點(diǎn),性能優(yōu)化吧,怎么測(cè)量的,怎么優(yōu)化的,優(yōu)化前后的對(duì)比
Network, Lighthouse, Performace, Memory, Webpack、網(wǎng)絡(luò)
面試官也會(huì)提出一些問(wèn)題,問(wèn)我怎么優(yōu)化,原理是什么
有寫(xiě)過(guò) webpack 的 plugins 嗎
沒(méi)有 看代碼,css 選擇器權(quán)重
算法:二叉樹(shù)
有這么一個(gè)數(shù)據(jù)結(jié)構(gòu):
const data = [
{
"id": "1",
"sub": [
{
"id": "2",
"sub": [
{
"id": "3",
"sub": null
},
{
"id": "4",
"sub": [
{
"id": "6",
"sub": null
}
]
},
{
"id": "5",
"sub": null
}
]
}
]
},
{
"id": "7",
"sub": [
{
"id": "8",
"sub": [
{
"id": "9",
"sub": null
}
]
}
]
},
{
"id": "10",
"sub": null
}
]
現(xiàn)在給定一個(gè)id,要求實(shí)現(xiàn)一個(gè)函數(shù)
findPath(data, id) {
}
返回給定id在 data 里的路徑
示例:
id = "1" => ["1"]
id = "9" => ["7", "8", "9"]
id = "100"=> []
PS: id 全局唯一,無(wú)序考點(diǎn)遞歸回溯,非原題 說(shuō)下 EventLoop
看代碼
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2');
// 注意:這里如果返回 Promise 的話執(zhí)行順序就不一樣了
}
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0)
async1();
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
});
console.log('script end');非原題
大概 40 分鐘吧,等會(huì) 18:00 三面
三面
自我介紹
幾幾年的
哪里人啊
高考是出現(xiàn)了什么狀況嗎
沒(méi)有啊,就是當(dāng)時(shí)沒(méi)那個(gè)想法 這個(gè)學(xué)歷對(duì)你產(chǎn)生了多少影響
還是聊聊技術(shù)吧,給一個(gè)場(chǎng)景,二分查找
// 當(dāng)時(shí)用的 js,用 ts 只是為了表達(dá)的更清晰一點(diǎn)
interface Barrage {
time: Number;
barrage: String;
}
const binarySearch = (arr: Barrage[], time: number) => {
let l = 0;
let r = arr.length - 1;
while (l <= r) {
const mid = (l + r) / 2;
if (arr[mid].time === time) {
return arr[mid].barrage;
} else if (arr[mid].time < time) {
l = mid + 1;
} else {
r = mid - 1;
}
}
return null;
}那數(shù)組的邊界
我就在那看,看了大概十幾秒吧,會(huì)越界嗎...
面試官:好吧,那我們先下一題
寫(xiě)出來(lái)了
你還能在優(yōu)化一下嗎
額,時(shí)間復(fù)雜度O(logn), 空間復(fù)雜度 O(1),這挺優(yōu)的啊(有點(diǎn)懵)
不,這個(gè)優(yōu)化不止是時(shí)間和空間復(fù)雜度,可以從工程化的角度出發(fā)
還是有點(diǎn)懵
提點(diǎn)了我一下(l 和 r 為什么要定義在外面)
哦哦,關(guān)聯(lián)太多,所以耦合就高,您是指的這個(gè)嗎(沒(méi)回復(fù))
一個(gè)異步任務(wù)調(diào)度器,最多同時(shí)執(zhí)行兩個(gè)異步任務(wù)
有思路嗎?
用個(gè)數(shù)組先存起來(lái),判斷執(zhí)行的數(shù)量,需要就取出來(lái),
好,那你寫(xiě)吧
結(jié)果寫(xiě)了好久,半個(gè)小時(shí)起步,還沒(méi)寫(xiě)出個(gè)結(jié)果
執(zhí)行邏輯大概寫(xiě)出來(lái)了,但返回的邏輯沒(méi)寫(xiě)出來(lái)
提點(diǎn)我一下,我改了一下
又提點(diǎn)我一下,我又改了一下
邏輯上離成功就差一步了(還差一個(gè)異步),但我傻呵呵的對(duì)著 C++ 的控制臺(tái)打了半天 js 代碼,給的是類我還少打了好幾個(gè) this,唉...
時(shí)間問(wèn)題打斷了,確實(shí)寫(xiě)的太久了
為什么學(xué)前端
一個(gè)用戶活躍度幾千萬(wàn)的網(wǎng)站你會(huì)做哪些優(yōu)化
有點(diǎn)懵,說(shuō)實(shí)話我對(duì)幾千萬(wàn)和幾十個(gè)人沒(méi)什么概念,說(shuō)了些關(guān)于首屏,用戶體驗(yàn)的優(yōu)化,減少請(qǐng)求... 反問(wèn)
學(xué)習(xí)建議
做題之前先想清楚,不要錯(cuò)在一些不該錯(cuò)的地方
每輪面試官問(wèn)的問(wèn)題都很開(kāi)放,引導(dǎo)你自己說(shuō),再根據(jù)你所說(shuō)的東西再去問(wèn)一些問(wèn)題 連著三面,因?yàn)槿姹容^慘所以對(duì)其他兩面問(wèn)題印象不是很深
復(fù)盤
異步任務(wù)調(diào)度器
這個(gè)異步任務(wù)調(diào)度器調(diào)用機(jī)制實(shí)際和 Proimse 的 reslove 觸發(fā) then 方法是相同的,reslove 內(nèi)的執(zhí)行邏輯需異步觸發(fā),等待 then 方法中的內(nèi)容執(zhí)行完(存儲(chǔ)好)再觸發(fā),只是方法內(nèi)部執(zhí)行邏輯有細(xì)微的差異而已。
二分查找
// 這除出來(lái)可有可能是個(gè)分?jǐn)?shù)啊
const mid = (l + r) / 2; // Math.floor((l + r) / 2);
// l + r 也可能超出數(shù)字范圍
const mid = l + Math.floor((r - l) / 2);
這心一下就哇涼哇涼的,之前的 Promise 白手寫(xiě)了,索引還不取整,腦袋跟進(jìn)了水一樣,灌得滿滿的那種。
第二天下午,hr 和我說(shuō)面試通過(guò),但因?qū)W歷 offer 審批有些困難,會(huì)努力幫我爭(zhēng)取。很感謝,說(shuō)實(shí)話能得到這個(gè)認(rèn)可,我已經(jīng)很開(kāi)心了。三月一開(kāi)始投遞簡(jiǎn)歷到現(xiàn)在,大專不要,必須本科,學(xué)歷不符,BOSS 上投遞大多回復(fù)都沒(méi)有,大多的公司面試機(jī)會(huì)都沒(méi)有,學(xué)歷問(wèn)題的我也早已經(jīng)習(xí)慣了。
6月15日,收到 hr 通知,最終還是不行...
不過(guò) hr 在他們的群里發(fā)了一下,我被另一個(gè)部門又撈起來(lái)了
互娛研發(fā)一面
6 月 17 日
自我介紹
亮點(diǎn)
當(dāng)然還是說(shuō)的性能優(yōu)化,這下可慘了 那給一個(gè)網(wǎng)站 SEO 怎么優(yōu)化
通過(guò) Lighthouse 進(jìn)行測(cè)量,根據(jù) Lighthouse 給出的建議 進(jìn)行優(yōu)化
title, keywords, description,語(yǔ)義化,img 的 alt,a 的 href
知道 SEO 什么什么(不記得面試官說(shuō)的什么了)?
不知道
如果不用 Lighthouse,Lighthouse 那不就只是能在谷歌上測(cè)嗎(大概是這么個(gè)問(wèn)題)
WebPageTest 不過(guò)我用的比較少,沒(méi)深挖
Lighthouse 也可以通過(guò) npm 進(jìn)行下載使用
SSR 了解嗎
不了解,就跑過(guò) next 的案例
我當(dāng)時(shí)可能理解錯(cuò)了,應(yīng)該是說(shuō)下概念就行
dns 預(yù)解析的怎么實(shí)現(xiàn)的?
dns 解析的過(guò)程? 為什么要用 http2
多路復(fù)用
那說(shuō)下 http1.1 和 http2 區(qū)別?
頭部壓縮,多路復(fù)用,別的沒(méi)啥印象(可以設(shè)置請(qǐng)求的優(yōu)先級(jí),服務(wù)器推送(Server Push))
Server Push 了解過(guò)嗎?
啥,我咋沒(méi)聽(tīng)過(guò)(我是智障,我是智障,我是智障...)
session 了解嗎?
登錄鑒權(quán)就聊到 token
JWT 了解嗎?
不太了解,只知道 T 是 token
CSRF 攻擊了解嗎?
怎么預(yù)防那?還有其他辦法嗎?
如果不通過(guò) img 或者 script 標(biāo)簽,或者說(shuō)用戶不通過(guò)點(diǎn)擊第三方連接怎么造成 CSRF 攻擊嗎?
不知道啊,然后面試官給我講了一些關(guān)于 dns 劫持
http 和 https
說(shuō)了對(duì)稱加密和非對(duì)稱加密,具體不清楚
那你說(shuō)下 https 握手過(guò)程?
不知道啊
http 的缺點(diǎn) 明文不加密,內(nèi)容可能被竊聽(tīng);不驗(yàn)證通信方身份,可能遭遇偽裝,無(wú)法證明報(bào)文的完整性,可能被篡改。https 就是披著 SSL 外殼的 HTTP,SSL 會(huì)建立安全通信線路,查明對(duì)手證書(shū)...
知道 http 的內(nèi)容是如何竊聽(tīng)的?
不知道,不過(guò)可以一些抓包工具抓
瀏覽器怎么驗(yàn)證證書(shū)的?
那對(duì)稱加密和非對(duì)稱加密怎么之間選擇?
說(shuō)下 cdn 緩存?
不了解,說(shuō) HTTP 緩存可以嗎
也行
Cache-Control、Expires(因?yàn)樾?yàn)問(wèn)題,被 Cache-Control 替代)、Last-Modified、Etag
說(shuō)下請(qǐng)求頭?
If-Modified-Since,Cache-Control 是看 max-age,(想不起來(lái)了If-None-Match) 因?yàn)樯洗我幻孀屛叶甲屛掖虺鰜?lái),這次我也就習(xí)慣性把這些都打出來(lái)了,結(jié)果后面才知道面試看不到...
那為什么會(huì)考慮用強(qiáng)緩存那?
一個(gè)文件比較大,且不經(jīng)常更新就會(huì)考慮用強(qiáng)緩存
那文件要變了怎么辦?
啊,用 no-cache,讓服務(wù)器處理
那為什么不用協(xié)商緩存?
額,我也在想
面試官:用 hash ...
熱模塊替換的原理了解嗎?
那他是怎么保留之前更改的狀態(tài)那?
不知道
webpack 怎么實(shí)現(xiàn)的知道嗎?
不知道 loader 和 plugins 的區(qū)別
plugins 作用于 webpack 那個(gè)生命周期?
啊,不知道啊(plugins 對(duì)打包過(guò)程和結(jié)果進(jìn)行干預(yù)), 說(shuō)了下 webpack 構(gòu)建流程
你所知道的白屏原因
怎么優(yōu)化 三列布局
flex: 1; 是復(fù)合屬性,說(shuō)下其他屬性?
擴(kuò)展比例,縮放比列,基準(zhǔn)大小(x軸覆蓋寬度,y 軸覆蓋高度)
ES6 新增的類型
Symbol, BigInt
Symbol 有用過(guò)嗎?
手寫(xiě) bind 的時(shí)候用過(guò),防止覆蓋掉對(duì)象上的原有屬性
ES6 新增的類
Promise
WeakMap 和 Map 了解嗎? 說(shuō)下他們的區(qū)別?
WeakMap 的鍵必須是對(duì)象
有用過(guò)嗎?
深拷貝判斷是否有重復(fù)引用的時(shí)候用過(guò)
面試官:WeakMap 是和垃圾回收有一些關(guān)系...
MDN: 原生weakmap持有對(duì)關(guān)鍵對(duì)象的“弱”引用。由于這樣的原生weakmap不阻止垃圾收集,從而最終刪除對(duì)鍵對(duì)象的引用。“弱”引用還避免了對(duì)映射中的值進(jìn)行垃圾收集。當(dāng)將鍵映射到只有在鍵未被垃圾收集時(shí)才有價(jià)值的鍵的信息時(shí),weakmap是特別有用的構(gòu)造。
1 小時(shí)零 5 分(還有其他的想不起來(lái)了)
看代碼,變量提升,塊級(jí)作用域
算法:回文字符串(這個(gè)問(wèn)題好常見(jiàn)),判斷一個(gè)字符串最多只刪1個(gè)字符,是否能成為一個(gè)回文字符串
let str = "ABCDABA"
let l = 0;
let r = str.length - 1;要不要我提示你一下?
那您提示一下吧。
思路是沒(méi)錯(cuò)的,不同的時(shí)候你判斷刪除那個(gè)字符是不是回文字符串
先說(shuō)思路再寫(xiě),還是先寫(xiě)在說(shuō)思路
額,先說(shuō)思路吧。
判斷是否為回文字符串的話,我可以這個(gè)字符串反轉(zhuǎn)過(guò)來(lái),判斷是否原字符串相同,然后將每種情況都試一下
暴力破解唄,是可以實(shí)現(xiàn),但是這個(gè)復(fù)雜度就是 O(n^2) 的了啊,能不能在優(yōu)化優(yōu)化
設(shè)置兩個(gè)索引前后對(duì)比,兩邊字母相同向內(nèi)靠攏,不同,呀,不同咋辦(卡住了)...
const reverse = (str) => {
let temp = '';
for(let i = 0; i < str.length; i++) {
temp += str[i];
}
return temp === str;
}
const isSymmetry = (str) => {
let l = 0;
let r = str.legnth - 1;
while(l <= r) {
if(str[l] === str[r]) {
l++;
r--;
} else {
if(!reverse(str.substring(l, r)) && !reverse(str.substring(l + 1, r + 1))) {
return false;
}
}
}
return true;
}
面試結(jié)束復(fù)盤
當(dāng)時(shí)沒(méi)有測(cè)試用例,少測(cè)試了一種情況,當(dāng)刪除一個(gè)字母就是回文子串的情況,沒(méi)有終止條件,這個(gè)代碼死循環(huán)了,而且我既然想到用索引的方式判斷是否為回文字符串,那么我就不應(yīng)該再用反轉(zhuǎn)再去判斷,而的這個(gè)邏輯 isSymmetry 中就是,我也不應(yīng)該再去重復(fù)寫(xiě)一個(gè)一樣邏輯的函數(shù)。
const isSymmetry = (str, flag = false) => {
let l = 0;
let r = str.length - 1;
while (l <= r) {
if (str[l] === str[r]) {
l++;
r--;
} else {
if (flag) {
return false;
}
if (
!isSymmetry(str.substring(l, r), true) &&
!isSymmetry(str.substring(l + 1, r + 1), true)
) {
return false;
}
return true;
}
}
return true;
};
這是我說(shuō)不知道最多的一場(chǎng)面試,被虐的很慘,發(fā)現(xiàn)自己很多不足,接下來(lái)就是要彌補(bǔ)這些不足,去精讀瀏覽器工作原理于實(shí)踐這個(gè)專欄,按照之前的效率,應(yīng)該是涼了...
互娛研發(fā)二面
6 月 22 日
0.1 + 0.2 !== 0.3 為什么
IEEE 754 了解嗎
什么什么的幾種(計(jì)算機(jī)組成原理相關(guān)的)算法?
不會(huì),這個(gè),計(jì)算機(jī)基礎(chǔ)確實(shí)比較薄弱,之前沒(méi)重視到 TCP 擁塞控制?
不知道,只了解丟包阻塞的情況,(網(wǎng)絡(luò)的知識(shí)就看過(guò)圖解HTTP和面經(jīng), 唉...)...
TCP 和 UDP 的區(qū)別
三次揮手四次握手
TypeScript 高級(jí)用法, Pick 和 Omit
泛型的理解
webpack 和一面差不多吧
devServe 做了哪些優(yōu)化了解嗎
熱模塊更新
其他的那
不知道了
React Fibler
實(shí)現(xiàn)一個(gè)自定義 hook, 剛開(kāi)始案例是 useState,我沒(méi)問(wèn)明白一直以為實(shí)現(xiàn)一個(gè) useState,后來(lái)才發(fā)現(xiàn)是實(shí)現(xiàn)自定義 hook...
講講常用的 hook 打出來(lái)
用正則表達(dá)式獲取 url 中 query 參數(shù)
let str = "https://juejin.cn?name=zhangsan&age=18&id=123";
function getUrlParams = ()=> {
let obj = {};
for (let i = 0; i < splitStr.length; i++) {
let temp = splitStr[i].split("=");
obj[temp[0]] = temp[1];
}
return obj;
}
console.log(obj);可以不用正則嗎,我不熟
split 功能記錯(cuò)了,以為只能分割成兩個(gè)數(shù)組,還打算自己封裝一個(gè)...中間面試官打了個(gè)哈欠,寫(xiě)了不到 10 分種,被打斷了
這么簡(jiǎn)單的題,我當(dāng)時(shí)做的好像一個(gè)腦殘,我要是面試官我也不想面了
你總結(jié)一下這場(chǎng)面試
計(jì)算機(jī)基礎(chǔ)之前確實(shí)沒(méi)重視到,之后也打算系統(tǒng)學(xué)習(xí)一下,但是說(shuō)實(shí)話我對(duì)自己的編碼能力挺自信的,雖然我不愛(ài)背 API
前端基礎(chǔ)其實(shí)還可以,就是你有點(diǎn)急,一急就什么都想不起來(lái)(您都打哈欠了,我能不急嗎,本來(lái)就慌,這一下,心都涼了),那我再給你出道題
n 叉樹(shù)層序遍歷
const levelOrder = (root) => {
while (root.length) {
const temp = root.shift();
console.log(temp.val);
for (let i = 0; i < temp.children.length; i++) {
root.push(temp.children[i]);
}
}
};const root = [
{
val: 1,
children: [
{
val: 3,
children: [],
},
],
},
{
val: 2,
children: [
{
val: 4,
children: [],
},
],
},
];
1 個(gè)小時(shí) 10 分左右
計(jì)算機(jī)基礎(chǔ)很重要,后期一定要系統(tǒng)學(xué)一下,正則表達(dá)式用的太少了,參加比賽用的都是 C 語(yǔ)言,所以一直不愛(ài)背 API 現(xiàn)在吃大虧了,一面剪切字符串剛開(kāi)始就是自己封裝的,現(xiàn)在又不長(zhǎng)記性,唉,當(dāng)時(shí)心都涼了,晚上 hr 說(shuō)通過(guò)了,周五三面...
互娛研發(fā)三面
6月25日
自我介紹
先寫(xiě)一道題吧兩數(shù)之和
const twoSum = (arr, target) => {
const obj = {};
for(let i = 0; i < arr.length; i++) {
if (obj[arr[i]] != null) {
return [obj[arr[i]], i];
} else {
obj[target - arr[i]] = i;
}
}
return [];
};
返回所有的情況
const twoSum = (arr, target) => {
const res = [];
for(let i = 0; i < arr.length - 1; i++) {
for(let j = i + 1; j < arr.length; j++) {
if(arr[i] + arr[j] === target) {
res.push([i, j]);
}
}
}
return res;
}
twoSum([2,7,11, 7], 9);
// 打印個(gè)這個(gè) 0, 1, 0, 3
牛客把我的數(shù)組給展開(kāi)了, 我當(dāng)時(shí)就有點(diǎn)懵, 這是啥, 有檢查一遍代碼, 沒(méi)問(wèn)題啊, 您好我可以打開(kāi)控制臺(tái)調(diào)試一下嗎

分析一下時(shí)間復(fù)雜度, 能不能在優(yōu)化一下
再上一個(gè)問(wèn)題開(kāi)始的時(shí)候, 我就一直再想怎么優(yōu)化, 畢竟面試了好幾次了, O(n^2)一定會(huì)讓我去優(yōu)化的
const twoSum = (arr, target) => {
let obj = {};
let res = [];
for(let i = 0; i < arr.length; i++) {
if(obj[arr[i]] != null) {
let temp = obj[arr[i]];
for(let j = 0; j < temp.length; j++) {
res.push([temp[j], i]); // res.push([temp[j], i); 當(dāng)時(shí)這里少打一個(gè) ]
}
} else {
let temp = target - arr[i];
obj[temp] = obj[temp] ? [...obj[temp], i] : [i];
}
}
return res;
}

牛客這個(gè)報(bào)錯(cuò)信息, 不知道是面試官給的條件不一樣還是怎么回事, 每次報(bào)錯(cuò)信息都不太一樣, 最開(kāi)始視頻架構(gòu)部門面試打錯(cuò)了, 提示的挺詳細(xì)啊, 又看一遍代碼邏輯沒(méi)錯(cuò)啊, 然后我就申請(qǐng)打開(kāi)控制臺(tái)了

然后開(kāi)始解釋思路, 抬頭看下時(shí)間已經(jīng) 25 分鐘, 寫(xiě)的有點(diǎn)久了啊
學(xué)前端多久了
怎么學(xué)前端的
聊聊項(xiàng)目亮點(diǎn)
我在說(shuō)性能上做的一些優(yōu)化, 面試官?zèng)]追問(wèn)我, 說(shuō)到 http2, TCP 丟包阻塞問(wèn)題, 問(wèn)我有沒(méi)有什么辦法能解決這個(gè)丟包阻塞問(wèn)題, 這好像解決不了或者很困難, 因?yàn)?http3 棄用了 TCP 直接采用的 UDP, UDP 有哪些特性 閉包數(shù)據(jù)怎么檢查
實(shí)現(xiàn)一個(gè)搜索推薦組件會(huì)考慮哪些
我組件庫(kù)里有這個(gè)組件有鏈接, 防抖
怎么監(jiān)聽(tīng)數(shù)據(jù)變化
input 的值嗎, React 中是 onChange,
比如我先輸入一個(gè) a, 然后我在輸入一個(gè) b, a 請(qǐng)求后返回你怎么辦
想了想說(shuō), 后端將我請(qǐng)求值帶回來(lái), 我做一個(gè)判斷是否更新推薦列表
那不通過(guò)后端那
額, 沒(méi)什么想法(請(qǐng)求可以取消...)
webpack 了解多少
之前面試有問(wèn)過(guò),主要還是再使用層面,原理沒(méi)深入了解過(guò),我主要還是想...
嗯嗯嗯嗯嗯嗯...
我該閉嘴了
最大的優(yōu)點(diǎn)和缺點(diǎn)(好像問(wèn)的不是性格, 而是技術(shù)相關(guān)的)
我看你面試過(guò)其他部門, 什么原因
學(xué)歷
啊!(感覺(jué)面試官有點(diǎn)驚訝,眼睛都瞪大了)
我大專嗎, 然后 offer 審批不通過(guò)
反問(wèn)
學(xué)習(xí)和技術(shù)上的建議
我覺(jué)得你學(xué)習(xí)還可以,技術(shù)上嗎,實(shí)習(xí)還是先多打基礎(chǔ)吧,看一些教科書(shū)類的書(shū)籍
48 分鐘
接著復(fù)盤
// 我當(dāng)時(shí)覺(jué)得最差的情況是這個(gè)
twoSum([2, 2, 2, 7], 9);
// n + n - 1
// 但一半一半才最差,
twoSum([2, 2, 7, 7], 9);
// (n / 2) + (n/2) * (n/2)
// 而且我還忽略了一種情況, 這個(gè) else 不應(yīng)該加
twoSum([2, 7, 2, 7], 9);
const twoSum = (arr, target) => {
let obj = {};
let res = [];
for(let i = 0; i < arr.length; i++) {
if(obj[arr[i]] != null) {
let temp = obj[arr[i]];
for(let j = 0; j < temp.length; j++) {
res.push([temp[j], i]);
}
}
let temp = target - arr[i];
// obj[temp] = obj[temp] ? [...obj[temp], i] : [i];
// 用 push 更好一點(diǎn)
obj[temp] ? obj[temp].push(i) : obj[temp] = [i];
}
return res;
}
這場(chǎng)面試題寫(xiě)完之后, 后面也不那么緊張了, 但感覺(jué)題寫(xiě)的有點(diǎn)久了, 而且后面面試官也沒(méi)問(wèn)什么問(wèn)題, 好像我也沒(méi)什么值得他問(wèn)的了,感覺(jué)到面試官對(duì)我不感興趣了,后面聊天打了個(gè)哈欠,我可能耽誤人家午休了吧(下午兩點(diǎn)),之后又貼近了鏡頭整了整頭發(fā),缺少亮點(diǎn)啊。
6月28日,三天了,沒(méi)消息,問(wèn)下 hr, 果然沒(méi)通過(guò)。

最后
喜歡這篇文章?點(diǎn)個(gè)“在看”吧~▼



