"雙非"應屆生校招如何獲得大廠青睞?(內附前端大廠面經)|掘金技術徵文

frehk發表於2018-04-09

寫在前面的話

筆者從17年的2月份開始準備春招,其中遇到不少坑,也意識到自己走過的彎路。故寫了這篇文章總結一番,本文適合主動學習的,對自己要學的課程不明確的,對面試有恐懼症的...等將來打算從事技術崗位的同學們。

正文開始

為什麼要準備校招?社招不一樣能夠進入大公司嗎?對於一些不懂校招這個概念的人來說,經常會問這個問題。同時,大公司的校招薪水一般比工作2年經驗社招的人還高,為什麼企業會給一個沒經驗的應屆畢業生這麼高的薪水?理由何在?理清這些問題之前,我們先來看看校招是一個什麼概念?

校園招聘是企業直接從學校招聘各類各層次應屆畢業生。校招每年時間比較固定,即春季校招(三四月份)和秋季秋招(九到十二月份)。在原則上,春季校招大部分崗位是面向大三與研二(研三畢業)的同學,對這部分的同學提供實習的崗位。少部分企業由於秋招簽約率不高或者業務劇增,會針對大四與研三的同學進行補招。

而秋季秋招主要針對大四與研三的同學(這裡以每年的九月份來分隔年級),對這部分同學提供的是畢業之後的正職工作。拿到秋招offer的同學,如確定入職需與用人單位簽署三方協議,以保證雙方的利益不受損失。

有校招需求的企業一般是發展規模較為成型的企業,不論是成熟運作的傳統企業,或年輕但已然龐大的網際網路公司。在較為成熟的企業管理下,分工細緻,完善地各種福利補貼制度,以及專業的導師制培養人才的策略,這些因素無疑能帶給應屆生們更好的成長。

同時,應屆生在校空閒時間多,能學的東西更多,工作之後業務繁多能真正擠出來自主學習的時間太少,計算機基礎的課程篇幅過多,出來工作之後就沒時間、沒精力學了。

而這些計算機基礎課程卻是成為業界大牛的必經之路,沒學這種基礎知識,很多東西的底層原理我們是沒辦法摸透的,這也是為什麼網際網路BAT大廠重視計算機基礎的一個原因。

基礎紮實工作之後很多東西很快就可以上手,所以很多網際網路大廠寧願把招聘精力放在校招,而不是社招;其二,應屆生作為新鮮血液一般還沒有成家,固然能為公司做更大的貢獻。

如何準備校招?

既然校招這麼重要,那我們應該怎麼準備校招呢?

要想在校招中取勝,筆者覺得有幾個方面是比較重要的:視野+專注+方法論+心態

1.視野

視野的開闊指對一件事物認知的廣度,要對業界有一定的瞭解,才能明確我們的求知方向;否則一味地蠻幹,最後只會南轅北轍。舉個例子:對於非一本學校的某些同學來說,可能都不知道校招是怎麼一回事,身邊的老師也沒有跟同學們灌輸這些思想,不關注技術社群的同學可能就不知道。導致的後果就是不清楚大廠注重的是哪方面的知識(大廠考察的知識一般來說對技術發展很有意義),水平停滯不前,最後畢業去了家不太理想的公司。

很多東西都是這樣,身邊的人不可能全部傳授給你,需要你帶著一份熱情不斷地去挖掘。我們可以在空閒的時間裡,去各種技術社群以及一些問答平臺上刷刷動態從而不斷地開闊我們的視野,比如說:在知乎平臺上我們可以看到某些前輩的回答,一般這種回答都具有建設性意義,有時候拋開一些現成的觀念,去接受一些新觀念何妨不是一件好事呢?

同時,我們可以在社交平臺上結交一些應屆生“大佬”,詢問他們各種學習方法,一般“大佬”都會很熱情的幫助你。混熟了以後,可以跟“大佬”交流下面試心得、學習心得等等的東西,不得不說與同型別的人交流是成長最快的一種方式。

2.專注

專注是指在技術方面投入的時間成本。我們都不是聖人,只有不斷地去學習與訓練才能更大程度地去提升自我。當我們對一件事物有熱情時,我們都願意把所有時間花在它上面。就如我們看上了一個漂亮的女生,對她產生好感了,我們會想盡一切辦法去討好她。

在技術方面也是這樣的,對於我們不感興趣的方向我們從不會主動地去學習,保持對技術的熱情才能達到持續的產出。有一句話說的好:時間花在哪裡,成就就在哪裡。A同學在課後每天都花8小時專研技術,而B同學每天只在課堂上學習。很明顯這兩人的差距只會越來越大,放心地去努力吧,付出了肯定會有回報的,回報未到只是時候未到。

專注還指對某一領域的專注程度。我們應該對自己以後想從事的職位有一個大概的方向,從而對這個方向應具備的技能進行鑽研。有時候看到部分同學既寫前端程式碼,又寫PHP後端程式碼,又寫一點硬體底層C語言程式碼,精力太分散了到最後很難做到每樣東西都精通。大廠對應屆生的要求還不至於做到全棧工程師的程度,能做到熟悉一領域的開發已經很不錯了,當然懂的越多是一個加分項(但非必備)。

反觀大廠對應屆生的要求是熟悉計算機專業的必修課,諸如:資料庫原理、作業系統原理、資料結構與演算法、計算機網路等,這類知識可能比較枯燥學起來沒什麼勁,但卻是必備的,其能為以後工作發展鋪路。當然每個崗位所要求的側重點不同,但卻百變不離其宗。對這種基礎知識要學到哪種程度呢?

是不是考試考到80分以上就代表這門課掌握得不錯呢?不是這樣的,考試的考點是有侷限性的,我們應該通過看一些鉅獻讀物來全面學習。看完之後我們可以通過看別人的面試經歷(後面簡稱“面經”)來檢測自己是否掌握這些知識點。

對於不會的知識點,建議大家可以過一遍書本的內容,書本講的內容一般比較詳細。不建議通過搜尋引擎查詢這種與理論相關的內容,因為大部分搜出來的結果都是摘抄書本的文字。面試服務端開發時,經常會被問到資料庫索引的底層實現原理。很多同學可能會問:“為什麼要搞懂這些原理性的東西?我會怎麼用不就行了嗎?”。只懂使用API的人永遠是搬運工,工程師最大的使命是去創造,研究原理的時候我們能瞭解到先人的設計初衷,從而能更快速地線上上出現效能問題的時候根據原理排查問題。

3.方法論

要想達成某個目標都有其特定的方法論,學習技術也不例外,掌握適當的學習方法才能事半功倍。 我們需要形成一個完整的知識體系,強烈建議大家讀一些鉅獻讀物,其講的內容很詳細,不會漏掉某些知識點。 讀完一章節後建議大家可以做做筆記,堅持讀完一本書你會發現受益匪淺,以下是一些鉅獻讀物的推薦:

JavaScript

  • JavaScript高階程式設計(入門前端必讀讀物)
  • 你不知道的JavaScript系列(帶你探索JavaScript的黑魔法)
  • JavaScript設計模式與開發實踐(讓你的程式碼錦上添花)

計算機網路

  • 圖解HTTP(Web開發必會)
  • 計算機網路(第五版)作者:謝希仁

資料結構

  • 網易雲課堂浙大的資料結構課程(推薦,基礎視訊,每節課的配套題目必須獨立完成)
  • 大話資料結構(推薦,但是感覺不如浙大的視訊講解)
  • 演算法4(推薦,書籍程式碼是Java語言,不影響理解)

演算法

  • 劍指offer(看完之後你會發現面試會遇到原題)
  • 程式設計師程式碼面試指南(作者:左程雲,裡面講的比劍指深入一點)
  • LeetCode(看完劍指可以進階演算法)

資料庫

  • 資料庫概論(基礎,重在瞭解概念)
  • MySQL必知必會
  • 高效能MySQL

在準備面試的時候可以上牛客網的討論區看看面經,瞭解一下面試可能會被問到的問題,對於不會的問題要查漏補缺。當你看完好幾篇面經你會發現面試很多問題都是重複的,也就是說這些問題是必須掌握的。同時,可以不斷地向更深的層次學習,比如看看原始碼的實現等等,這些深層次的東西是面試的加分項。

平時的積累也很重要,做專案或者學習知識點的時候可以把心得分享到部落格上,一個好處是可以重新梳理知識點,在這個過程中你會對這些知識點印象更加深刻,同時也會給面試加分,面試官看了你的部落格之後可以看出你是一個持續學習的人,這將會加大你面試的通過率。

另個好處是在分享的過程中,可以提升自身的表達能力,畢竟把事情講清楚與心裡懂事情是怎麼回事是兩碼事,這也為之後公司的內部分享會奠定基礎。

4.心態

在準備校招的過程中難免會遇到一些困難,比如:書本的內容看不懂,這時候可以從搜尋引擎裡搞清楚一些名詞的意思,再把這些名詞帶入書本中反覆地去理解。遇到困難的時候要保持一種愈戰愈勇的心態,面試的過程也難免會失利,不要氣餒。這時候的重點是把面試被問到不會的知識點搞清楚,爭取下次被問到的時候能答上來。

關於簡歷

書寫簡歷也是門學問,優秀的簡歷能在內推批次脫穎而出直通面試。

  • 能縮減的資訊儘量縮減,比如一些專業必修課的課程就沒有必要寫上去
  • 個人資訊一定要寫全,如姓名,電話,郵箱,求職意向(加分項:持續產出的部落格與github)
  • 專案介紹用一句話概述,著重點在於技術點的描述,建議用一些顯著性的數字註明成果(經過xxx,效能提高了30%等)
  • 對於業務型的專案,不要把那些CURD的功能寫出來(太low了千篇一律),這種專案在編碼的時候要多思考,看看哪些卓越的技術點可以提煉出來
  • 獲獎情況方面可以把一些有代表性的比賽及名次寫進去,最好不超過3個

關於簡歷投遞

簡歷投遞有幾個比較重要的階段:提前批、正式批、補招。建議大家前期要廣投各種企業,這能一定機率地增大面試的可能性。面試多了就有了面試的感覺,拿offer的機率會更大,後期我們能更好地選擇offer。

1.提前批

無論是春招還是秋招,提前批都會在校招正式開始前的1~2個月開始內推,一般網際網路大廠都有提前批。提前批一般需要在職人員內推,有師兄師姐在名企可以讓其幫忙推薦。沒有的話也無需擔心,一旦有內推在牛客網討論區總會出現各種資訊,把簡歷投到帖子的郵箱裡也可以進行內推。在提前批裡只要你的簡歷通過了篩選就能直通面試了,這就是為什麼要提前準備校招。

2.正式批

正式批需要在校園招聘的官網上申請,一般來說會比提前批多一輪線上或線下的筆試,只有筆試過了才能有面試的資格。校招招聘資訊可以在梧桐果檢視,裡面還有宣講會一欄,錯過了提前批的同學可以找到符合自己需求的公司的宣講會時間,某些公司在宣講會結束後會進行當場的筆試,一般現場筆試通過後,第二天會進行現場的面試。

3.補招

由於某些“收割機”的棄坑,這時候某些崗位可能還會有幾個空缺的名額。招聘的形式與提前批相似,也通過員工內部推薦,簡歷通過後會進行面試。

關於實習

最後說說找實習的事情,建議大家提前一年準備春招,這樣拼進網際網路知名大廠(百度、阿里、騰訊、滴滴、美團、京東等等)的可能性很大。實習的工作地點無非太在意,實習最重要的是鍍金,有網際網路知名大廠的實習經歷,在秋招找工作是非常吃香的。

因為實習經歷絕大多數情況下決定了你的能力,HR在篩簡歷時就會認為你既然能被上一家大廠所認可,你的能力肯定不會差到哪裡去,就會讓你無需筆試直通面試,這樣在秋招提前批拿到offer的機率更大!

(注:原創內容,轉載請聯絡獲取授權。)

校招面經

以下是我的校招面經:

網易遊戲雷火事業群

  • 塊級元素和行內元素的區別
  • 行內塊級元素是什麼東西?
  • HTML語義化的理解和作用
  • 盒子模型
  • 元素的水平和垂直居中
  • 三欄佈局,左右定寬,中間自適應
  • JavaScript的基本資料型別,0 == null嗎?為什麼?
  • AJAX實現原理
  • 跨域怎麼做
  • 移動端怎麼做優化?動畫如何做加速?
  • 如何做首屏加速的?
  • 移動端適配的3種方案
  • 單頁應用的路由內部原理怎麼做的?自己實現過SPA嗎?
  • 瞭解過canvas和WebGL嗎?
  • 如果讓你做IE7相容,你怎麼做?
  • 我們網易遊戲要做一個互動性很強的移動端介面,你有什麼思路嗎?

有贊

  • 介紹專案,技術難點
  • 效能優化
  • 圖片懶載入怎麼做的(getBoundingClientRect)
  • 懶載入的滾動如何做優化(函式節流)
  • cookie除了key與value還有哪些引數
  • 做過後端吧?如何判斷區分一個使用者的身份?
  • session的生成規則?sessionid的生成規則?

CVTE

  • 介紹專案
  • 專案用REM佈局吧?REM如何做自適應的?
  • 知道哪5種設計模式嗎?
  • Vue雙向繫結的原理
  • AMD是什麼?解決什麼問題?瞭解AMD,CMD,UMD嗎?AMD與CMD的區別?啥叫依賴前置?
  • BootStrap的柵格系統實現原理?
  • 什麼是原型鏈
  • 三欄佈局,左右定寬,中間自適應(說了5種)
  • 效能優化
  • 為什麼選擇做前端
  • 介紹專案
  • 為什麼要用Vue框架?他問有比較其他框架嗎?
  • 題1(說遞迴前要先判斷是否是引用型別,是的話直接return x1 == x2,個人覺得意義不大)
    //對比兩個引數是否相等,
    
    diff(11) // true
    diff(1'1') // false
    diff({name: 'cvte'}, {name:'cvte'}) // true
    diff({name: 'cvte'}, {name:'seewo'}) //false
    
    function diff(){
     
    }
複製程式碼
  • 題2(實現了功能,他說setTimeout有延遲,要根據播放器的時間來計算,坑,題目根本沒有播放器這個變數)
    // 設計一個資料結構來儲存  歌詞和對應的時間,
    // 並實現一個function run ,執行run之後,在對應的時間輸出對應的歌詞
複製程式碼
  • setTimeout執行機制(eventLoop)
  • 接下來將會學習哪方面(我說刷演算法,因為演算法這東西工作後就學不到了)
  • 瞭解WEB安全嗎(XSS、CSRF)
  • 專案中有針對WEB安全做防禦嗎?
  • 最近有面哪些公司?面到哪個階段了?有其他公司的offer嗎?
  • 畢業後最期望加入哪些企業?為什麼?
  • 對上班時間的看法
  • 說說你家庭的情況?性格,職業,對你的影響
  • 說說你未來的人生規劃
  • 你賺錢是為了什麼?
  • 說說對你最有影響力的人
  • 什麼情況下會拒絕CVTE的offer
  • 什麼情況下會離開CVTE
  • 描述一下你最近覺得比較壓抑的事情?你是如何調整自己的狀態的
  • 對上兩面給自己的表現打分,為什麼打這個分?你覺得自己哪些地方做的不夠好
  • 說說你實習的經歷。為什麼會離開實習那家公司。
  • 你期望的畢業入職薪資是多少?為什麼?
  • 你目前會關注哪些企業?
  • 你對工作地點有什麼看法?

百度-網頁搜尋部

  • 自我介紹
  • 專案都用Vue是吧,說說Vue的MVVM如何互動的?
  • 知道Vue監測變數如何實現的嗎?
  • VueRouter用哪些API實現的?改變hash引數會引起檢視的更新嗎?
  • 說說你專案中實現的Dialog元件?提供了哪些API?如何設計這些API的?
  • 用過AJAX吧?說說AJAX是幹什麼用的?如何實現AJAX?
  • 說說你瞭解的垃圾回收機制
  • 繫結事件有哪幾種方式?addEventListener有哪些引數?冒泡跟捕獲有什麼區別?
  • 來道演算法題吧,在一個陣列中求連續最大的累加和
  • 居中可以使用哪幾個屬性?不定寬度與定寬度如何居中?
  • position有哪些屬性,都是何意思?
  • 啥是閉包?用來幹嘛的?
  • CSS有了解過如何做動畫嗎?animation有哪些引數?
  • HTTP狀態碼
  • HTTP快取
  • Git常用操作?mergerebase有什麼區別?
  • 瞭解過linux嗎?
  • 看你是廣東人啊,能接受到京城工作嗎?我說,聽說你們百度深圳也有研發中心,能幫我調配到深圳嗎?他說可以。
  • 跨域
  • 資料庫有哪些引擎
  • 資料庫如何實現回滾
  • HTTP快取
  • 平時如何學習Vue底層原理的
  • 說一種你覺得牛逼的設計模式
  • 知道Promise是用來幹嘛的嗎?Promise底層如何實現的?為什麼要用setTimeout去模擬

京東

  • 為什麼選前端?
  • 介紹一個你覺得做的最好的專案
  • 在做專案遇到過什麼問題
  • 怎麼解決click 300ms的問題
  • fastclick內部實現
  • 1px border的問題?為什麼會產生?怎麼解決?還有什麼解決方案
  • touch有哪些事件?tap是原生事件嗎?
  • HTTP狀態碼
  • 304快取
  • eTag跟哪個欄位一起用?
  • 閉包的定義與作用
  • 閉包會產生什麼問題?我說記憶體洩露,他問還有嗎
  • 原生Ajax的過程
  • readyState有哪幾種值,分別代表什麼
  • es6如何發非同步請求? fetch與ajax有啥區別
  • Promise與setTimeout哪個先執行?為什麼
  • 效能優化方式
  • 跨域有哪些方式?window.name有什麼問題?
  • Get與Post有啥區別?哪個更快?
  • 不定寬高3種垂直水平居中。
  • 盒子模型
  • position取值,啥是stickty

網易遊戲互娛事業群

  • 兩個棧實現一個佇列
  • 快排思想,手寫快排
  • 陣列裡有N個偶數個相同的數,只有一個奇數個相同的數,找出這個數
  • 陣列中的項是1-100連續的數,把任意一個數變為-1,找出這個數
  • 有三個櫃子,每個抽屜都有兩個球,第一個抽屜是2個黑球;第二個抽屜是2個白球;第三個是1個白球和1個黑球。求一個抽屜拿到黑球的情況下,另一個球是白球的概率
  • 假設一對夫妻生小孩的觀念是這樣的,如果第一次生到的是男孩,則不繼續生了;如果第二次生到的是女孩,繼續生到有男孩為止。求世界男女比例
  • 什麼是原型鏈
  • 看程式碼說輸出結果,並說原因。
    var F = function () {}
    var f = new F()
    console.log(f.__proto__)
    console.log(f.__proto__.__proto__)
    console.log(f.__proto__.__proto__.__proto__)
複製程式碼
  • 說說有哪些請求方法,越多越好
  • GET與POST有啥區別
  • 介紹一個你覺得做的最好的專案
  • 為什麼離開了實習的公司?
  • 為什麼會投網易遊戲的前端
  • 實習中各人員怎麼分工的
  • 對於產品改動需求有遇到過嗎?怎麼解決這個問題?有收到成效嗎?
  • 玩過什麼遊戲?這遊戲怎麼樣的?你玩到哪個程度?充了多少錢?
  • 大學真的一點遊戲都沒玩嗎?為什麼?
  • 介紹一個你覺得最有難度的專案
  • 為什麼用Vue不用其他框架
  • 用Vue的原因
  • 說說Vue的優勢
  • 看過原始碼是吧?說說你對Vue哪種機制最熟悉?並說說其原始碼實現過程
  • 會測試崗位怎麼看,如果調劑你到測試崗位,你願意嗎?
  • 對其他開發崗位怎麼看?
  • 你期望年薪是多少?

微眾銀行

  • 除了前端方向,我們還有大資料和JAVA方向,你對哪個有意向?
  • Vue2有哪些新特性?雙向繫結如何實現?
  • 專案有遇到什麼問題?我說1px border在retina螢幕中會加粗,被打斷了
  • 設計一個微信伺服器與開發者的互動,判斷是否有許可權操作

迅雷

  • 介紹一個最近做的一個專案
  • 做專案的時候遇到過什麼問題
  • 閉包,如何防止IE下的記憶體洩露
  • undefinednull的區別。舉個用到undefinednull的例子
  • 介紹一下HTTP協議與HTTP Ruquest
  • HTTP快取
  • Last-Modified的時間如何生成的
  • GET與POST的區別
  • 我說到POST會傳送兩次資料包的時候,反問我,你這個是從哪裡看的?確定是官方說的?如果POST的資料量很少的時候呢?也會分兩次發嗎?為什麼?
  • 我說到GET引數暴露到url上不安全,而POST更安全,他反問你不會裝包嗎?都能裝到包為什麼還安全?GET與POST的區別到底在哪裡,為何這兩者要區分開。如何防止資料被抓包
  • 我說到GET的傳輸資料包的體積與POST的不同,反問我,你確定GET只能傳4K?有什麼辦法使GET能傳輸與POST一樣大小的資料包容量?
  • HTTP2有什麼新特性?多路複用中,HTTP2能相容HTTP1.1的請求嗎?比如:會請求多個域名伺服器,有些請求是HTTP1的有些請求是HTTP2的?這樣子合法嗎?
  • 效能優化
  • 陣列去重,說出雜湊表法的時間複雜度與空間複雜度。hash表查詢的過程時間複雜度是多少,為什麼?
  • 如何防止非本地域名指令碼的惡性注入?
  • 如何防範CSRF攻擊
  • MVC、MVVM的互動流程
  • typeof有哪些返回值
  • 跨域方式
  • 繼承的6種方法
  • cookie與Web Storge的區別?如何在IE下儲存4M的資料
  • 說輸出結果題1
    console.log(typeof ('a' - 1))
複製程式碼
  • 說輸出結果題2
    for (var i = 0;i < 3;i++) {
        setTimeout(function () {
            console.log(i++)
        }, 0)
        console.log(i)
    }
複製程式碼
  • 說輸出結果題3
    function bar() {
        return foo
        foo = 2
        function foo() {}
        var foo
        foo = 'string'
    }
    console.log(bar())
複製程式碼
  • restful
  • 交換排序與堆排序的時間複雜度是多少
  • 1~100000個連續的數,隨機取出兩個數。不能用特定的資料結構,不能用陣列方法找出這兩個數

WPS

  • 介紹專案
  • 介紹BFPRT演算法
  • null是什麼?與undefined的區別
  • 說出結果,null > 0,null >= 0,null == 0。並說出原因
  • 寫出匹配IP的正規表示式
  • 寫出觀察者模式,如果要刪除某個依賴呢
  • new運算子做了什麼?寫出程式碼
  • new中的this是何時生成的
  • 實現一個類
  • 實現繼承,如何處理重複生成了兩個相同的例項屬性
  • Object.create()內部做了什麼?
  • 什麼是函式?函式為什麼可以當引數傳遞
  • 寫一個開頭不能連續出現abc的正則,不區分大小寫
  • 執行緒與程式的區別
  • 磁碟讀取速度為什麼比記憶體讀取速度慢
  • tcp三次握手
  • DNS如何找IP
  • HTTP借用了TCP的哪些優點
  • HTTP的Content-Type可能取的值?設定哪個值是以json的格式去傳輸
  • AJAX實現過程

美團

  • 如何做出五角星並居中
  • 使用Math.random()的點怎樣才能等概率地落到等邊三角形中
  • 實現這樣一個功能:
    sum(2, 3) // 5
    sum(2)(3) // 5
複製程式碼
  • 0.068如何轉化成6.8%,這其中有什麼坑?要怎麼處理?
  • 說說JavaScript的資料型別
  • 如何判斷是否是Array
  • 如何判斷是NaN
  • 如何實現一個手錶,如果是實現一個計秒器呢?
  • setTimeout發生在什麼時刻,如何避免延遲?
  • 說說專案的難點以及遇到的問題
  • 說說v-model的實現原理
  • 如何實現v-model的單向繫結
  • 如何實現跨元件的通訊,比如點選一個按鈕,要使另一個元件中背景色改變
  • 如何實現跨頁面的通訊,需求同上
  • 如何實現跨域頁面的通訊,需求同上
  • 如何實現跨iframe且跨域頁面的通訊?
  • 字串反轉不能用輔助API
  • 兩個有序陣列合併成一個有序陣列
  • 兩個無序陣列合併成一個有序陣列的兩種方式,並說說這兩種方式最優的時間複雜度是多少,過程是如何求出來的?
  • http構成
  • https原理
  • 為啥要用非對稱加密
  • 客戶端是如何驗證證照的合法性的?
  • 瀏覽器如何渲染介面
  • 什麼是reflow與repaint?哪個效能消耗大
  • 如何避免reflow?
  • 看《JavaScript高階程式設計》的時候覺得哪塊最難理解?講一下
  • 講解你專案中遇到的難點?
  • 你部落格主要寫什麼內容?發個地址來看看
  • 對什麼排序熟悉?我說快排。那來道非遞迴的快排吧
  • 看你部落格寫了TCP的內容,說說TCP與UDP的區別
  • TCP如何實現擁塞控制的?一發生網路堵塞,為什麼把擁塞視窗重新設定為1。設定為1,這個傳送流量不是很小了嗎,這不是前後矛盾了嗎?
  • 智力題:有N個物品,其中有一個是很輕的,有一個天平,用最少的次數找出這個輕的物品

富途

  • 說說原型
  • 以下程式碼中FfF.prototype與它們之間是什麼關係
function F() {}
var f = new F()
複製程式碼
  • f.constuctor是什麼?f自身存在constuctor嗎?為什麼?
  • JavaScript如何實現繼承
  • 繼承之後的child.constuctor是什麼值
  • console.log(f.prototype)的結果是什麼
  • 兩個升序的陣列,判斷一個陣列中是否包含另一個陣列的所有項?還有更優的解決方案嗎?原來的時間複雜度是多少,現在的複雜度是多少?
  • 以下程式碼怎麼輸出?為什麼會這樣?如何改善?setTimeout為什麼在最後輸出?
for (var i = 0; i < 3; i++)
    setTimeout(function () {
        console.log(i)
    }, 0)
複製程式碼
  • 說說HTTP快取
  • 瀏覽器怎麼判斷是否是強快取過期,整個過程是怎麼樣的?協商快取具體整個過程?
  • 返回200狀態碼後,還會重新傳送一次請求來獲取檔案嗎?
  • Web安全
  • TCP與UDP有什麼區別?
  • HTTP與HTTPS有啥區別?HTTPS握手過程?HTTPS都是怎麼加密的?具體點哪裡對稱加密哪裡非對稱加密
  • 狀態碼301與302有啥區別?
  • 說說cookie與session
  • cookie與離線儲存的區別
  • 求第n大的數?時間複雜度多少?
  • 雅虎的N條軍規你知道嗎?
  • 什麼是跨域?怎麼解決跨域問題?
  • 為什麼要把資原始檔放在另一個伺服器中?除了伺服器壓力的問題呢?還有沒有其他?
  • 如何破解驗證碼?
  • 有一堆猴子與一堆桃子,若這些猴子每人分3個桃子,最後剩下59個桃子。若每人分5個桃子,最後一個猴子分到<5個桃子,求有多少個猴子與桃子
  • 伺服器突然很卡你會怎麼排查?如果看日誌看不出問題呢?如果看記憶體看不出問題呢
  • 怎麼設計分頁介面的引數?若以id為自增唯一索引,有什麼缺陷?那用什麼當唯一索引比較好?
  • 一個Room類裡面有Door,一個User類,只有主人才能開這個door。問這個開door的函式是放在Room類?還是放在User類?
  • C語言結構體題,補空寫程式
  • 有什麼愛好?
  • 形容下自己的性格
  • 說說你對富途的瞭解
  • 有哪些offer?拒了哪些offer?他們薪資是多少?

荔枝FM

  • 說出輸入
function fn() {
    return function () {
        return inner
        var inner = 3
        inner = 'a'
        function inner() {}
    }
}
複製程式碼
  • 寫出Function.prototype.bind的polyfill
  • 輸出z-index屬性的元素排布,層疊上下文,還有什麼屬性可以使z-index生效
  • 有四個介面/a/b/c/d。找出一個相應時間最快的介面,並返回這個時間
  • 寫個彈窗元件,有title,body,cancelText,confirmText引數。可以通過on來繫結回撥,與及通過off解綁。
    var dialog = new Dialog()
    dialog.on('show', function () {
        console.log('showing')
    })
    dialog.on('hide', function () {
        console.log('hideing')
    })
    
    // showing
    dialog.show()
    dialog.hide()
    複製程式碼
  • 兩欄佈局一邊定寬一邊自適應的多種方法
  • 介紹BFC
  • 如何解決跨域問題
  • 伺服器如何監測是否跨域
  • 我不想每次進來都重新載入這個檔案,有什麼辦法
  • Vue父子元件如何通訊,跨級元件呢,不用Vuex呢?
  • 如何與後端協作?在後端沒有做出介面的時候,怎麼套資料?線上上有介面的時候,怎麼套資料?

追一科技

  • 如何實現微信電腦端登入的功能?
  • 一個猴子,一共有100根香蕉,每次最多能拿50根,回家有50m,每走1m需要消耗1根香蕉。問最多帶多少根香蕉回家?

相關文章