Android面試總結2017版

MU汐_發表於2018-01-10

近期我司招聘,我去面了一些android開發的哥們,以下由近期面試總結得出的體會,以技術面試60分鐘為基準,根據我去面試和麵試別人的經驗,我把整個面試流程大概規劃為以下幾個部分:

1. 10%的時間去看自我介紹,瞭解基本資訊,離職原因,工作組成員情況

這裡就是簡歷上的基本資訊,基本上只要表達能清晰流利就可以了,噢,據小夥伴說有可能還要看一眼 是不是"老鄉",雖然我完全不理解這所謂的老鄉關係能帶來多少的安全感,離職原因的話,其實度娘一下, 這裡不需要你真正的原因,但是需要一個合理的原因,這裡說度娘不說谷歌,是因為我發現好大一部分人對 Google的剛需沒那麼大,包括裝了過濾廣告外掛的我,更有甚者,還有一部分開發人員的第二開發工具竟然 不是谷歌瀏覽器.

2. 15%的時間去驗證基本水平

  • 1.常用工具使用,Git的使用,常用第三方庫.這裡基本沒人會犯錯,基本名字肯定能說一兩個,即使不做任何面試準備.

比較離譜的是有一個哥們,問基礎的時候感覺答的不是很好,拿出專案我問那個模組他做的,好不容易找到一個簡單的頁面,問實現竟然也是吞吞吐吐,於是我就很機(狡)智(猾)地問了下: 你現在用的androidStudio(第一開發工具)是什麼版本的,他遲疑了一下,竟然說好久沒看忘記了,我心想這TM就尷尬了,連吃飯的傢伙都不瞭解,即使是真的這樣,那最近新出了一個3.0大版本,只要近半年關注了任何一個android開發相關的公眾號或者網站,必定能看到這個條資訊,看了之後還是不去關注自己使用的版本的,那這職業心性基本相當於玩王者榮耀不買裝備還想越塔強殺人家,分分鐘回血池等復活.

  • 2.基礎的Java知識點,包括集合,資料型別,三大特性,多執行緒,網路基礎tcp相關;還有android基礎的一些元件,基本的控制元件的如fragment,listView,四大元件等等,這裡雖然像我自己也壓根平常沒有刻意關注這些,就是有個基本印象,但是作為應聘的人,這些問題起碼可以看出對面試的準備和態度.

我認為不管技術如何,在應聘的時候都要重新去梳理一下基礎的知識結構,這裡都還沒有講到演算法呢,手寫最簡單的氣泡排序和二分查詢都能過濾一大片了,然而在面向瀏覽器程式設計的階段,糾結於這些對於實際的結果沒有什麼有利的影響.

  • 3.態度很重要,面試並不能完全看清楚一個人的水平,我在面對技術比我厲害的人,自己也有點心虛,但是在技術能達到要求的前提下(此處在我看來標準是吹技術不過於裝逼而且能不被我拆穿的情況下),招人在能滿足工作要求的前提下,當然是找看的順眼的啦.

3. 45%的時間去聊專案

  • 1.以及專案中常用的技術點,不要問外掛使用和第三方SDK的使用,這些看文件找部落格基本能完成,前面確認了工作經歷的情況之後,此處再問這些並不能體現真實的工作能力,關注的點,我認為第一個是看負責的模組的實現,去看對方的表達的思路,考慮技術實現的想法是否符合其專案履歷和工作經驗年限,首先是能回答出來專案的實現,然後能順便講講自己在其中經歷的難點和事後的思考最好了.

  • 2.涉及第三方庫,如網路框架,Okhttp,Retrofit,Volley,圖片處理框架Glide,Picasso,ImageLoader等,首先聊使用的場景,還是聊遇到的問題,解決的辦法.接下來問用的順手的,問下里面的實現,okhttp有自己封裝嗎,攔截器瞭解過嗎.到了圖片框架,我一般問下用在什麼地方,裡面的一些原始碼看過沒有,快取的演算法,以及橫向的使用對比等等.

  • 3.針對提到的專案點延伸出來相應的問題.可以聯想到的.

比如簡單的列表,ScrollView巢狀listView,這裡可以問出滑動事件衝突的解決,view的繪製流程到自定義控制元件的實現思路,事件分發機制的處理機制以及相關使用,談到glide載入圖片,可以聊到資料量大的處理,圖片0OOM問題的處理,執行緒池的理解和自定義相關

  • 4.問一下對一些常用的庫或者業務技術的瞭解.

比如微信支付流程這個問題,我每個人都問了,每個人都說做過,沒有一個人能完整統籌地回答出來,這個問題說大不大,說小不小,但是即使是這樣,根據自己的理解總是有人能說出大概思路的,這不需要背文件,操作過之後用心去理解一下,就能變為自己的東西了.

  • 5.模擬具體的業務場景.這個可以舉一些例子.

比如地圖業務,類似摩拜單車行駛軌跡的記錄怎麼做,聊天業務,聊天資訊為什麼能實時傳輸,聊天記錄如何保持,資料持久化方面等場景,之前有一個段子說可以拿自己目前專案中沒有解決的問題拿出去給對方解決一下.

我之前去面試就遇到過別人問鬥地主洗牌,要達成隨機洗牌然後怎麼發牌達到什麼要求的實現思路,當時沒答出來,後面想想其實這裡用集合和多執行緒去入手就可以解決,另外一家做遊戲,上來抓著多執行緒的問題虐的死去活來,如何實現使用者多個操作同時進行,併發處理等等.

  • 6.很多人秉持說多錯多的原則,我覺得這裡是除了技術問答的第二個可以拉開差距的地方,主動的總是比被動的好點.

像我擼著程式碼一頭懵逼被拉去面試,問了技術之後,沒準備好接下來問什麼,我一般就假裝去看簡歷,拿對方寫的幾道(我就這麼百度一下的題目)看看,其實問了上面的基本接下來這塊就差不多了,這時候如果對方能順著剛才的話題再串聯一下技術點我覺得會很好,不過沒遇到過,可能是我司的逼格不夠了.

  • 6.哦,還有一個現象:寫筆試題很多半個鍾寫不完8,9道基礎題,字也是真的醜.

4. 20%時間去聊理解

  • 1.一個區分技術水平到哪個程度的問題:對activity的理解.activity的生命週期基本每個人都能說出來,哪個方法怎麼用實現什麼都大概有個一二,但能不能聯絡實際的業務場景,以及有自己的思考,這就是在2-5年這個階段技術分水嶺之一,我覺得這個問題可以看做是中級到高階的分水嶺,中級是定義為能幹活,高階是會幹活.

有個哥們簡歷上.activity寫了精通,我就問他對activity的理解,,,他就說幾個生命週期..然後就沒有然後了. 這不就相當於勸妹紙多喝熱水了,這樣肯定追不到妹紙的....

額.然後我引導他,我說可以想一下工作中用到的場景..然後他想了一下說好像極光推送用過onResume方法..我沒用過極光推送..我想了一下,我說是不是這裡可以類似考慮app應用從前臺到後臺再回到前臺的生命週期執行,然後聯想到推送服務只有放在這幾個方法才能保持實現..維持服務持久之類的(此處經查詢得知,正確的理解應該是廣播接受者相關的(捂臉狀態)).

所以面試官也經常是錯的嘛,面試的基本要訣和追妹紙是一樣一樣的,不要慫,膽大心細臉皮厚.(此處我有一個大膽的想法~~)

  • 2.這裡主要考慮的就是能不能從簡單介紹+業務場景+自己的思考入手,一個人說全套,類似的問題,如對http的理解,可以自己聊專案開發中跟後臺互動的經驗,對介面和抽象類的理解,可以談到專案結構,談到MVP和元件化的思路,因為我們今天做的絕大部分業務和技術,都是有人已經踩過坑了,有的只是實現時間的長短和對搜尋關鍵字的使用了.所以能自己獨立收穫到才是正解.

"我不一定要這個,但你得懂."

  • 3.我的水平有限,只能舉例到這個地方,至於更深刻的前沿的,我大概有幾個方向,應該是大公司所考慮的,專案程式碼的複用性,混淆和熱修復的原理,視訊影音的優化,JNI的實現之類的了,

想想平時遇到公眾號推送,看下一線網際網路公司的面試題,發現一半的東西看的懷疑人生了.

5. 10%的時間想有沒有即興想問的和對方有問題的東西.大概提一下業務的內容,薪資不是自己考慮的東西,只關注技術,如果過關自然接下來有人來談業務,不過關的話那就可以回去等通知啦.

薪資不敢開12K以上還敢寫精通兩個字的都是傻x


總結

  • 1.不管去面試還是面試別人,都是一次進步的機會

  • 2.找工作是實力加運氣,但是加成比例也是要看運氣的,多積攢人品總是沒錯的

  • 3.搞技術要保持危機感,不進則退

  • 4.好好努力,希望以後自己面試或者加薪,都能理直氣壯

    以上.

相關文章