背景
這學期想找一份暑假實習,3.12走內推投了阿里,現在三面已經過去一週多,趁著假期記錄一下。
一面(3.16)
可能是因為投的比較早,才投完簡歷過了三天電話就來了,約了第二天上午的面試。一面總的來說應該是簡歷初探+基礎。
面試官聽聲音很年輕,首先讓我做個自我介紹,然後根據簡歷上寫的技能,專案以及比賽問了些問題(感覺應該是在核實簡歷中的東西是否真實吧),比如我提到在實習中使用過 docker,他讓我簡單解釋下 docker 的作用還有怎麼在專案中使用的。
說實話前面這一段我很慌,因為根本沒問多少前端方面的問題,而且也是第一次面大廠沒有經驗,甚至還問了我對於前端領域的看法這種巨集觀問題…我心裡一直在想怎麼和我在網上看到的別人的面試畫風不一樣。
不過在把簡歷上的東西基本問了一遍之後面試官說:下面我們來問一點技術方面的問題(哦原來我的面試才剛剛開始…)以下按照我的記憶記錄一些問過的問題
說一下CSS盒模型
標準盒模型和IE怪異盒模型,然後提到了設定 box-sizing
可以轉換及一些常見應用場景(這題過)
怎樣讓一個元素水平垂直居中
(老生常談問題…我分行內元素和塊級元素分別舉出了幾種方法,這題也過)
知道什麼是同源策略嗎
知道,同協議同主機同埠,是一個安全策略
那怎麼解決跨域問題
CORS 和 JSONP,或者後端設定代理
知道 JSONP 原理嗎
HTML 頁面中再通過相應的標籤從不同域名下載入靜態資源,而被瀏覽器允許,基於此原理,可以通過動態建立script,再請求一個帶參網址實現跨域通訊
怎麼檢測瀏覽器中的記憶體洩漏
F12 開啟開發者工具看一下記憶體使用情況?…(我有點沒懂這道題的意思)
面試官又補充了一下:比如如果要讓你給 chrome 寫一個外掛檢測記憶體洩漏說一下你的思路
(這題我當時比較懵,忘了瞎答了些什麼了,後來網上查了下好像可以用計數器的方法)
重繪和重排的區別
(過……)
知道瀏覽器事件機制嗎
當然…捕獲階段,目標階段,冒泡階段(順便還提到了一下IE8以下不支援 addEventListener
)
React 在哪個階段發起
XhrHttpRequest
componentWillMount
知道為什麼要在這個階段發起嗎
我當時思考了一下答的是保證資料的載入並正常渲染……
React 中的虛擬 DOM 為什麼更快
直接操作 DOM 的效能消耗很大,所以現在的前端框架一個基本策略就是採用虛擬 DOM,React 會先生成一棵虛擬節點樹,然後通過 diff 演算法進行同級之間的比較,最後只重新渲染髮生修改過的節點部分,然後 balabala 開始講演算法原理
最後我們來說一下那道經典題 從輸入一個URL到頁面載入完成發生了什麼
(這道題的答案我已經倒背如流…)後來還吐槽了一下上學期計網期末考試也有這道題,面試官說是,這道題能延伸出很多方面的知識點。
然後面試官又問了一句,你覺得你和別人相比最大的優勢是什麼…
(我當時在想是不是面試官覺得我太菜了想最後再問點什麼看能不能讓他轉意,然後我非常混亂的羅列了面試中沒有問到的我的其他技術棧……後來才知道原來這個一般答的是性格上的優勢)
然後面試官扔了個線上程式設計的地址給我做,5道題,前三道我感覺熟悉 JS 基本操作的都能過,後兩道屬於 leetcode easy 級別的簡單演算法題。
中途遇到一個小插曲,我做到一半網斷了,再點那個網址 token 無效,然而我題還有一道沒提交,也聯絡不上面試官,心裡覺得一面是不是掛了…沒想到過了一個小時面試官又給我打電話過來,我說剛才網路不好斷掉了(這學期的路由器經常斷),面試官說沒事讓我給他講每道題的思路,我嗶嗶嗶講了一會兒他全程一直嗯嗯,他聽完之後居然直接給我說一面過了。
小結:基礎部分是真的很基礎…感覺還是運氣不錯問的剛好都是我會的。
二面(3.23)
二面基本問的是專案和平時情況,沒怎麼問基礎問題,而且全程氣氛很輕鬆,我懷疑是一面的面試官給我的評價是基礎不錯二面就沒問了…大概記錄一些,第一個問題還是自我介紹。
我看見你簡歷上寫在微軟學生俱樂部擔任過主席,能給我說一下你們這個俱樂部是幹什麼的嗎
先引用了一下官方解釋“微軟和高校的學術合作聯合專案”,然後說了一下我們平時有技術培訓,舉辦校內活動,主要還是以技術交流為主= =
那你是怎麼當上主席的呢
我懵逼,我很想說是上一屆內定,但是突然反應過來這個問題應該是在變相的問你相對於別人的優勢。吸取了一面的教訓我就開始從技術能力和認真負責兩個方面分(chui)析(bi)我為什麼能當上主席
我看你還參加過資訊保安競賽拿過獎,能說一下當時是做的什麼嗎
我說這個不是作品賽,是 CTF 奪旗賽,然後說了一些信安比賽相關的東西
你知道前端方面有哪些安全問題嗎
說了 XSS 和 CSRF
你做的這個微博詞雲生成是什麼
通過使用者微博ID進行爬取並根據詞頻生成一張圖片,這個前端沒什麼技術難點,主要是後端,專案就在 GitHub 上
你剛才說到爬取微博,那你說一下寫一個爬蟲的基本思路
(分析頁面結構,構造URL,發起請求,獲取頁面,,balabala講了一堆)
你在爬取的時候有遇到什麼困難嗎
我說有反爬機制,然後說了一些常見的解決方法
你平常經常寫爬蟲嗎
有資料需求的時候就寫(然後舉例說了下我之前在一個開源專案 RSSHub 中貢獻了一點程式碼,就是給學校教務網做了個 RSS 源,實際上也是一個爬蟲)
我看到你之前也有實習,當時具體是做什麼
我說是大二的時候,主要是寫小程式,但是由於開發組只有4個人所以實際上從前端到後臺到測試全部都有寫…(然後大概介紹了下里面用到的技術棧)
你們怎麼進行多人合作的(因為我提到了 gitflow 工作流
我大概描述了下不同的 branch 有什麼用還有怎麼維護,什麼時候該切出一個 feature 或者 bug 分支,什麼時候合併,以及CI CD自動構建等等……
未來的學習規劃
前端變化很快,所以我想一方面從 CS 基礎上加強,另一方面框架,工具這些,就跟著社群走,多看看最近有什麼新工具,近期的安排是研究 React 的原始碼(由於V16有一些變化我也不是很清楚底層原理所以只敢說“近期安排”,主要是怕他問)
你還有什麼技能是簡歷上沒寫出來的嗎
我說我還學過機器學習…在 coursera 上修過吳恩達的課程當時還寫了部落格記錄= =然後還做過一點 Android 開發,不過不是用的 java 是用的 Google 最近一開源框架 flutter,寒假自學的,還在 Google play 上釋出了一個 App…(說實話當時對這個問題有點懵逼,但是感覺必須說出點什麼技能連機器學習都搬出來了…不過就算他問機器學習方面的基礎東西我也還是比較有信心的,上學期期末考試前我可是通宵刷了西瓜書的前 60% 內容…
那你知道現在的 AI 自動生成前端程式碼嗎,你對這個怎麼看
(這題我會?)
你有什麼問題要問我的嗎
我想知道現在的前端崗一個厲害的本科生需要做到什麼程度,企業比較看重什麼?
最後面試官評價:其他方面還不錯,就是表達能力有點問題…過~
小結:二面面試官非常友善!全程感覺像聊天一樣,後面還給我說 STAR 原則…可能我的表達能力真的還有待加強。