原文地址在我的博客, 轉載請注明出處,謝謝!
從大二下學期放暑假開始(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)...
- 想到再補充(/ω\)
這次實習,確實比自學效率高多了,而且最重要的是,開闊了眼界,了解了這行業前沿是個什么情況,大公司又是如何部署前端技術棧開發項目的,以及我自身的不足。我也很幸運,找到了自己感興趣的方向。