非科班出身字節跳動前端offer,我有一份50000字面試寶典分享給你!

個人經歷

本人211學校,回想我大一的時候,讀的是機電工程,因為對計算機專業好就業比較看重,后來在大一下的時候開始了自己雙學位之路,開始了學計算機專業,從此開始了科班生的生涯。接觸前端也大概是在大一下學期,在一個叫騰訊課堂的地方偶然發現了一套 JS 的視頻,看著感覺不錯,想深入這個領域,但后來發現越往后面學越需要一些計算機科班的專業基礎,于是我當時果斷轉到了計算機。因此這一步選擇算得上偶然,也是一個必然。

大二上學校的課程壓力比較大,不溫不火地學了一個學期,中途有過做全棧的想法,報了個 Python Web 培訓班,但是學的不好,后來直接放棄了,決定還是回過頭來好好把前端搞扎實吧,重新學了一遍 JS,然后看了看 JQuery,研究了里面選擇器實現的源碼,然后去學 Vue,當然也跟著網上的教程做了一些項目,比如慕課網上黃軼老師的餓了么項目炸雞音樂Web App,還有 Dell Lee 的 Vue去哪兒網實戰,一步步做完感覺對自己實戰能力的提升還是很大的,起碼能自己獨立倒騰一個項目出來了。

大二下學期我開始接下了人生當中第一個外包項目,也參加了計算機設計大賽,賺來了三千多的第一桶金,也拿到了中南賽區二等獎的證書。這一切在外人看來其實是相當不錯的經歷了,但對我而言,我一直能夠感受到一種強烈的危機,由于項目一直在趕時間,很多時候秉著能出來效果就行的心態來做,很多細節并沒有我想象中做的那么完美,而且框架里面偶爾會出一些問題,但是我并沒有時間去理解其中的原理。我覺得這并不是我要追求的東西。這種心態,說的好聽點叫追求極致,難聽點,就是強迫癥。

在這種心態的驅使下,完成了外包和比賽后,我馬上了投入了更深一步的學習?!禞avaScript高級程序設計》好好再翻一遍,ES6 重新好好學一遍,看了一遍珠峰周嘯天的 JavaScript 視頻,在 CSDN 上做了相關的筆記(我覺得不算博客),以及在慕課網上學習了webpack的課程React的入門視頻,一路狂奔,學了很多。

也正是大二下學期期末的時候,我開始了在掘金發表第一篇文章,標志著寫博客的經歷正式開始。讓我驚喜的是,發表出來的第一篇博客就被掘金社區的公眾號轉載了,我喜出望外,感覺特別驚喜,于是準備繼續寫下去,不斷規劃和輸出新的內容。

很快,大二下結束后,暑假就到來了。在這個時間有些小伙伴已經出去找實習了,但我深知自己離 offer 還有一些差距,于是又感受到了一絲危機。我曾經問過自己: 如果我要去找實習,會遇到哪些問題?

  • 首先,項目自己覺得深度不夠,拿不出手。
  • 其次,計算機基礎并不扎實,數據結構和算法掌握的并不好,計算機網絡也沒基礎。
  • 最后,前端技術的一些原理知之甚少,更別說框架源碼了。

因此,在大三前的暑假開始,我開始給我的未來實習布道。首當其沖的就是自己去做一個讓自己滿意的項目,這個項目必須足夠的精致,同時不是為了應付任何人。這個項目采用 React 來做的,當時是統一用的 class 組件,后來想試用一下 hooks 特性,發現真香,直接用 hooks 重構了。這個項目也就是我那本掘金小冊項目的前身。當我把代碼放到 Github 上的時候,沒幾天的時間就收獲了上百了個 star,讓我感到特別意外,而不久之后就有同學在 issue 區留言,覺得是一個不錯的練習項目,能不能弄個教程出來。接下來我嘗試著這個項目更大的價值,事實上我也做到了,寫成了小冊放到社區,反響還不錯。關于項目具體細節,詳情請點這里查看。

關于計算機基礎,我在大三上學期花了不少的精力學習數據結構和算法,首先學完了慕課網 bobo 老師的數據結構從入門到進階算法與數據結構綜合提升以及玩轉算法面試這三門課程,夯實了所有的基礎之后,開始鋪天蓋地地刷 leetcode,一學期刷了 100 多道算法題。對于計算機網絡,當時確實沒有時間學了,就把這部分的計劃放在了寒假。

最后是前端技術的深入學習,分為 3 個方向精進,JS 基礎、瀏覽器和框架。

一方面是JS的學習,對我而言,JS 明明學了很多遍了,但是實際上忘的也很快的,我打算重讀一遍紅寶書,然后重新建立完整的 JS 知識體系。緊接著我開始了《JS靈魂之問》系列博客的創作,嘗試著去系統地整理 JS 的知識點,又必須要達到一定的深度,當時對我來說其實是一個相當大的挑戰。在這個整理的過程當中,我也逼著自己去參考了大量的資料和博客,說實話學到了不少,更讓我意外的是,這個系列讓我從此在掘金大火,幫助了許許多多在 JS 進階路上的前端。

在瀏覽器這塊,其實很多運行原理之前也是一知半解,直到一個偶然的機會,發現了極客時間上一個口碑不錯的專欄,專門講瀏覽器的,耐下心來讀完之后,感覺收獲還是挺大的,推薦大家去好好看看,解開了之前很多關于瀏覽器原理的疑惑。

然后是前端框架,我后面逼自己去讀完了 Vue 源碼,原因很簡單,為了面試,但沒想到的是,我目前遇到的面試對我源碼方面問的并不深,只是非常常規的一些原理性的問題,但無疑的是,通讀源碼這個指標對面試的評估來講是相當加分的,并且能夠讓自己站在一個更高的高度去應對面試,遇到相關的面試問題會非常從容。更重要的是,閱讀完源碼,對我個人對于 JS 的理解和 SDK 設計以及設計模式的理解更加深入了一步,這是我當時沒有想到的,也是很長一段時間讓我受益的財富??赡苡腥藭柲闶窃趺淳妥龅降?,關于源碼的閱讀方法,話題有點大,后面再介紹吧。

大三上就準備了這么一些東西,順帶著整理了自己的博客,期末的時候已經上架小冊、粉絲過萬了。

緊接著到了寒假,我把數據結構和算法重新復習了一遍,TCP 和 HTTP 好好系統學了一遍,同時看了一些 chromium 的源碼,復習了一波 Vue 源碼,感覺火候差不多了就開始投遞簡歷了,于是投了阿里和字節跳動,便有上面的面經了。

親身經驗分享

目前的經歷分享就這些,可能會有些記流水賬的感覺,但正是這樣我覺得才足夠真實,因為對前端而言,不可能照著一個系統的學習路徑按部就班,然后達到一個很高的水平,這種美化過的經歷說出來連我自己都不信,誰的人生不是這么誤打誤撞過來的呢?那你可能就會問了,你憑什么能夠把基礎學的那么扎實,通過這些大廠的面試呢?

我覺得有兩點,一點是外在的因素,一點是內在的因素。

對外在的方面,我在輸入一些信息的同時,會加入自己的思考和推敲,然后用自己的方式來輸出,整理成博客,這使得我能夠對知識體系本身有更加深刻的理解,同時也能在忘記這部分知識點之后,重新回顧的時候能夠很快撿起來,節省了非常多復習的時間。

對內在的方面,我覺得自驅力是一個比較重要的因素,即自己驅動自己學習的能力。其實說起來容易,做起來是非常難的,因為外界的誘惑實在是太多,而且學習本身就是脫離舒適區的活動,是一種反人性的活動,本身就是讓人不舒服的,因此很多人不愿意主動學習,這是完全可以理解的。那我為什么會有這種強烈的自驅力呢?

因為危機感,危機感隨之帶來了恐懼。

為什么這么說?

以前聽《得到》APP上的梁寧老師講過,人性其實只有兩大痛點: 一個是愉悅,一個是恐懼。 愉悅感可以讓人沉浸在一件事情當中干一萬小時,成為高手,而恐懼帶來的動力更加顯著。對產品來說,要么就讓用戶爆爽,要么就去幫助他抵御恐懼,否則就不是一個優秀的產品。那么對于個人的成長而言,你做一件事情,沒有找到任何愉悅的感覺,也沒有產生過任何恐懼,那么他基本上在這個領域一事無成。

換句話說,如果一件事情讓你非常瘋狂地去做,要么這件事讓你爆爽,要么它幫助你抵御恐懼。

對我來講,真正驅動我的是后者。危機意識讓我挖掘出真正的痛點,發現自己的恐懼所在,從而帶來強大的自驅力。如果說僅僅是學一些東西來炫耀一番,或者只是去迎合外界的期望,這種動力可以有,但僅僅只是暫時的。當你走出舒適區,面對外界無數誘惑的時候,真正能 carry 你繼續學習的是你內心的痛點。

我覺得明白這一點,比所謂的學習路徑、學習方法重要得多。因為大多數時候我們不是缺少學習資料,或者沒有掌握什么高效的學習方法,只是因為你動力不足、容易懈怠罷了。每個人情況都各不相同,但我覺得想要成長,挖掘自己真正的痛點是最重要的一件事情。

字節跳動三輪技術+一輪HR

技術一面(60min)

  • 剛開始就問我的項目,問的很詳細。
  • webpack 提高構建速度的方式
  • loader 輸入什么產出什么 ?
  • webpack 原理
  • webpack 動態加載的原理
  • webpack 熱更新
  • 如何寫一個 webpack plugin
  • AST 的應用
  • 如何解析一個 html 文本,還是考 AST
  • babel 原理,怎么寫 babel 插件
  • 如何設計一個沙盒 sandbox ?
  • 小程序的 API 做了什么處理,能夠做到全局變量的隱藏,如果是你,怎么設計 ?
  • 基礎題考閉包的,我講對了思路,結果沒做對。
  • 實現顏色轉換 'rgb(255, 255, 255)' -> '#FFFFFF' 的多種思路。
  • 提供一個數字 n,生成一組 0~n-1 的整數,打亂順序組成數組,打亂幾次,如何能夠看起來平衡,說出你能想到的所有方法。
  • leetcode 239
  • 隨便問環節,我問了考閉包的那道題,我答得很好。

二面技術 leader(60min)

  • 業務,業務,還是業務,項目復盤有沒有更好的解決方案。
  • 如何處理一個重大事故 bug
  • 監控體系
  • 虛擬 dom 有什么好的地方? 框架為什么要設計虛擬 dom?
  • webpack 的缺點,讓你設計一個新的構建打包工具,你會怎么設計?
  • 在線文檔編輯,如何處理兩人的沖突,如何展示,考慮各種場景
  • excel 文檔沖突高級處理,文章沖突呢?是上個問題的深化。
  • 基礎題,直接寫出答案:
let x = [1, 2, 3]; 
let y = x; 
let z = [4, 5, 6]; 
y[0] = 10; 
y = z; 
z[1] = 20; 
x[2] = z = 30; 
console.log(x, y, z);
復制代碼
  • 基礎題:簡單實現一個 LRU
  • 隨便問環節

三面業務 leader(60min)

  • 算法題:從數組 [1, 5, 8, 10, 12] 中找到兩個數和為 9,返回 [1, 8] 這樣的結果。
  • 算法題:從數組 [1, 5, 8, 10, 12] 中找到三個數和為 19,返回 [1, 8, 10] 這樣的結果。
  • 算法題 leetcode 300給定一個無序的整數數組,找到其中最長上升子序列的長度。
  • 針對我的項目提問,大概 40 分鐘吧。

HR 面:(30min)

  • 做項目的初衷在什么地方?

  • 歌曲倍速播放的功能是怎么實現的?為什么要想到這個?

  • 公司的業務可能會壓榨自己開源分享的時間,你會介意嗎?

  • 公司內的一些代碼不能開源,和你自己的開源分享沖突了,你怎么辦?

  • 你為什么不早點去實習?現在才開始找實習?

  • 看了你的 GPA ,還是蠻靠前的,你怎么平衡學校的學業和技術的學習的?

  • 怎么看待別人在你博客下面發一些懟你的評論?

  • 在學校有社團經歷嗎?

  • 自己平時有什么興趣愛好?

  • 和室友關系咋樣?

是的,我的字節跳動面試順利,這一面算法沒有難倒我,基本上看到題目我就能想出解法。雖然我簡歷上的項目偏簡單了點,但好在我有好好總結和復盤(最終有驚無險拿到了offer!)………

學習經歷及經驗

面試經驗分享

準備階段

在面試之前,可能很多人會跟我一樣感到焦慮,覺得自己還沒準備好,想多復習一些東西,可越復習越感覺自己不會的東西更多,從而遲遲不敢出去面試。這其實是個悖論,原因就在于技術本身就是學不完的,此時我們需要好好調整一下自己的心態,做兩手準備:

  • 劃清知識體系和邊界
  • 給自己安排一個截止日期(deadline)

準備時間是有限的,我們需要做的就是利用有限的時間達到最大效益的產出,因此盡量地做一些復習鞏固和查漏補缺,發揮自己的優勢,而不要去為了面試學新技術,或者深挖自己從未涉獵的領域。我根據自己目前的實際水平,制定了這樣一份面試知識體系:

其實當時有些知識并沒有完全掌握,但是又需要出去面試,所以給了自己一個截止日期,在 3 月 10 號之前,盡全力準備,到了 deadline,無論如何都要投簡歷出去。這樣,后面的一系列面試就順理成章了,沒有拖得太久,同時準備的還不錯。

另外,關于前端面試基礎知識以及計算機基礎,我已經在博客里面面試題做了系統的梳理和給出了參考解析,下面給大家一些已經產出的內容,讓大家可以完整地學習:

第一章 HTML(★★)

1.瀏覽器頁面有哪三層構成,分別是什么,作用是什么?

2.HTML5的優點與缺點?

3.Doctype作用? 嚴格模式與混雜模式如何區分?它們有何意義?

4.HTML5有哪些新特性、移除了哪些元素?

5.你做的網頁在哪些瀏覽器測試過,這些瀏覽器的內核分別是什么?

6.每個HTML文件里開頭都有個很重要的東西,Doctype,知道這是干什么的嗎?

7.說說你對HTML5認識?(是什么,為什么)

8.對WEB標準以及W3C的理解與認識?.

9.HTML5行內元素有哪些,塊級元素有哪些, 空元素有哪些?.

10.什么是WebGL,它有什么優點?.

11.請你描述一下 cookies,sessionStorage 和 localStorage 的區別?.

12.說說你對HTML語義化的理解?.

13.link和@import的區別?.

14.說說你對SVG理解?.

15.HTML全局屬性(global attribute)有哪些?.

16.說說超鏈接target屬性的取值和作用?

17.data-屬性的作用是什么?

18.介紹一下你對瀏覽器內核的理解?

19.常見的瀏覽器內核有哪些?

20.iframe有那些缺點?

21.Label的作用是什么,是怎么用的?

22.如何實現瀏覽器內多個標簽頁之間的通信?.

23.如何在頁面上實現一個圓形的可點擊區域?

24.title與h3的區別、b與strong的區別、i與em的區別?

25.實現不使用 border 畫出1px高的線,在不同瀏覽器的標準模式與怪異模式下都能保持一致的效果?

26.HTML5標簽的作用?(用途)

27.簡述一下src與href的區別?

28.談談你對canvas的理解?

29.WebSocket與消息推送?

30.mg的title和alt有什么區別?

31.表單的基本組成部分有哪些,表單的主要用途是什么?

32.表單提交中Get和Post方式的區別?

33.HTML5 有哪些新增的表單元素?

34.HTML5 廢棄了哪些 HTML4 標簽?

35.HTML5 標準提供了哪些新的 API?

36.HTML5 存儲類型有什么區別?

37.HTML5 應用程序緩存和瀏覽器緩存有什么區別?

38.HTML5 Canvas 元素有什么用?

39.除了 audio 和 video,HTML5 還有哪些媒體標簽?

40.HTML5 中如何嵌入視頻?

41.HTML5 中如何嵌入音頻?

42.新的 HTML5 文檔類型和字符集是?

第二章 CSS (★★★)

  1. 解釋一下CSS的盒子模型?

  2. 請你說說CSS選擇器的類型有哪些,并舉幾個例子說明其用法?

3請你說說CSS有什么特殊性?(優先級、計算特殊值)

4要動態改變層中內容可以使用的方法?

  1. 常見瀏覽器兼容性問題與解決方案?

  2. 列出display的值并說明他們的作用?

  3. 如何居中div, 如何居中一個浮動元素?

  4. CSS中 link 和@import 的區別是?

  5. 請列舉幾種清除浮動的方法(至少兩種)?

  6. block,inline和inlinke-block細節對比?

  7. 什么叫優雅降級和漸進增強?

  8. 說說浮動元素會引起的問題和你的解決辦法.

13.你有哪些性能優化的方法?

14.為什么要初始化CSS樣式?

15.解釋下浮動和它的工作原理?清除浮動的技巧?

16.CSS樣式表根據所在網頁的位置,可分為哪幾種樣式表?

17.談談你對CSS中刻度的認識?

18.請你說說em與rem的區別?

19.請你說說box-sizing屬性的的用法?

20.瀏覽器標準模式和怪異模式之間的區別是什么?

21.怪異Quirks模式是什么,它和標準Standards模式有什么區別?

22.說說你對邊距折疊的理解?

23.內聯與塊級標簽有何區別?

24.說說隱藏元素的方式有哪些?

25.為什么重置瀏覽器默認樣式,如何重置默瀏覽器認樣式?

26.談談你對BFC與IFC的理解?(是什么,如何產生,作用)

27.說說你對頁面中使用定位(position)的理解?

28.如何解決多個元素重疊問題?

29.頁面布局的方式有哪些?

30.overflow :hidden是否形成新的塊級格式化上下文?

第三章 前端基礎 (★★★)

1.說一下http和https. 55

2.tcp三次握手,一句話概括

3.TCP和UDP的區別

4.WebSocket的實現和應用

5.HTTP請求的方式,HEAD方式

6.一個圖片url訪問后直接下載怎樣實現?

7.說一下web Quality(無障礙)

8.幾個很實用的BOM屬性對象方法?

9.說一下HTML5 drag api

10.說一下http2.0

11.補充400和401、403狀態碼

12.fetch發送2次請求的原因

13.Cookie、sessionStorage、localStorage的區別

14說一下web worker

15.對HTML語義化標簽的理解

16.iframe是什么?有什么缺點?

17.Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?

18.Cookie如何防范XSS攻擊

19.Cookie和session的區別

20.一句話概括RESTFUL

21.講講viewport和移動端布局

22.click在ios上有300ms延遲,原因及如何解決?

23.addEventListener參數

24.cookie sessionStorage localStorage區別

25.cookie session區別

26.介紹知道的http返回的狀態碼

27.http常用請求頭

28.強,協商緩存

29.HTTP狀態碼說說你知道的

30.講講304

31.前端優化

32.GET和POST的區別

33.301和302的區別

34.HTTP支持的方法

35.如何畫一個三角形

36.狀態碼304和 200

37.說一下瀏覽器緩存

38.HTML5新增的元素

39.在地址欄里輸入一個URL,到這個頁面呈現出來,中間會發生什么?

40.cookie和session的區別,localstorage和sessionstorage的區別

41.常見的HTTP的頭部

42.HTTP2.0 的特性

43.cache-control的值有哪些

44.瀏覽器在生成頁面的時候,會生成那兩顆樹?

45.csrf和xss的網絡攻擊及防范

46.怎么看網站的性能如何

47.介紹HTTP協議(特征)

48.輸入URL到頁面加載顯示完成發生了什么?

49.說一下對Cookie和Session的認知,Cookie有哪些限制?

50.描述一下XSS和CRSF攻擊?防御方法?

51.知道304嗎,什么時候用304?

52.具體有哪些請求頭是跟緩存相關的

53.cookie和session的區別

54.cookie有哪些字段可以設置

55.cookie有哪些編碼方式?

56.既然你看過圖解http,那你回答下200和304的區別

57.除了cookie,還有什么存儲方式。說說cookie和localStorage的區別

58.瀏覽器輸入網址到頁面渲染全過程

59.HTML5和CSS3用的多嗎?你了解它們的新屬性嗎?有在項目中用過嗎?

60.HTTP狀態碼

61.http常見的請求方法

62.get和post的區別

63.說說302,301,304的狀態碼

64.web性能優化

65.瀏覽器緩存機制

66.post和get區別

67.說一下css盒模型

68.畫一條0.5px的線

69.link標簽和import標簽的區別

70.transition和animation的區別

71.Flex布局

72.BFC(塊級格式化上下文,用于清楚浮動,防止margin重疊等)

73.垂直居中的方法

74.關于js動畫和css3動畫的差異性

75.說一下塊元素和行元素

76.多行元素的文本省略號

77.visibility=hidden, opacity=0,display:none

78.雙邊距重疊問題(外邊距折疊)

79.position屬性 比較

80.浮動清除

81.css3新特性

82.CSS選擇器有哪些,優先級呢

83.清除浮動的方法,能講講嗎

84.怎么樣讓一個元素消失,講講

85.介紹一下盒模型

86.position相關屬性

87.css動畫如何實現

88.如何實現圖片在某個容器中居中的?

89.如何實現元素的垂直居中

90.CSS3中對溢出的處理

91.float的元素,display是什么

92.隱藏頁面中某個元素的方法

93.三欄布局的實現方式,盡可能多寫,浮動布局時,三個div的生成順序有沒有影響

94.什么是BFC

95.calc屬性

96.有一個width300,height300,怎么實現在屏幕上垂直水平居中

97.display:table和本身的table有什么區別

98.position屬性的值有哪些及其區別

99.z-index的定位方法

100.CSS盒模型

101.如果想要改變一個DOM元素的字體顏色,不在它本身上進行操作?

102.對CSS的新屬性有了解過的嗎?

103.用的最多的css屬性是啥?

104.line-height和height的區別

105.設置一個元素的背景顏色,背景顏色會填充哪些區域?

106.知道屬性選擇器和偽類選擇器的優先級嗎

107.inline-block、inline和block的區別;為什么img是inline還可以設置寬高

108.用css實現一個硬幣旋轉的效果

109.了解重繪和重排嗎,知道怎么去減少重繪和重排嗎,讓文檔脫離文檔流有哪些方法

110.CSS畫正方體,三角形

111.overflow的原理

112.清除浮動的方法

113.box-sizing的語法和基本用處

114.使元素消失的方法有哪些?

115.兩個嵌套的div,position都是absolute,子div設置top屬性,那么這個top是相對于父元素的哪個位置定位的。

116.說說盒子模型

117.display

118.怎么隱藏一個元素

119.display:none和visibilty:hidden的區別

120.相對布局和絕對布局,position:relative和obsolute。

121.flex布局

122..block、inline、inline-block的區別。

123.css的常用選擇器

124.css布局

125.css定位

126.relative定位規則

127.垂直居中

128.css預處理器有什么

129.get請求傳參長度的誤區

130.補充get和post請求在緩存方面的區別

131.說一下閉包

132.說一下類的創建和繼承

133.如何解決異步回調地獄

134.說說前端中的事件流

135.如何讓事件先冒泡后捕獲

136.說一下事件委托

137.說一下圖片的懶加載和預加載

138.mouseover和mouseenter的區別

139.js的new操作符做了哪些事情

140.改變函數內部this指針的指向函數(bind,apply,call的區別)

141.js的各種位置,比如clientHeight,scrollHeight,offsetHeight ,以及scrollTop, offsetTop,clientTop的區別?

142.js拖拽功能的實現

143.異步加載js的方法

144.Ajax解決瀏覽器緩存問題

145.js的節流和防抖

146.JS中的垃圾回收機制

147.eval是做什么的

148.如何理解前端模塊化

149.說一下Commonjs、AMD和CMD

150.對象深度克隆的簡單實現

151.實現一個once函數,傳入函數參數只執行一次

152.將原生的ajax封裝成promise

153.js監聽對象屬性的改變

154.如何實現一個私有變量,用getName方法可以訪問,不能直接訪問

155.==和===、以及Object.is的區別

156.setTimeout、setInterval和requestAnimationFrame之間的區別

157.實現一個兩列等高布局,講講思路

158.自己實現一個bind函數

159.用setTimeout來實現setInterval

160.用setTimeout來實現setInterval

161.代碼的執行順序

162.如何實現sleep的效果(es5或者es6)

163.簡單的實現一個promise

164.Function.proto(getPrototypeOf)是什么?

165.實現js中所有對象的深度克?。òb對象,Date對象,正則對象)

166.簡單實現Node的Events模塊

167箭頭函數中this指向舉例

168.js判斷類型

169.數組常用方法

170.數組去重

171.閉包 有什么用
...

??篇幅有限,更詳細的內容點擊我獲取完整版pdf查看??

第四章 前端核心(★★★★★)

1.JavaScript 有幾種類型

2.深淺拷貝

3.作用域

4.原型和繼承

5.new和this

6.apply、call、bind

7.數據處理

8.Event Loop

9.瀏覽器頁面渲染過程

10.JSONP的缺點

11.跨域(jsonp,ajax)

12.如何實現跨域

13.dom是什么,你的理解?

14.關于dom的api有什么

15.ajax返回的狀態

16.實現一個Ajax

17.如何實現ajax請求,假如我有多個請求,我需要讓這些ajax請求按照某種順序一次執行,有什么辦法呢?如何處理ajax跨域

18.寫出原生Ajax

19.如何實現一個ajax請求?如果我想發出兩個有順序的ajax需要怎么做?

20.Fetch和Ajax比有什么優缺點?

21.移動應用和web應用的關系

22.知道PWA嗎

23.做過移動端嗎

24.知道touch事件嗎

25.移動端的DEMO什么的有沒有做過點的

第五章 前端進階(★★★)

  1. 前端測試

  2. 作為一個項目負責人怎么協調多人協作

  3. 接口文檔的制定

  4. 需求不明確,接口文檔是不是越詳細越好

5.webpack和gulp區別(模塊化與流的區別)

6.redux用處

7.redux里常用方法

8.angularJs和react區別

9.vue雙向綁定原理

10.說說vue react angularjs jquery的區別

11.node的事件方法講講看

12.node的特性,適合處理什么場景

13.你有用到Express,講講Express

14.promise的狀態有那些

15.數組移除第一個元素的方法有哪些?

??篇幅有限,更詳細的內容點擊我獲取完整版pdf查看??

第六章 移動端開發(★★★)

1.介紹一下react

2.React單項數據流

3.react生命周期函數和react組件的生命周期

4.react和Vue的原理,區別,亮點,作用,

5.reactJs的組件交流

6.有了解過react的虛擬DOM嗎,虛擬DOM是怎么對比的呢

7.項目里用到了react,為什么要選擇react,react有哪些好處

8.怎么獲取真正的dom

  1. 選擇react的原因

10.react的生命周期函數

11.setState之后的流程

12.react高階組件知道嗎?

  1. React的jsx,函數式編程

14.React的生命周期

15.說說自己理解的react

16.react的組件是通過什么去判斷是否刷新的

17.其他移動APP開發框架(PhoneGap,AppCan,HTML5+,Framework7)

第七章 計算機基礎(★★★)

1.TCP建立連接的三次握手過程

2.cdn原理

3.說一下用戶從輸入url到顯示頁面這個過程發生了什么

4.HTTP的頭部包含哪些內容。常見的請求方法(我為什么要說后面的options,head,connect)

5.請求方法head特性

6.HTTP狀態碼,301和302有什么具體區別,200和304 的區別

7.OSI七層模型

8.TCP和UDP的區別,為什么三次握手四次揮手

9.HTTP緩存機制

10.websocket和ajax的區別是什么,websocket的應用場景有哪些

11.TCP/IP的網絡模型

12.知道什么跨域方式嗎,jsonp具體流程是什么,如何實現原生Jsonp封裝,優化,對于CORS,服務器怎么判斷它該不該跨域呢

13.怎么生成token,怎么傳遞,

14.操作系統進程和線程的區別

15.什么是進程 線程

16.線程的那些資源共享,那些資源不共享

  1. linux指令用的多嗎,怎么進行進程間通信

  2. kill指令了解過嗎

19.操作系統里面進程和線程的區別

20.Linux查詢進程指令,查詢端口,殺進程,

21.進程間的通信方式有哪些?

22.Redis和 mysql

第八章 算法與數據結構(★★★★)

1.二叉樹層序遍歷

2.B樹的特性,B樹和B+樹的區別

3.尾遞歸

4.如何寫一個大數階乘?遞歸的方法會出現什么問題?

5.把多維數組變成一維數組的方法

6.知道的排序算法 說一下冒泡快排的原理

  1. 說一下你了解的數據結構 區別

8.Heap排序方法的原理?復雜度?

9.幾種常見的排序算法,手寫

10.數組的去重,盡可能寫出多個方法

11.如果有一個大的數組,都是整型,怎么找出最大的前10個數

12.知道數據結構里面的常見的數據結構

13.找出數組中第k大的數組出現多少次,比如數組【1,2,4,4,3,5】第二大的數字是4,出現兩次,所以返回2

14.合并兩個有序數組

15.給一個數,去一個已經排好序的數組中尋找這個數的位置(通過快速查找,二分查找)

第九章 設計模式(★★★★)

1.設計模式:單例,工廠,發布訂閱

2.看過一些設計模式的書?你覺得設計模式怎么樣?

??篇幅有限,更詳細的內容點擊我獲取完整版pdf查看??

接下來進入面試的階段。

關于算法:

算法的準備那是一定一定要刷題的,大概分為這樣的步驟:
第一階段:對于某一個具體的算法,首先要搞清楚這個算法解決的問題是什么,可能是實現一個具體的功能,也可能是在某些方面,比如時間復雜度或者空間復雜度方面很卓越,總之搞清楚這個算法被研究出來的目的是什么。

第二階段:然后就要弄清楚這個算法的生存環境了,也就是看看你此時研究的東西是不是對別的知識有依賴,應該先把底層依賴的知識理解并掌握。這些問題都解決之后,就進入到算法本身的學習,理解一個算法是一件辛苦的事情,剛開始看必然會產生很多的困惑,比如經常會懷疑作者講述的內容的重要性?這些內容和這個算法有什么聯系呢?經常會有這種摸不著頭腦的感覺,其實作者做的鋪墊都是為了建立起描述算法主要內容的基礎,只有接受和理解這些基礎,才能逐漸觸碰到算法的精髓,所以耐心是很重要的。

第三階段:算法的主要過程看完之后,往往還是會感到困惑,主要是不知道這個過程好在哪,這就進入了下一個階段,理解作者對這個過程在功能性或者效率卓越這件事上的解釋和證明。這才真正觸碰到算法最精髓的部分,也就是深度的理解算法的主要過程所帶來的好處,這才是最鍛煉人理解能力的地方。

第四階段:上面幾點是算法學習階段的過程了,接下來就是研究算法的代碼實現,自己設計測試用例親自跑一下代碼,以及從代碼運行時間的角度分析這個算法的優勢,這也是加深對算法的理解的過程。

第五階段:最后是配合相應的題目練習,讓自己通過題目練習的方式,會用、善用學習到的算法,并對這個算法產生一定的敏感程度,具體是指看到某些題目時,能夠根據題目的特點,產生與該算法的對應,也就是具備舉一反三的能力。

面試階段

從上面的面經中可以看到不同方向、不同級別的面試官各自的偏好不一樣,因此對于不同的面試官,采取的策略也應有所不同。但我更想分享的是一些具有共性的地方,這些策略可以適用于絕大部分的面試場景,讓自己獲得更大的競爭優勢。當然,所謂的面試策略,都是基于你前期充分的準備,不然都只是天方夜譚,毫無可行性。

策略一: 備好殺手锏

面試官一天可能要面5-6人,甚至十幾人,那么你是否想過: 他憑什么對你印象更加深刻?

心理學有一個效應叫峰終效應,就是人在一個有限的活動當中,對一件陌生事物的看法大致由兩個時間點所決定: 一個是高潮點,一個是結尾的點。

對面試而言,我認為同樣是適用,具體來講,和面試官的交流,其實也就是和一個陌生人的交流,如何來給他留下更深刻的印象?需要在高潮點展現自己,在結尾點保護自己,在面試的過程中適當給面試官一些和別人不一樣的回答和見解,使之感到驚艷,而在結尾的時候,你說的話其實更容易被面試官記住,這個時候由于面試已經接近尾聲,你可能沒有當時那么緊張,這個時候需要適當的謹慎一些,不要徹底放松,避免不小心說出一些對自己處境不利的話。

其實,我更想強調的是前者,即如何將面試帶上一個高潮點,并且讓面試官感到驚艷。其實這并不是什么簡單的事情,畢竟能驚艷的只是少數,那么如果才能做到這一點呢?

在面試前,不妨準備好自己的殺手锏。什么是殺手锏?就是每當面試官問到相關的問題的時候,你能夠有自信比 90% 的人理解得更深刻,回答更出色。以我自己為例,我準備的殺手锏并不少,HTTPS 所有加密算法,chromium 進程 IPC 原理,斐波拉契第 n 數的 logn 解法,瀏覽器渲染過程,vue 編譯器架構vue 雙向綁定,快排以及手寫 V8 排序......

在其它基礎知識都 OK 的前提下,這些殺手锏是你技術上的核心競爭力,這是你和其他人相比體現不可替代性的地方。當然,時間有限,不可能每個角度都能研究很深入,但如果你不準備,跟大家背一樣的答案,很難從人群當中脫穎而出。

策略二: 適當暗示

面試的過程其實就是一個和面試官互相試探的過程,一方面是他對你提問,另一方面你需要給他一些信號,引導他去挖掘你的閃光點。

其實有兩個時機可以發一些暗示的信號,一個是自我介紹的環節,這個環節中可以向面試官展示出你之前深入研究過哪一塊的技術,指引他往那個方向問,另一個是技術細節的提問,可以在回答的時候適當發揮,大部分面試官是愿意聽你展開的。

最后

暫時先分享這么多吧,希望大家都能在春招當中拿到自己滿意的 offer。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容