<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>

          一年外包經(jīng)驗入職字節(jié)啦

          共 4882字,需瀏覽 10分鐘

           ·

          2021-08-02 16:19

          點擊上方關(guān)注 前端技術(shù)江湖一起學(xué)習(xí),天天進步


          寫在最前

          我是晨霜,于20年畢業(yè)于一所雙非本科,在經(jīng)歷了一個月左右的面試流程之后,如愿以償?shù)哪玫搅俗止?jié)的offer,本篇主要記錄此次面試經(jīng)歷,希望能夠?qū)δ阌兴鶐椭?/p>

          準(zhǔn)備面試

          機會是留給有準(zhǔn)備的人的。

          筆者之前在阿里巴巴本地生活做外包,由于外包工作性質(zhì)的特殊性,遂在三月底就已經(jīng)開始準(zhǔn)備面試了,主要準(zhǔn)備的是算法和React。

          準(zhǔn)備算法

          先來講講算法吧,當(dāng)時筆者是一個算法小白,連時間復(fù)雜度都不會算的那種,下面先來講講筆者是如何學(xué)習(xí)算法的。

          個人認(rèn)為算法的難度確實偏大,如果一上來就看諸如《算法導(dǎo)論》的書籍或者相關(guān)文章, 肯定會一頭霧水,甚至可能會適得其反,那么此時就需要一個非常好的入門課程來學(xué)習(xí)。這里推薦ssh大神都推薦的波波老師的視頻教程 玩轉(zhuǎn)算法面試[1],真的非常贊,波波老師會從最基礎(chǔ)的講起,還會用動畫的形式來幫助你理解算法。筆者大概花了一個月的時間學(xué)完了該課程,跟著視頻刷了100多道leetcode,學(xué)完之后,思維真的提升了很多。

          順便放一個github地址 JavaScript算法與數(shù)據(jù)結(jié)構(gòu)[2],這個比較全面,但不適合入門。

          可能會有人認(rèn)為不進大廠就不需要學(xué)習(xí)算法,我個人認(rèn)為學(xué)習(xí)算法是一定有用的,只要你是一個稍微有點追求的程序員,就一定會去學(xué)習(xí)算法。綜合來看筆者過去一個月的面試,雖然算法在面試中占的比例不高,但卻非常關(guān)鍵,例如筆者在面阿里的時候首先就是做算法題,做過了才有后續(xù)面試。

          準(zhǔn)備React

          首先是hooks,都2021年了,hooks已經(jīng)成為人手必備的技能了吧,這里推薦Dan的 useEffect完整指南[3],看完這個,hooks相關(guān)的問題都能迎刃而解。

          React這里推薦卡老師的 React技術(shù)揭秘[4],你想知道的React知識都在里面,例如React為什么要費力做Concurrent Mode,F(xiàn)iber是什么(非常高頻的一個考點),React更新流程又是什么,hooks的原理等等。u1s1,卡老師沒有出小冊而是選擇免費開放給大家,瑞思拜。

          一些其他

          在準(zhǔn)備完算法+React之后,還需要準(zhǔn)備一些其他的,這里就直接放鏈接了,不過更多的還是在于平時的積累。

          • webpack的面試題總結(jié)[5]
          • 神三元同學(xué)的面經(jīng)[6]
          • 死磕36個JS手寫題[7]
          • 精讀《Dom diff 原理詳解》[8]
          • TianTianUp同學(xué)的面經(jīng)[9]

          面試過程

          字節(jié)的面試用的是牛客網(wǎng),形式是視頻面試+在線寫代碼,第一次面試還是比較緊張的。

          一面

          一面面試官是一個很年輕的同學(xué),因此問的問題也會比較年輕一些。

          • React17更新了哪些內(nèi)容?
          • React的fiber是什么?解決了哪些問題?
          • setTimeout為什么最小只能設(shè)置4ms,怎么實現(xiàn)一個0ms的setTimeout?
          • 看你簡歷上有寫到rem和vw,能講講嗎?為什么你選擇使用rem而不是vw?
            • 當(dāng)時回答是rem兼容性更好,且px轉(zhuǎn)rem后可以避免過長小數(shù)。
          • 瀏覽器對于小數(shù)單位是怎么計算的?
            • 當(dāng)時沒答上來,只說了句四舍五入,后續(xù)查閱相關(guān)資料得知不同瀏覽器策略不同,有的會四舍五入,有的會直接取整。不管什么單位,瀏覽器最后都會Computed為px后再進行渲染。
          • interface和type的區(qū)別是什么?你日常工作中是用interface還是type?
          • ts的逆變和協(xié)變有沒有了解過?
            • 沒有
          • 能不能講講小程序的原理?
            • 網(wǎng)上很多相關(guān)文章,把雙線程講出來就行。
          • 看你之前有做過Taro,能不能講講React是怎么跑在小程序里面的?
            • 大概把Taro3的原理講了一遍,主要是jsx->vdom->json->wxml,具體可以看這里 Taro預(yù)渲染[10] 和 Remax實現(xiàn)原理[11] ,之前寫過demo,所以對這塊還是比較了解。
          • 你剛才講到j(luò)son->wxml這一步可以有兩種方式(template遞歸和自定義組件遞歸),能不能講講兩種方式的優(yōu)劣?
            • 簡單講了一下,template遞歸是純視圖層的操作,性能肯定更好,但是由于微信小程序wxml編譯器的限制,template不能遞歸調(diào)用自己(支付寶小程序無此限制),所以Taro在微信環(huán)境中把同一個template寫了n份,只有id不同,就是為了遞歸渲染。
            • 而自定義組件遞歸還要涉及到邏輯層,例如生命周期等,性能會差一些,同時還有Shadow DOM引起的樣式問題,目前kbone使用的是自定義組件遞歸。
          • 小程序有沒有HMR,能不能講講HMR的原理?
            • 小程序沒有HMR,當(dāng)時只講出來了保存代碼小程序是怎么刷新的,HMR沒有講出來。
          • 講講z-index
          • 講講position
          • 實現(xiàn)一個ts Include
            • 不會
          • 實現(xiàn)一個useInterval
            • 寫的不是太對
          • js event loop執(zhí)行順序
          • 實現(xiàn)一個immutable
            function immutable(obj{
              return {
                set(path, val) {
                  const paths = path.split('.')
                  const lastK = paths.pop()
                  this.get(paths.join('.'))[lastK] = val
                  return this
                },
                get(path) {
                  const paths = path.split('.')
                  return paths.reduce((a, k) => a[k], obj)
                }
              }
            }
            • 這里給一個大佬的實現(xiàn),我實現(xiàn)的太菜

          一面到這里就結(jié)束了,可以感受出來,字節(jié)對于前沿技術(shù)和底層還是很看重的。當(dāng)時手寫題部分確實寫的不太好,甚至以為自己涼涼了,結(jié)果還是給過了。

          二面

          一面結(jié)束后第二天就收到了hr打來的約二面的電話,當(dāng)時心里還是很開心的,二面是交叉面試,面試官年紀(jì)稍微大一點。因為是在晚上,所以很多問題記不太清楚了。

          不同于一面面試官,和二面面試官聊了一段時間的項目相關(guān)的問題,根據(jù)自己情況有啥說啥就行。

          • options請求是什么?有什么作用?
          • cdn的原理是什么,是在網(wǎng)絡(luò)哪一層起的作用?
          • 項目性能是如何做優(yōu)化的?
            • 我主要從網(wǎng)絡(luò),緩存,js,css,接口合并等幾個方面講的,該題比較寬泛,可自行發(fā)揮。
          • 動態(tài)創(chuàng)建script標(biāo)簽并插入到頁面上,說執(zhí)行時機
          • 給你一個“A2B3”這樣的字符串,輸出“AABBB”
          • 接上題“C4(A(A3B)2)2”,帶嵌套的,這兩題都不是原題,但是類似
          • 寫一個curry,要求 add(1)(2)(3)(4) 打印10
            • 一開始我洗的add(1)(2)(3)(4)(),面試官問我能不能把最后的()去掉,最后尋求提示,他說console.log是怎么打印函數(shù)的,豁然開朗,復(fù)寫toString即可。

          二面肯定不止問了上面這些問題,但是我能記住的只有這些了。。。

          我最后問了二面面試官業(yè)務(wù)相關(guān)問題,他說你去找三面面試官問,當(dāng)時我就知道過了,哈哈。

          三面(涼涼)

          沒錯,第一次三面涼涼了,甚至都已經(jīng)收到面試失敗的郵件,后面會聊,先看問題。

          • loader和plugin的區(qū)別是什么?
          • webpack打包優(yōu)化,我還提到了vite,順便講了下vite
          • 小程序原理,以及Taro原理
          • xss和csrf
          • http2
          • Tree Shaking原理
          • 最長回文子串
          • 大數(shù)相加

          這次面試非常快,因為確實很多都沒答上來,面完之后我就知道,結(jié)束了??。

          三面

          大概幾天后吧,hr打電話跟我說換個leader重新面試,理由是我一二面表現(xiàn)還不錯,后來才知道,真正的原因是我現(xiàn)在的leader執(zhí)意把我撈起來的。

          • 聊了很多工程化相關(guān)的問題,主要是項目從開發(fā)到上線這一整套流程,聊完之后他也指出了我說的這一套流程有什么不完善的地方。
          • React fiber
          • http2
          • Tree Shaking原理
          • 項目優(yōu)化和網(wǎng)絡(luò)優(yōu)化
          • 股票最大收益
          • 大數(shù)相加

          其實在這場面試之前,面試官特意讓我等了10分鐘,應(yīng)該是在看我之前沒寫出來的問題,所以在問的時候特意問的和第一次三面比較重疊。

          總結(jié)

          進來之后leader和我說之所以把我撈起來是因為覺得我有潛力,他也指出其實我面試表現(xiàn)并不是太好,還是有很多可以繼續(xù)改進的地方,他說優(yōu)秀的人是會自驅(qū)的,你第一次沒答上來,如果你是一個優(yōu)秀的人,你第二次一定能答上來,非常感謝我現(xiàn)在的leader。

          如果你跟筆者一樣,工作經(jīng)驗少,學(xué)歷不夠好,擔(dān)心投大廠被拒,相等幾年再投,那我建議你大可不必,隨著你工作經(jīng)驗的增加,大廠對你的要求也會增加,你能確定這幾年你的成長速度能跟上大廠對你的要求嗎?種一棵樹最好的時間是十年前,其次是現(xiàn)在。

          寫在最后

          筆者目前就職于字節(jié)跳動-抖音電商部門,目前團隊在北京和上海都還有非常多的hc,有興趣的可以投遞簡歷到[email protected]或者加我微信suchangvv找我內(nèi)推。祝大家都能找到心儀的工作。

          參考資料

          [1]

          玩轉(zhuǎn)算法面試:https://coding.imooc.com/class/82.html

          [2]

          JavaScript算法與數(shù)據(jù)結(jié)構(gòu):https://github.com/trekhleb/javascript-algorithms

          [3]

          useEffect完整指南:https://overreacted.io/zh-hans/a-complete-guide-to-useeffect/

          [4]

          React技術(shù)揭秘:https://react.iamkasong.com/

          [5]

          webpack的面試題總結(jié):https://juejin.cn/post/6844903877771264013

          [6]

          神三元同學(xué)的面經(jīng):https://juejin.cn/post/6844904106537009159

          [7]

          死磕36個JS手寫題:https://juejin.cn/post/6946022649768181774

          [8]

          精讀《Dom diff 原理詳解》:https://juejin.cn/post/6947856296771223589

          [9]

          TianTianUp同學(xué)的面經(jīng):https://juejin.cn/post/6945625394154307592

          [10]

          Taro預(yù)渲染:https://taro-docs.jd.com/taro/docs/prerender/

          [11]

          Remax實現(xiàn)原理:https://remaxjs.org/guide/implementation-notes


          The End

          歡迎自薦投稿到《前端技術(shù)江湖》,如果你覺得這篇內(nèi)容對你挺有啟發(fā),記得點個 「在看」

          點個『在看』支持下 

          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  91 aaa| 国产精品无码久久久 | 婷婷丁香五月激情 | 被黑人操逼视频 | 婷婷丁香激情五月天 |