原文地址在我的部落格, 轉載請註明出處,謝謝!
從大二下學期放暑假開始(7.14)到8月初,我一直在尋找一份實習,鍛鍊一下自己,看看學的怎麼樣。這期間,我相繼面試了小米、途牛、滴滴和百度,都拿了實習offer。其中百度拿了兩次實習offer,但由於我自身一些原因,都爽約了。(在這裡給百度真誠地道個歉,我非常珍視這兩次機會,但無奈遇到了不可抗拒的原因,今後有機會還會再投的(˶‾᷄ ⁻̫ ‾᷅˵))最後選擇了在滴滴實習,很難得的經歷。實習期間一直沒空閒下來分享一下,結果拖到了現在…那麼這篇文章就來分享一下我的面試和實習心得吧
面試
有一些記不清了,畢竟時間太久了…
小米
- 說一下你的前端學習經歷
- css左右邊固定寬,中間自適應,有幾種方案
- css3動畫,transition屬性知多少
- 說說你是如何配置你專案裡的webpack
- 如何判斷變數是true or false
- 陣列去重,要求時間複雜度為O(n)
- http狀態碼,304什麼情況
- 跨域方法
- 其他想不起來了…
途牛
- typeof 都返回哪些型別 typeof null 返回什麼,為什麼?
- cookie和session有什麼區別
- 有沒有實際寫過、解決過跨域相關問題
- 使用過ES6/7哪些特性
- 說說 promise 幾個常用API和原理
- React的特性,接著問原理,接著問好在哪裡
- 堆和棧的區別
- 其他想不起來了…
滴滴
- React技術棧做專案用到了哪些東西
- React特性、virtual dom、diff 、合成事件、調和等原理
- 為啥要給列表類元件設個key?
- 讀過React原始碼嗎?
- 使用過哪些狀態管理庫,我說Redux,接著問Redux 是如何管理React 的,你又是如何使用Redux架構你的專案的
- Redux 有哪些優缺點
- 瞭解資料視覺化嗎?做過之類的東西沒有?
- 瞭解node嗎
- 其他記不起來了…總之都是圍繞React技術棧來問的,上來就問框架很顯然想讓你進來直接幹活:)
百度(地圖事業部)
- 你在滴滴實習,為啥要來百度?(blablabla…誇了百度一番)
- 你在滴滴做什麼東西?用了什麼東西(資料視覺化,還用了你們的echarts呢(/ω\))
- 那你知道echarts有哪些可以優化的地方?讀過它的原始碼嗎?
- React 特性、原理,React 突出的思想
- 你是如何使用Redux架構技術棧的
- 我看你用了Redux-saga,它比thunk、promise有啥好處?
- 你使用過哪些ES6 新特性、promise原理
- 跨域的幾種方法
- 你這個專案有沒有遇到什麼你覺得難的問題,你怎麼解決的?
- 你有啥想問我的?(一般問部門技術棧、工作氛圍)
- 其他記不起來了…
百度(校園品牌部)
- 介紹一下前端經歷
- 你平常如何用css管理頁面佈局的,我說柵格,又問柵格怎麼實現的
- css3動畫、transition、transform,canvas、svg
- sass跟less的區別?
- javascript 有哪些特性,我說了弱型別、單執行緒、事件驅動,就有了下面的
- 你怎麼理解事件驅動機制的?
- 用過事件委託嗎?怎麼用的?
- 嗯…ES6 用過哪些新特性?我提到了箭頭函式,於是就問
- 箭頭函式跟ES5匿名函式有什麼區別?我提到了this指向,然後就接著問
- 箭頭函式自動繫結this原理是什麼?
- 嗯…你這個專案怎麼配置webpack的?用過gulp嗎?webpack跟gulp有啥區別?
- React 突出的特性
- 怎麼用git建立一個遠端分支
- Linux命令知多少?
- 怎麼把一個連結串列倒序?
- 其他記不清了….
總結
總的來說,由於面試的特殊時期,面試難度會比春招實習、校招要低很多。
面試會圍繞你的簡歷來問,所以簡歷寫好並且為簡歷做好準備很重要。
面試大多問的是基礎,而且問的很細,經常圍繞一個點來深挖,還會問一些經常用到的API,所以面試一定要準備,把一些零碎的知識溫習一下,基礎很重要。專案問的比較少,但專案決定你簡歷的質量。
前端要掌握的知識面比較廣,但是有一些是構建工程所必須的,最好先培養自己比較全面的基礎技術棧,可以足夠形成構建一般工程專案的基本能力,然後再深挖。
照目前情況來看,深入理解一門框架是很有必要的,但也沒必要多。
前端面試演算法問題問的較少(大公司問的較多),但別告訴我你不知道查詢、排序、去重、遍歷二叉樹…
面試一定要保持平和心態,抱著我已經拿到BAT offer的心態,不緊不慢的交談,用眼神、肢體語言幫助嘴巴說話;擇機展示思考的過程,全程展示對這行的熱情。
祝願大家都能找到心儀的實習、工作。
實習
我在滴滴實習了一個多月就走了,原因是學校課太多,導員不讓出去,我也意識到了現在還是以學業為重…
實習期間,我參與了兩個專案,一個是一個滴滴實時計算平臺,另一個是 Druid 管理平臺。
實時計算平臺,面向滴滴內部工程師,是一個依靠滴滴海量資料完成實時計算、任務排程、自動報警監控等等,專案很大,做了一年了,業界少有吧….我所做的是將我負責的部分資料視覺化及國際化;
Druid 管理平臺,仍面向內部工程師,是一個視覺化資料庫管理平臺,前端由我和另一位實習生負責。我做的是一期核心模組的開發。
最大的體會就是
- 要對產品有極致追求,不能容忍錯誤,不能容忍繁瑣的操作,還要兼顧所有可能的操作
- 體會到了海量資料下的效能的重要性,開始關注效能優化
- 要抱著後臺什麼資料都有可能產生的考慮,來寫健壯的程式,型別檢查、空值檢測、try catch是必要的
- 做好漸進增強、功能解耦、元件分離很能體現一個人的程式設計能力和水平,最忌諱程式碼粘一塊、寫死,坑的都是自己,,,
- 除錯很重要,要有寫debugger的習慣
- 時刻準備迎接新技術,哪怕從未聽說,只要專案需要,就得立刻上手(我所在的組還是很喜歡用新技術的,只要它好用,License符合)
- 前後端分離的介面文件遵循規範能少說很多廢話
- 專案管理,敏捷開發是很好的方式
- 我所在的組開發專案的流程一般是:老大不知道從哪弄來一個需求(可能上級安排的,很多是自己想的…),然後全員開會說需求、定任務,各成員寫排期,後端定具體需求、介面,前端配合後端一同開始,每週報告任務進展…
- 對前端er來說,改需求不用那麼在意,我們最終的目的都是讓這個產品更好不是嗎?
- 實習生很少會接觸to C產品,做的大多是面向內部人員,因為出bug好商量嘛…
- 我所在的部門女工程師還是挺多的,這個的確讓我很驚訝(No Offense)…
- 想到再補充(/ω\)
這次實習,確實比自學效率高多了,而且最重要的是,開闊了眼界,瞭解了這行業前沿是個什麼情況,大公司又是如何部署前端技術棧開發專案的,以及我自身的不足。我也很幸運,找到了自己感興趣的方向。