1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4756字,需瀏覽 10分鐘

         ·

        2021-07-21 09:48


        寫在最前

        我是晨霜,于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)為不進(jì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(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后再進(jìn)行渲染。
        • 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é)

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

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

        寫在最后

        筆者目前就職于字節(jié)跳動-抖音電商部門,目前團(tuán)隊在北京和上海都還有非常多的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


        瀏覽 95
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色婷婷亚洲婷婷 | 岳啊灬啊别停灬啊灬快点老番 | 婷婷五月丁香网狠狠色综合 | 欲求不満の人妻白峰美羽 | 麻豆传媒在线观看视频 | 婷婷五月天精品 | 精品无码人妻一区二 | 丁香一区二区三区 | 99精品视频免费在线观看 | 亚洲无码精品视频 |