<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          兩個(gè)部門,六輪面試,終與字節(jié)無(wú)緣

          共 22776字,需瀏覽 46分鐘

           ·

          2021-07-07 10:41

          家好,我是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',
                  fnfunction({
                      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 = [
              {
                val1,
                children: [
                  {
                    val3,
                    children: [],
                  },
                ],
              },
              {
                val2,
                children: [
                  {
                    val4,
                    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,117], 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)試一下嗎

          image.png
          • 分析一下時(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;
          }
          image.png

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

          image.png

          然后開(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([2227], 9);
          // n + n - 1
          // 但一半一半才最差, 
          twoSum([2277], 9);
          // (n / 2) + (n/2) * (n/2)
          // 而且我還忽略了一種情況, 這個(gè) else 不應(yīng)該加
          twoSum([2727], 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ò)。

          1. 3年前端的職業(yè)成長(zhǎng)與規(guī)劃

            2021-07-01

            為什你應(yīng)該使用picture標(biāo)簽而不是Img標(biāo)簽

            2021-06-30

            他入職騰訊一年,放棄和收獲的那些事兒

            2021-06-28

          最后

          最近要跳槽的,可以加個(gè)微信。
          無(wú)論是考慮跳槽,交個(gè)朋友也好。



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

          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩精品在线免费观看 | 怡红院在线播放 | 黄色日逼免费网站 | 久久秘 一区二区三区四区 | 一本色道久久综合无码人妻88 |