一個五年 Android 開發者百度、阿里、聚美、映客的面試心經
花絮
也許會有人感嘆某些人的運氣比較好,但是他們不曾知道對方吃過多少苦,受過多少委屈。某些時候就是需要我們用心去發現突破點,然後順勢而上,抓住機遇,那麼你將會走向另外一條大道,成就另外一個全新的自我。
先簡單說說我最近的面試經歷吧。面試的公司很多,其中有讓我心血沸騰的經歷,也有讓我感到失望到無助的經歷,我將這些體會都記錄下來,細想之後很值得,面了這麼多公司,要是最後什麼也沒有留下來,那就太浪費了。至少對於我來說有些東西在整理總結之後才能得到一個肯定的答案。希望這些能對即將換工作或者打算看看機會的你有一些幫助。文末有面試和必備的技能點總結哦。
下文真的很長,你可以把這篇文章當做看小說一樣,快速瀏覽一下,但是希望你能將文中提到的那些技能掌握。那也就不枉費我花了一兩天時間專門整理這些。我的這些經驗僅供參考,希望你能做的比我好,同時希望你在以後的面試中能輕鬆應對。
為何離職?
先從我的換工作的動機開始說吧。
公司裁員的時候老大說:『你就留下好好幹吧,以後不管公司怎麼分股票、期權,肯定少不了你。』我非常信任我的老大,跟著老大一起工作,感覺是一種享受。
但是沒想到裁員後,公司內部大動盪,主業務線從客戶端A 業務線轉移到另外的B 業務線上。我主要負責A客戶端的架構,這下可真閒下來了。B 業務線那邊的業務量還是很忙的,沒時間配合我做一些架構上的事情。於是我每天就看看資料,補充點能量。
呆了幾天後,就後悔當初沒有拿 N+1 走,有一種被老大忽悠的感覺。 因為公司接下來的操作讓我很是不爽,先是晚上叫車不能超過30,然後福利大減,瞬間沒有工作的心情了。再過了一兩週後公司宣佈新一輪融資成功,可惜只融到了 2千多萬美元(按照預期應會更高),然後接著招新人。
我特麼無語了,站在公司的角度是沒有任何問題的,可以節省開銷,也可以容納新鮮血液。但是我作為一個老員工,心寒,走的員工都拿到了 N+1,我們這些老員工什麼也沒有得到,反而福利大減,傷人啊! 現在即使我想走,什麼也得不到,一種莫名的惱火湧上心頭(只怪本人經歷尚淺,看不清一些大的趨勢,還是老鳥們聰明,拿錢走人,然後換一個新工作,好不自在啊)。
不過理智分析一些這樣確實有好處,可以給自己留很多的時間來選擇更好的公司。就如此刻的我一樣,在公司悠閒的上著班,騎驢找馬,遇到合適的,可以立刻走。其實細想一下,如果我當時拿了 N+1 走了後,可能會迫切的需要一份合適的工作,然後迅速入職。至於新公司怎麼樣,還真不敢確定。
已經動了想走的心,意味著再也不可能在這裡很安分的待下去了。
面試分級
於是我決定開始投遞簡歷(世界那麼大,我想去外面的世界看看)。這次看機會與往常不同,我決定好好準備一番,然後開始投遞簡歷,主要渠道是 “X鉤”,輔助渠道是獵頭。
這次看機會我將所有公司分為三類:
1. A類: BAT公司,非常靠譜,各項待遇都是很優厚的
2. B類:一些知名的網際網路公司(基本都在C輪以上),基本很靠譜,該有的都少不了
3. C類:就是那些正在招聘的公司,沒啥名氣,雖然錢多但是事也多。靠不靠譜真還不知道,只能碰運氣
基礎知識不可少
以前我基本都是直接去面試,總以為Android工作好幾年了,出去面試基本沒啥問題,因此帶著那份傲嬌的自信 總是碰壁,尤其遇到很多基礎性的問題,一時真不知道怎麼回答?還有一些問題之前都記得很準確,但是在面試官問的時候,就一個大寫的懵逼表情。
在我出去面試之前,我已經把 《大話資料結構》 基本看完了(想想我之前的生活,每天早上七點多起床,然後看幾頁,洗漱完就去公司)。因為有了以前的教訓,而且這次我很認真的準備了好久,打算把Java基礎鞏固下,但是手頭沒啥合適的書籍和資料。
還好民間有很多厲害的開發者,他們不以盈利為目的,只為完成某種需求,開發一款 app,然後釋出到應用市場,給需要的人。於是我就找到一個 “Java面試訓練” 的App,下載量還可以,就安裝到手機上,開啟刷題模式,應該刷了10來天吧(都是在上班,下班時間看一點,雖然時間比較零散,但是這樣記得最深刻)。
在之後的面試中,基本很少遇見一些奇葩的java基礎。
剛踏入架構師之路的經歷
這次我給自己的規劃是做一個架構師,但是我深知架構師可不是鬧著玩的,必須要有很強的一面,因此我在簡歷裡面寫的只是“架構師方向”。我在K 公司 做得是架構師方向,因此我覺得有必要朝著這個方向發力,雖然現在不是很厲害,但是堅持一兩年後,即使不是非常厲害,但是也距離非常厲害很近(這裡使用了《孫子兵法》的一句:“求其上,得其中;求其中,得其下,求其下,必敗。” )。
這個想法來源於在K 公司我第一任leader曾經跟我說過的話:『對於新東西,如果你覺得掌握了,但是不應用到專案裡面來,是沒有什麼意義的,時間長了還是會忘記的。』我很慶幸我有一個好老大(我是屬於雙領導型的,K 公司 A專案的負責人是我的leader,但是我的直接彙報物件是 K 公司的副技術總監,下文就成為老大),用他的話來說就是經常踢著我的屁股走。當我在網上了解到很多實用的新技術時,跟他隨意吐露一句話,他就能非常用心的傾聽我的想法,並鼓勵我將這些東西帶入到專案中來。從那以後我就開始看很多新技術,感覺合適的會引進到我們的專案中。從之後的證明中來看,是非常有價值的。
曾經我的情況是這樣的:當我剛進入K 公司後,打雜一個多月,就被關到了 小黑屋(嗚嗚嗚,好可怕的小黑屋,996的制度)。然後才開始正常的架構師之路,第一步就是統一開發環境,在我來公司後,我發現公司的Android同事用的開發工具種類真是繁多啊,神馬 Eclipse、IntelliJ IDEA、Android Studio、Windows、Ubuntu、Mac。剛進公司的時候我曾經用鄙夷的眼神看過那些 Eclipse 的童鞋,真是無力吐槽了。於是我給 老大說:『我們們的開發環境最好統一起來,現在各式各樣的工具,弄個東西真費勁。』於是老大二話不說,就在群裡跟大家吼,都務必切換到 Android Studio(以下簡稱 AS),由我來監督並執行。於是我拿著雞毛當令箭,給大夥把地址什麼的都找好,發到群裡去,讓他們自己下載(後期我們就搭建了 ftp伺服器將這些常用的工具都放在裡面,省的再去下載了)。
翻牆工具我使用 goagent(不怎麼穩定, 之後直接買了一年的shadowsocks),給其他人分享也太費勁了,因此讓他們自己搞定。老大自己有一個 VPS,於是給大夥共享後,環境基本就統一了。
期間有一個小插曲:
一個年齡 比我大的同事在用 Eclipse,在我推廣我的 AS 時,他說比較忙,沒時間弄。我就急了,因為我剛到公司不久,老大分配給我的任務,推行不下去,這可不行啊,沒說幾句吵起來了。最後我也知道不能太著急,但是已經吵了,關係肯定不咋樣,老大當時開會去了,我知道自己太心虛了,因此主動給老大承認錯誤,說我和那誰誰吵架了,因為他不用AS。最後在老大的勸說下,這個人就勉強切換到 AS了。
其實這個人就是我之後的新Leader,每每想到這裡我就全身發冷汗,Leader要虐你,你還能有好活路麼?還好這個Leader人比較好,人也比較大氣會處事,不怎麼跟我計較。我已經對著佛祖懺悔了N多次。
第一天面試
我用 “X鉤” 開始撿一些不怎麼有名的C 類公司投遞,很快就收到了很多的 面試邀請。
首次面試——國外輸入法
記得當時去的第一家公司是做國外做輸入法的,做的還不錯。從外面能看見一棟略微有點老的大廈,辦公環境很一般。
進去後很巧的是遇見了一個熟人,第一位面試官竟然認識我之前在X遊的一個同事,然後我們就聊開了,他也沒怎麼難為我,就問了我幾個很簡單的問題,例如:handler的原理,多執行緒。我按照記憶中的樣子說給他聽,然後就第一關就輕鬆過了。
等了一會,另外一個面試官進來了,問了一長串問題,基本就是 Android的相關的基礎,然後第二個又輕鬆過了。
等到第三關的時候,一個年齡稍微大的人進來了,很容易能看出,這個人應是該技術團隊的負責人,問了一些工作經歷後,然後問了一個最讓我印象深刻的問題是:『你瞭解過Android上的黑科技麼?比如Android 5.0 之上有一個輔助功能,如果使用者開啟後,就能像豌豆莢那樣自動安裝app,等同於擁有了root許可權,但是手機重啟後,這個就自動關閉了,有沒有辦法可以自動開啟呢?』據他了解,有很多不知名的小App 都實現了,但是很多大公司都沒用。
我想了好一會,說可能這些app 被廠商列入了白名單,因此重啟手機後還能自動開啟那個輔助功能。我實在想不出如何能實現這樣的效果。最後他告訴我,其實他們也是分析了好久,才發現,那些小App, 都是開啟了一個程式(或者是service,具體記不清了,有興趣的童鞋可以試試)來守護,因此能夠開啟。這麼一說,我也瞬間明白了。
但同時我提到這樣做會可能會導致耗電量增加啊,對方的一句話把我真雷住了。“那能費多少電。。。” ,我瞬間無語了。但是他們可能因為某些需求必須如此做,因此要實現這樣的功能,相對於電量來說應該也能接受,不至於比什麼都玩不了的強,體驗也確實提升了很多。不用使用者每次去開啟那個開關,雖然有點風險,但是相對於Android上的風險來說,確實低很多。
等第三輪面試完成後,然後HR 小妹妹帶我到一個很大的會議室,見到一個很年輕的人,聽HR說,這個人應是CEO之類的,反正職稱很高。他就問了些職業規劃,平時有什麼興趣愛好,以後有什麼打算,薪資要多少?我說到公司後可以先接觸一些業務層面的東西,然後慢慢再走架構路線,之後可以負責主要核心模組。平時就看看書,參加沙龍活動,沒事打打遊戲。以後還是要像架構師方向進發的,一個合理的期望薪資。他也簡單回答我一些問題。之後就是讓我先走,等通知。
傻傻的我還就這樣高興的走了,因為我總體感覺還是很棒的,畢竟連過4輪哈。從最後的結果中能明白,其實應該是要的薪資太高了。為什麼這麼說呢?因為一般情況下,最後一輪就是簡單看看你這個人怎麼樣,技術關肯定沒問題,否則前三關就 pass 了。可能對方覺得你要的薪資和你的實力不符合,也可能他們想再對比看看,選擇一個更合適的人選。
58到家
第一輪面試我的是一個小夥,問了一些基本的Android基礎,然後問了一下 Android的繪圖原理,我說: onMeasure, onLayout, onDraw。 然後他說每一個什麼作用? 那個onMeasuer主要做什麼的?並舉了一個例子:一個自定義的滾動View A裡面如何放另外一個滾動的View B?我說把 View B將 onMeasure 裡面的高設定成最大,這樣就能解決衝突問題。最後他簡單說了一些 onMeasure 裡面的幾個引數,我對此加深瞭解了。
第一關也就這樣過去了,等到第二關的時候看起來一個挺帥氣的男人帶著一個很顯眼的婚戒跟我說一些專案流程上的東西,因為我在K 公司這塊跟老大接觸的比較多,因此一般問題難不住我,輕鬆就過了。
等到第三關的時候,問我一些工作經歷,然後問問職業發展規劃,平時的興趣愛好,以及你覺得你和其他人有什麼優勢。我挺好奇的,為什麼最後的這些面試官都要問類似的問題,之後從一個關係還不錯的獵頭那裡瞭解到,其實他們也就是了解下以後的動向,以及看看這個人的人品。關於優勢我是這麼說的:我說到公司後可以先接觸一些業務層面的東西,然後慢慢再走架構路線,之後可以負責主要核心模組。
其實和上面的回答一樣,這基本就是所說的套路。他們可以用套路,我們為何不可呢? 嘿嘿,別學我,自己根據實際情況來。
本以為就結束了,沒想到他們說 CTO不在,可能還有複試,先讓HR大美女跟我談談。HR慢條斯理的跟我說了一些待遇什麼的,瞭解了下我的狀況,問我要多少。我基本和上一個公司說的一個樣。
之後再來複試的時候,這個大美女HR給我了一些建議,說這個CTO是阿里出來的,喜歡會說話的人,想到什麼就說什麼,別緊張。在這面的時候,我就很放鬆,該怎麼說就怎說,他也問了一些職業發展規劃,已經我的經歷,基本10來分鐘就結束。我只想說大美女 HR 真真是體貼入微,感覺很 Nice, 這輪基本也順利過了。之後這個HR直接說我被評為T5,達不到架構師的標準,但是以後可以努力,我也欣然接受了。不管怎麼樣,反正拿到offer再說,之後慢慢對比。
楚楚街
首先過來第一位面試官,看樣子應該是 Android 技術 leader,開始問了我一些基礎的面試題,比如:View 的事件分發機制,View的繪圖,ListView 的實現原理(這個應該是幾年前面試的時候經常問題,沒想到現在也能遇見)。
聊了好一會,然後他拿出他們的客戶端給我演示了一個頁面,說這個介面比較卡頓,讓我分析下原因。我看過後,提出了幾個有效的檢測卡頓的方案,他們的這個介面主要是Listview 的 item 裡面包含了一個 ViewPager,然後 viewpager 的 item 裡面有一個大view, 上面有N 多圖片 + 動畫效果,因此實現起來很麻煩,最後導致效能卡頓(不得不說產品同學,你的想象力真豐富啊,有沒有考慮過研發同學的心情)。然後,他感覺得到了共鳴,因此接下來說話就比較放鬆了,他說和我年齡差不多,感覺我還是很厲害的。
我不禁惶恐不安,我感覺還行,但是應該不是他說的很厲害,可能只是工作時間長了,該積累下來的東西大部分都有了。互留微信,方便以後的交流(事實是沒有啥交流的,只是當你面試通過後,可以有一個拉你入夥的渠道,嘿嘿,不曉得對不)。
第二個進來的面試官長得挺帥氣的,手上戴著戒指(之所以提到這個,是因為在我在我的印象中這個最亮眼,很多次在和他交流的過程中,我都比較緊張,我就盯著這塊看用來放鬆,說真的如果看著對方的眼睛,雙方可能都不會自在,當然除非你很有自信的時候是可以的)。開始簡單問了下工作經歷,然後就開始聊技術,第一個就是問我知道不知道 二分法,我當時楞了一下,猛然間反應不過來,最後專門確認問了下是不是 二分查詢。然後我說在一個陣列裡面每次查詢的時候從中間點開始對比,大於就右邊找,小於就左邊找,順帶提了一句這要在一個順序的陣列裡面。然後面試官就說,二分查詢還得每次先排一次序?我當時說是的,結果就感覺很2,可能沒理解清楚面試官表達的是什麼或者說我的表達有問題,其實我想說最開始的陣列就是一個有序陣列,但是面試官可能誤解了我的意思,以為每次查到後,都要先排一次序(只能說悲催啊)。
這個問題過了後就再問了我一個問題:『你來說說 Java 的記憶體管理。』這個問題在一兩年前上就栽過跟頭,所以當時專門看過相關文章。但是當我回答的時候,由於長時間沒怎麼看過了,記憶有點鬆動,大體的說出來了,但是不夠準確(回去後就好好補充了下,在之後的面試過程中遇到的概率還是非常大的,尤其在第二面的時候)。然後他問我要多少薪資,我當時說 給到期望就可以,然後他就問我是不是可以低一些呢?我開始說可以低一點,但是當他問低多少的時候,我心想上面兩個公司的 offer 基本感覺到手了,這個可以適當的要高點,能給就來,給不了那就算了(我事後想想才明白,這種2B 的想法絕對不能有,要時刻保持低調,把握住任何一次機會)。最後他說,我得對得起兄弟們(怎麼說呢?估計是剛回答的時候不是特別的滿意,還有感覺我要的太高了),你這個薪資我沒法跟上面談。然後可想而知,當然肯定沒有結果了。
因此奉勸各位,要時刻保持低調,謙虛謹慎,莫要裝B,否則肯定遭雷劈,我這就是一個活生生的例子。
第二輪B 類公司面試:
面試有很多,說起來可能會長篇大論,以下就總結性的說說,不再說明具體細節,只說我們之後在面試的時候應該注意的地方,以及他們對應聘者的要求。
映客 && 蘑菇街
映客直播在望京soho,很高大上的地方,t1,t2,t3分別對應從低到高的大樓。到公司後,感覺還可以,第一個面我的人是一個技術,基本就問到一些Android 的面試題,沒有任何懸念就過了,第二面的時候,感覺那個人還是比較隨和的,問了 Java 記憶體管理的東西,以及一些其他的問題,最後還都聊得挺開心,第三面的時候直接就是 HR談薪資,很容易就過了。
在望京 soho 還去過 蘑菇街,裡面的人技術比較好,我當時過去的時候已經6點了。那個面試官就跟我聊人生理想,提到一些 Android系統原理性的東西,但是感覺回答的不是很好。面試官感覺還是很不錯的,然後給我說你以後要多看看例如 handler 原理,windowManager 的東西,並且從原始碼上去分析,網路上的理論知識還是要結合實踐的,真是受教了。這部分我有點弱,雖然知道原理,但是看過原始碼的東西還是很少的,以後需要注重補充。他說他才是高階,我要應聘的這個 架構師肯定是不行的,問我是否願意做其他的,我當然表示願意了,現在要綜合提升能力,才能往更高層走。
最後的最後,他很搞笑的跟我說:『我這人真不騙人。』我還納悶啥意思,最後他說:『今天已經很晚了,第二輪的面試官不在,我明天給你向上反饋下(從之後的一個同事的口中才明白,一般說第二輪的面試官不在,基本就是說你沒戲,很委婉的一種說法而已)。』
結束後我看了一下表,我暈,一面就面試我了一個半小時,真特麼無語了。不過收穫還是很大的,知道自己的不足後,就知道需要補充哪些東西了。
樂視
去了一趟姚家園的樂視,只能說看著挺風光的,但是進去後,特麼的真虐人。
電梯分割槽,還只能在一邊的乘坐,很不趕巧的是我去的時間剛好是10點,對於他們公司來說這就是高峰期,電梯根本排不上隊,而且亂糟糟的(之前在X遊的時候,大家都是排隊的,這邊沒有,可能地方太小了,排不開吧)。電梯上不去了,看來只能跟其他人一起爬樓梯,一直爬到9層,感覺都喘不過氣了。
上去後一個很美的 HR(長腿姐)帶我找面試官,然後表示沒有會議室,原來的會議室都變成工位了,所以讓我先在一個小角落呆著(保潔阿姨的專屬位置),過了好一會面試官姍姍來遲,也是一些非常基礎性的東西,最主要的是他們提到了推送,怎麼實現,已經存活情況說了一些。
第二個面試官也是特麼來得晚,等了 N 久,閒的無聊就和保潔阿姨聊天,順帶看看他們的辦公環境,只能說真心擠得慌。第二位面試官來了後就看看我的經歷,因為第一輪的技術面都過了,因此簡單聊了下,就說說他們的發展前景,要做海外產品。聽我的興致勃勃,很開心,然後讓我等會。
他們基本都去吃飯了,留下了我在那裡乾等。然後來了一個HR 的小妹妹,跟我談薪資以及經歷,貌似對我一兩年換工作有很大意見,哥就好好給她普及了一番網際網路界的基礎知識。沒想到就在快要搞定的時候,這個小妹妹的老大過來了,然後就看見一個身材超棒,腿很長的漂亮姐姐 HR(長腿姐),坐在我的對面(小妹妹示意我這是她的老大)。瞬間不爽了,都馬上談完了,結果換人再來,真無語了。只能將剛剛的輝煌時刻再來裝 B一次,然後談薪資神馬的,給的也不是很多,只能給我薪資範圍最低的一個檔次。好吧,就接著吧,然後非要我先填寫一份背景調查表,如果沒有問題後,才給我發 offer,我看到美女拿著那份很大的 紙張,瞬間無語了。
我當時就不怎麼開心,然後長腿姐畢竟很老練,問到:『說你是不是有事?』我說是的,待會1點還有其他地方的面試,然後她說:『那你先回去吧,這個表格發你郵箱,你寫好後發給我。』然後長腿姐就送我出去,我又特麼的一路爬樓梯下去(9層啊),電梯等了 N 久都下不去。
接下來說說幾個有意思的公司
新浪
新浪位於理想國際大廈,記得幾年前去新浪面試的時候,傻傻的都沒準備就去了,結果第一關就掛了。
這次是下午去,外面還飄著毛毛細雨。去了後竟然特麼的讓我做面試題,哥已經不做面試題很多年。但是想起了之前的經歷,還是老老實實寫寫,據我估計面試的哥們應該會問上面的東西。還好這次做了萬全的準備,刷了 N 多面試題,補充了基礎的資料結構理論知識。寫起來如行雲流水,嗖嗖嗖的沒幾分鐘就完了。
第一個面試的哥們看看卷子,沒啥意見,然後問最後一道糾錯程式設計題有沒有什麼問題,我雖然指出了幾個錯誤,但是感覺他還不是特別滿意。因此我仔細看了下,原來是一個靜態變數引用了 Activity 的上下文,然後指出,他再問了一些偏底層的東西以及效能優化的地方,輕輕鬆鬆就過了。
等到第二面的時候,這個人一看就是技術大牛,問了很多 Java 層面的東西,多型,抽象類,多執行緒,記憶體管理等等。我感覺回答的不是太好,多型那有點問題,其他的應該還可以。
然後就進入了第三面,第三面的面試官應該是部門負責人,問了工作經歷上的事情以及興趣愛好,之後的發展方向,想做什麼層面的。最後很不幸的是在等待第四面的時候,最開始給我題的美眉告訴我時間很晚了,讓我先回去,之後等訊息。
至少這次來比第一次高階了很多,不至於第一輪就被刷下去。最後分析了下原因,還是薪資要的太高了,尤其是這類公司。
滴滴
滴滴位於西二旗,應該有兩個辦公地點,其實我一直很想去滴滴,福利待遇很不錯。一年前去過一次,很可惜在第一輪的時候,因為在某些適配方面回答的不是太好,因此失去了機會。
這次已經準備很多了,進來後還是在去年的位置上坐下等面試官。說實話感覺滴滴成長的很快,辦公環境都變的更漂亮了,哈哈哈。
這個面試官一看就是一個技術宅,開始對我各種炮轟。面試題一個接一個的,在我連續回答十來個題後,看見他還在問,記得在提及到 Volatile 的作用的時候,我就開始不爽了,這個東西記得之前在原始碼裡面見過,但是具體的一時說不上來,看著他那樣子,埋頭在紙上給我出題,我就不怎麼配合了。面試了那麼多家,就你問了 N 多問題,還有完沒完了(其實這也算是抗壓的一種面試方式)?我直接說不知道,然後他再問了幾個基礎性的東西,我想都不想直接說不知道,他貌似已經看出來我已經很不爽了,然後說,那你說說你專案中有沒有比較 NB 或者比較有亮點的地方。我的回答直接是:沒有。然後他也就不怎麼問了,說那先這樣。我說:好,就這樣,我先走了。 然後瀟灑的離開滴滴。
現在想想真特麼的很2B,應該低調低調再低調。也可能是那天下午太累了,上午面試了兩家,而且已經拿到兩家的 offer 了,還都不錯,在這特麼憋屈,才表現的如此差勁。其實對於問題,知道的話就好好說,不知道的話,可以說說思路和想法,然後說說以後會怎麼做,利用迂迴包抄策略去應答,準沒錯。至少給面試官知道你還是可以動腦子的人。
在此我真心後悔當時的衝動,向滴滴那位面試官表示歉意。其實不用那樣的,我們只需在面試的時候盡力表現自我就可以,以後切莫帶著情緒去看待或者回答問題。
對於人生中的很多問題也是這樣的,這次栽倒坑裡去了(用我老大的話來說,你不在這裡踩坑,總有一天也會在另外一個地方踩到,到時候的損失就不可估計,趁著年輕多多歷練自己),總結之後才能更近一步。
百度外賣
百度外賣現在已經不屬於百度了,而是單獨分出來。
我是被同事推薦過去面試的,去了以後,上了一個很長的臺階(感覺很莊重的樣子),需要刷卡才能進去。等了好長時間,面試官把我領到樓下的公共辦公桌,就是那種中間空地,周圍都是樓層,能看見其他人在樓層間走動。一個年齡見長的面試官,開始感覺挺隨和的,然後說跟我聊聊 Android 基礎。
第一個問就是:『我們們先來談談 Android 的四大元件。』我徹底懵逼了,尼瑪,跟我談四大元件,有意思麼? 沒想到一直到最後都跟我談這些,一個接一個的問。說到廣播那塊,關於一個 app 被殺掉程式後,是否還能收到廣播的問題糾結了好久。
然後讓我畫我之前設計的架構圖,我就隨便畫了畫,但是沒想到這個看起來很好的面試官讓我大跌眼鏡,他用鄙夷的笑容告訴我:『你這也太初級了。』我當時心裡有幾萬只草泥馬在崩騰,你都30+了,就不知道鼓勵新人啊,我都說過我剛做架構的時間不長,而且鄙視我,有本事你也弄一個架構給我看看啊,一點不尊重我們年輕一輩的勞動成果。也許就怪我當時我真就按照他說的草草畫幾筆吧,沒怎麼認真對待。我去其他公司面試的時候,雖然這個圖不怎麼樣,但是至少能解決 某些領域的問題,其他面試官都很謙虛。這個百度外賣的面試官,真不是我喜歡的領導,如果以後真讓他來帶我,那就真完蛋了,很多時候我們都是因為某些人扼殺了我們最初美好的萌芽,而從此失去了創新的意識。
很慶幸的是我在K 公司的時候,老大一直鼓勵我創新,遇到想做的就去做,所以一路下來,雖然很累,但是乾的很開心。
所以每當有人問當初為什麼選擇K 公司的時候,我都會自豪的說:『我的老大很不錯,我在那裡很很舒服,很開心』。記得在我離開的時候老大給我最後勸告就是:『你要時刻反思自己此刻是不是已經被別人洗腦了。』
第三輪:
1.百度
百度位於海淀區上地十街附近,有很多大廈。 我去的是一個做國外工具的部門,去了後,被百度的環境和氛圍震驚到了,在一個很大的技術園區,有網易,百度,騰訊公司,對面還有一個大樓正在修建,估計會是另外一個網際網路公司的場地。
進入百度的大樓後,兩個入口都設有刷卡機。在空閒區等了好一會,然後一個人帶我進入大廈。在進去之前,到前臺那塊面試官輸入自己的郵箱賬號,然後讓我填寫其他登記資訊,我印象最深的是顯示器上邊貼著一個紙條,說:請離開的時候在此登記,否則會進入百度的黑名單(意思就這樣,具體記不清了)。當時震驚了半天,沒想到竟然這個嚴格。和麵試官進入大樓裡面後,只記得的印象是:很整潔,高大。出樓梯後,腳踩著厚厚的地毯,稍微走快點,都感覺很鬆弛,腳下如踩棉花一樣。
為什麼有地毯,而不是地板磚————到了夏天很多漂亮的長腿美女穿著高跟鞋踩在地板磚上是一個怎麼樣的體驗呢?噔噔噔……
我在等候區等到第一個面試官,然後我們簡單聊了下 Android技術,其中有兩點有必要提下:
- 其中一點是:說說 View 的事件分發機制。然後我就說了好多,從 WindowManager->window->Decorview->子 view。最後我說當所有的 view 都不處理事件,事件會最後會傳遞到 Activity 的 onTouchEvent 上。然後面試官立刻說:『哈?你這是顛覆我的三觀啊?』 然後我意識到可能有問題,但是記得 《Android 藝術開發探索》上確實寫過到 Activity,但是不是到 onTouchEvent還真沒底。面試官很自信的樣子,讓我顫抖了。但是隨著我的堅信,面試官說:『不行,我不能冤枉你是不!』立刻在手邊的 MBP 上看了一下,自言自語感嘆道:『還真有啊!』 我頓時無語了。
- 另外一點是:問我 Service 上能不能彈出對話方塊。對於這個問題,我印象最深刻了,記得一年前的時候,在另外一個公司就因為這個問題讓我尷尬萬分,回去後專門對這塊進行補充。我的回答是可以的,但是面試官面帶差異的表情告訴我這是不行的,Dialog 必須要依附於 Window 才能顯示出來。然後我的解釋會讓面試官鬱悶一會:我說這個是可以彈出的,我之前也專門試過,不過他彈出是有條件的。 條件是:
- 必須在 Manifest 裡面註冊系統許可權
- 在顯示 dialog 的時候必須要加一個 flag. 我的理由是:系統對話方塊可以在低電量的時候彈出對話方塊,我們同樣也可以採用該方式來實現。
面試官語塞,然後給我說 Dialog 是必須要依附在 Window 上,Toast 其實也是一個 Window。我聽著這些話,就想起以前看過的一篇文章上也確實是這麼說的。估計該面試官回去要好好補充下一些知識了哦。 然後該面試官讓我不能用 Arraylist,用陣列 寫一個佇列。這塊剛好我在之前專案中特意用了一下,寫的時候,主要有三個方法: put(), get(),peek(). 然後考慮下佇列的特性,一端進入,一端出去。我當時遇到了盲點,沒怎麼寫完,最後給面試官說了下思路,大體是對的。但是關於選擇位置那塊沒怎麼想好。不過這不阻礙我進入第二輪。
第二輪面試的時候,面試官帶了很多紙張,我瞬間壓力山大,知道不太妙。不出所料,這個面試官,從動畫實現原理,到 handler 實現原理,一步步深入各種原理,當我感覺回答的不錯的時候,然後他就順著我的問題繼續深入。我只能說我盡力了,有些東西,平時開發的時候真心不注意,但是就因為沒有留意,所以就沒法繼續回答他的問題。
面試官把我帶出大廈的那一刻,我心情很不好,很可惜沒進入百度,之後應該需要準備很多東西。我要說,我還會再來的,哈哈哈! 最後也歸還身上的一個牌子到前臺後,省的被拉入到黑名單(好嚇人的樣子)。
以後有時間多看看原理性的東西,最好整理一個自己的部落格,寫上自己的一些看法和感悟,這樣記得最深刻。即使幾年後也不會遺忘,如果只是看看別人總結的東西,也許有一天你就會模糊。
關於部落格可以使用 Hexo, 我的部落格也是如此,可以整理一些自己的東西與心得。
2.阿里
這次去的是一個阿里的高德部門,在望京 Soho 附近的 首開廣場。去了以後首先找廁所,你們知道麼?廁所竟然從大廈樓層的的一個角轉了一大半圈才找到,回來後進入找不到前臺了…… 瞬間無語了。問了好一個美女才回到前臺,然後接待我的 HR美女貌似等得不太耐煩了(寶寶心裡苦,廁所好遠,都找不到回來的路了)。在一個小型會議室等待面試官,看了下佈置氛圍和環境,感覺太棒了,很多東西都體貼入微。
回顧上次阿里的悲痛遭遇
其實這是我第二次來這邊面試了,上一次過來的時候,是剛過完年。提到這裡我就苦不堪言,為何如此說呢?當時是2016年2月15日,因為我參加好朋友的婚禮(不得不說,我這個年紀的人都開始結婚了,這次回去有4個好朋友都結婚,可想而知,一場完了以後還有另一場,雖然累,但是值得)推遲了好幾天才回北京,在參加同學婚禮的時候接收到阿里高德部門的面試邀請。回到北京的當天是12點多,然後回家,一個關係非常好的朋友說今天她們要宴請公司的人吃飯,因為她們結婚了,讓我幫忙弄個 MTV。我想這是朋友的終身大事,因此必須要好好幹。
我下午4點是阿里高德的面試,因此時間很緊促。我憑藉我大學的技能在兩個小時內搞定這個 MTV,總體來說還不錯,就迅速發給朋友,弄完已經3點了,然後叫車立刻去首開廣場。
高德的面試是4點鐘,匆匆趕到後,就等待面試官。面試很不理想,因為什麼都沒有準備,而且心力憔悴。面試官問的是一些基礎的 Java 問題,很可惜我沒怎麼回答好。於是就深深的浪費了一次機會,之後和朋友提起此事,無比後悔,當時其實是可以和 HR 電話再約一個時間的。這次對我的打擊很大很大,因為這是我這麼多年第一次面試 BAT 的職位,一上來就受挫,很不是滋味。我在這裡失利後我就各種準備資料,增強自己的能力,面試前必須要刷題,雖然簡單,但是不失為一種方法,雖然不一定有用,但是會加深印象,尤其是去 BAT 這些公司,一定要準備好,否則就別浪費機會,這就是我的教訓和經驗。為了6月份的這次面試策劃了很久。以前對什麼可能都不是很上心,但是這個事件深深的刺激我了。
第一個面試官來了後問了一些基本問題,很順利就進入到第二輪面試。
第二輪也基本是技術面試,問了一些 Android 基礎和 Java 基礎以及記憶體管理。
第三輪的面試官應是部門負責人,看起來很好說話的,問了一些經歷和基本情況後,問我薪資要多少以及之後的發展方向。我說要合適的薪資,之後希望在架構方面發展,但是也可以從業務開始。貌似這裡回答的不怎麼好。然後讓我留了他的聯絡方式,我知道很有戲哦。
因為我在進入K 公司的時候也是這樣的,老大感覺我很不錯,於是留了微信後,我基本就順利入職。回去後的一兩天還是很焦慮的,但是我知道大公司都是有流程的,因此我告訴自己不要焦急。過了一兩天後他主動加我微信,然後問了些基本情況後,就說他要做最後的總結,讓我等著,最遲一週後就有訊息。我感覺希望超大的,開心了好久,本以為就可以這樣過去。
但是一週時間過去了,沒人通知我,我開始焦急了,於是我開始主動和他說話,反思自己是否有什麼地方做的不好。經過很多面試後我總結出了結論就是要薪資太高了,於是我在微信裡面給他說,只要能過去,薪資低點也是可以的。但是問了他好幾次,他都沒有回話,看著微信訊息記錄,都是我發給他,而他沒有回覆,已經過去好多天了,我知道沒希望了,他說不管怎麼樣都會給我回復的,但是我真絕望了。
就像相親一樣,遇到一個不錯的美女,開始都一起聊得很不錯,她開始加你好友,並且和你說看好你,不管能不能做女朋友,她之後一定會回覆,但是苦苦等待一段時間後,不管你怎麼給她說話,但是她就是不理你。可能她真的忙,但是也不可能連續一兩天都這麼忙吧。於是你知道沒結果,因為無言等同於沒有希望。為了避免一些幻想的存在,你會將她刪除掉,不想留下任何關於他的資訊。同樣我也是把這個阿里高德的老大的聯絡方式刪掉,微信也刪掉。
在我失去希望的幾天後,看見他要主動加我微信,但是我想可能只是安慰的話語,最多告訴我,我不適合他們的職位,因此我為了避免尷尬,直接刪除那個加我好友的請求(如果說真的合適的話,應該會很重視你的,不可能好幾天都回復,怎麼有一種備胎的感覺,嗚嗚嗚,我不想被髮好人卡,寧願做高傲的兔子,也不想做紙老虎,雖然儘管只是紙老虎,但是也會擁有屬於它的一片森林)。可能我的做法太極端了,以後希望大家不要這樣想,或許多了一條人脈。
於是阿里的這次機會就失去了。總結後的結論就是:去大公司要的薪資不要太高,否則對方只能感謝你的到來,因為比你優秀的人太多了。
聚美優品
聚美優品 位於東四十條地鐵站附近。路過一個竹亭子後,進入大廈裡面需要用身份證在前臺那塊登記後給我一個紙條,上面寫著我的身份證資訊,然後在門禁卡附近刷二維碼進入(真擔心個人資訊洩露哦,當然一般情況下沒人會關注你是誰的,千萬別幹壞事哦,會被查出來的,哈哈哈)。
推薦我去聚美優品的同事接我上去後,帶我到前臺填寫基本資訊。我只寫了最基本的資訊,然後她說:『你就寫這麼點啊。』我說其實這些資訊夠用了,寫那麼不僅多沒用,還會暴露你的個人資訊。面試成功後,如果有需要可以寫詳細些,但是一般去面試最好別寫身份證資訊。工作經歷基本也只是最近兩個,之前的就不用寫了,簡歷中都會有的。記得剛工作那會,傻傻的全寫了,真耽誤了不少時間。
過了一會,她把我交給 漂亮的HR 溫柔姐,然後就先忙去了。溫柔姐告訴我一般情況下有兩輪基本就過了,先讓架構師老大直接面我,讓我先等候。
過了一會溫柔姐不好意思的跟我說架構老大先讓一個技術面我,問我是否有意見,我當然沒意見了,這是很標準的面試流程(如果你有意見,建議還是別說太多的話,基本都這樣的,要淡定)。
一面技術給我一種很成熟的感覺,開始問了我一些基礎技術問題,外加 Java 記憶體管理知識。後給我出了一道演算法題,說有一個陣列最多儲存6個數,如果有普通使用者的話,儲存四個 vip的客戶,另外兩個是普通使用者(留出一定的空間給普通使用者),讓考慮全面點(一般都是結合實際場景,讓你寫出一個演算法,要具備的能力就是抽象,處理問題的思路與細節,還有最基本的編碼功底)。
然後我就考慮各種情況,第一種是非空情況,然後下面就是幾個大的 if else, 至少四個條件,基本涵蓋了全部情況,然後每個條件裡面寫上對應的儲存資料的過程。由於我的四個大條件都把距離佔的差不多了,在寫裡面細節的時候,用中文描述。過了一會他回來後,看了下說:『你這個還有中文啊!』 我尷尬的笑著說:『我先寫條件的,最後發現沒有空位了,只能用文字代替了,你看我正在另外一個紙上寫全部的完整演算法。』指了指紙上剛寫一小半的程式碼。他也會心一笑,並指出演算法上應該改進的地方,基本 ok 啦。
然後等第二輪的面試,看起來更成熟,但是說話有一種很親近的感覺。問了基本情況,然後拿出他們的 app 讓我看看首頁的實現效果,說說怎麼實現的。對於這種情況,基本就是考察你的抽象能力,以及分析問題的能力。我先說出使用 ListView 的 header,footview,然後使用 ListView 的 type 來實現。然後簡單說了一些效能優化的東西,該面試官提出我的做法可能會存在效能瓶頸。
其實他說出這塊是在指導我說這塊會有問題,我當然明白他的意思,於是說這塊採用 RecyclerView + Fresco 來實現,可以有效的改善問題(其實提到這些,就說明你看過很多新技術了,有時間最好還是要自己練練這些東西,畢竟孰能生巧)。
他也沒深究,基本就感覺不錯,開始談了談他們的目前狀況,以及即將遇到的問題。他在隻言片語中都把我當做內部人看,我也心裡感覺很舒服。最後告訴我如果我願意,他就向上報備了,意思是可以繼續下一輪。當時他問到我的薪資的時候,因為之前已經說了 N 多次,太高了進不去, 太少了對自己很虧,於是這次我並沒有說,只是笑笑。而對方說:『那就按照年薪算吧,你打算要多少呢?』我當時什麼也沒有多想,然後就說:『我希望在我現有的薪資基礎上,能上漲15% – 20%。』他經過在手機上一陣比劃後,告訴我可以達到我的預期效果,整個過程感覺很愉悅。
因為面過了一些,並有offer,但是還是想多看看,結果把自己搞的疲憊不堪。最後的最後,溫柔姐給我打電話說面試通過。
最終結果
最終我辭職後在家休息幾天,沒事的時候去咖啡館看看書,上上網,好好過幾天輕鬆的日子,然後再說定去哪裡工作。
總結:面試和必備的技能
這裡只簡單列舉一些東西,可能不是特別全,但是卻特別適用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根據公司的規模以及面試官的心情而定(哈哈哈 ,你們就自求多福吧)。建議大家還是要將下面的東西全部掌握,沒事寫寫程式碼,練練手,在專案中能用到的地方一定要用,有可能會遇到很多坑,一定要自己想辦法填坑,之後回憶起這段經歷,肯定可以敢理直氣壯的跟別人討論。如果你說的頭頭是道,那麼對方會先輸一層,然後在心裡對你佩服。
一般情況下第一輪都是基礎面試,需要紮實的基礎
- 最常用的Android 基礎知識
- Java 基礎知識
- 瞭解一些 常用東西的原理,例如:handler, tHRead 等
- 專案中的技術點
第二輪的時候需要了解更深層次的東西
- Android 事件分發機制原理
- Android 繪圖機制原理
- WindowManager 的相關知識
- 程式間傳輸方式
- Java 記憶體管理機制
- 一些常用的 list,map 原理,以及子類之間的差別
能進入第三輪基本沒什麼問題,但是要注意以下問題
- 該輪一般是 老大或者部門負責人,問的問題一般都看 深度與廣度
- 當問及薪水的時候,要說一個合適的,小公司隨意,大公司一定要慎重,當心裡沒底的時候,可以告訴對方,讓對方給一個合理的薪資。一般都是在原工資基礎之上增長,聽獵頭說一般漲幅都在15%-30%,超 NB 的可以要30%及以上,如果感覺自己還不錯的,挺厲害的,建議最高20%,一般人就定在15% 左右最靠譜。公司內部一般有一套機制,根據公司情況而定。
- 我們的面試原則就是拿到合理薪資,得到 offer
- 個人發展情況,這個問題很難回答,如果和公司方向不符合,極有可能和公司無緣。建議多試探性的問問公司缺少什麼,你能否給予公司對應的東西。當然對於有自我追求的人,那可以放心大膽的提。我的方向就是架構師,哈哈哈,挺極端的,別學我哦。我感覺選擇都是雙向的,因此我知道自己需要的是什麼。
- 你最擅長什麼UI 還是其他什麼?這個問題更不好回答。你要說你擅長 UI,是不是意味著你其他能力就不行?雖然我不知道面試官的用意,但是我能感覺到,這個問題不是那麼好回答,我會回答說自己都行,來什麼業務接什麼需求。可能回答不太好,總之和公司的職位吻合就行,這樣總不至於出錯吧。
相關文章
- Android 面試題,百度,小米,阿里面試題Android面試題阿里
- 《面試心經》---Redis基礎面試Redis
- 《面試心經》---MySQL基礎面試MySql
- 如何面試一個前端開發者?面試前端
- iOS面試·一個iOS程式設計師的BAT面試全記錄(內含百度+網易+阿里面試真題)iOS面試程式設計師BAT阿里
- 聚聞 ~ 一個聚合資料新聞客戶端客戶端
- 【BAT(百度,阿里,騰迅)面試題】BAT阿里面試題
- 分享一位同學的阿里、百度前端面試經驗阿里前端面試
- 面試時,問哪些問題能試出一個Android應用開發者真正的水平?面試Android
- 上乾貨!大廠面試走心經驗分享!面試
- 一個 2 年 Android 開發者的 18 條忠告Android
- 一個iOS開發者學習Android之路iOSAndroid
- 一次阿里的面試阿里面試
- 一個簡單而美觀的跨平臺播客應用程式
- 最全技術面試180題:阿里11面試+網易+百度+美團!面試阿里
- 阿里面試題(一)阿里面試題
- [面試]阿里一面面試阿里
- 一年半經驗,百度、有贊、阿里面試總結阿里面試
- 180道Java技術面試題:阿里11面試+網易+百度+美團!Java面試題阿里
- 想入職阿里的Java開發者必看,阿里巴巴面試官實戰經驗分享!阿里Java面試
- 聊聊阿里面試的三個層次!阿里面試
- 每個前端開發者必會的 20 個 JavaScript 面試題前端JavaScript面試題
- 最全的阿里面試經驗(一)阿里面試
- 1024 | 碼客聚會,雲上躍遷,探秘華為雲和他的開發者朋友們的故事
- 一年半經驗,百度、有贊、阿里前端面試總結阿里前端面試
- Android開發者的Flutter入門(一)AndroidFlutter
- Android面試(一)Android面試
- 聚類分析-案例:客戶特徵的聚類與探索性分析聚類特徵
- 中國上海,極客生涯: 一個開發者的 2018, 2019
- 一個C#開發者用Java搭建Android框架的心路歷程C#JavaAndroid框架
- 決定開發者面試成敗的 3 個問題面試
- 阿里面試官最喜歡問的21個HashMap面試題阿里HashMap面試題
- 超過騰訊一個百度 阿里巴巴市值登頂亞洲第一阿里
- hibernate物件對映的一個問題。物件
- 一次失敗的阿里面試經歷——送給想去阿里面試的人阿里面試
- 15個必知的Android開發者選項Android
- android阿里面試java基礎錦集Android阿里面試Java
- 2017百度AI開發者大會 一場5000名開發者的分享盛宴AI