面試時,問哪些問題能試出一個 Android 應用開發者真正的水平?

首先,面試官們一定要知道,每個人由於經歷不同,擅長的方向是千差萬別的,所以一定不要抓住自己擅長的某個方面去問的很深,覺得“如果連這個都不會還算毛程序員啊”。

所以我問問題的時候,往往是“兩步走”的循環:1. 問他做過什麼,如果有成品的話,我能看看更好。2. 從他做過的東西里面,找到問題進行提問。具體的問題要看情況,可以是界面或效果的實現方式、相關bug的排除、該部分原理的分析。

舉一次面試時的對話作為例子吧:我先開始:“這份簡歷和網上投過來的那份是一樣的吧?”“嗯,應該是一樣的。”“嗯好。你在之前的團隊的位置是什麼?”“中高級吧。”“具體的工作呢?”“寫框架,讓新人比較容易上手,能夠輕鬆工作。”“你說的框架具體包括什麼呢?”“一些會共用的東西,寫出來可以讓新人就算是剛來也能很好的完成工作。”“聯網是你封裝的嗎?”“是。”“你們聯網用的是什麼?”“就是……安卓自帶的……HttpClient。”“直接用的?”“嗯。”“那你們的網絡請求是怎麼做的異步呢?”“嗯……用Handler嘛,還有AsyncTask。”“能具體一點嗎?”“嗯……就是……額……”“例如什麼情況下用Handler,什麼情況下用AsyncTask,你是怎麼決定的呢?”“嗯……”“或者說,他們有什麼區別呢?谷歌為什麼要造他們兩個出來,而不是隻造一個呢?”“區別……區別……他們肯定是有區別的,不然谷歌不可能造兩個。嗯……”

(到這裡,這個問題就可以結束了。評級減一。)“這樣吧,你的簡歷上提到‘熟悉大圖片的加載’,能說一下大圖片加載有什麼需要注意的嗎?”“緩存嘛。”“緩存?”“嗯,大圖片的加載不就是ListView裡面的大圖片加載嗎?要防止內存溢出。”“ListView裡面一定是大圖?”“嗯……”(不瞭解的東西卻說自己熟悉,評級減一。繼續順著問。)“那麼ListView中圖片的緩存你是怎麼做的呢?”“三級緩存嘛。”“哪三級?”“如果內存裡面有,就用內存裡面的;如果沒有就用本地的;如果本地也沒有就從網絡上取。三級。”“網絡上的也叫緩存?”“啊。你可以把他看作緩存,也可以不看作緩存嘛。”(這個……)(最近收到的簡歷看到很多說自己熟悉三級緩存的,於是我在網上搜了一下,終於找到“三級緩存”的出處了:android中圖片的三級cache策略(內存、文件、網絡) 原來是

@singwhatiwanna

寫的,難怪這麼火。不過他在文中提到了,“其實網絡不算cache,這裡姑且也把它劃到緩存的層次結構

中”。)
“內存緩存你是怎麼實現的?”
“用的一個HashMap。”
“直接用的HashMap嗎?”
“嗯……嗯。”
“直接用HashMap的話,怎麼防止你剛才提到的內存溢出呢?”
“你可以用軟引用嘛。”(首先答案有問題,另外當聽到關鍵詞“你可以”,多數情況下這個問題也可以結束了——八成是不會,僅僅聽說過。不過出於謹慎還是繼續問了
“軟引用就能防止內存溢出嗎?”
“還有……還有谷歌出的一個叫LRUCache的。”(迴避正面回答,確認他是不會。這個問題結束。評級減一。到此就再沒必要聊下去了。
然後簡單過渡一下,就結束了面試。


所以你看,只需要簡單提問,然後接著對方的回答繼續往深了問,就什麼都問出來了。


分享到:


相關文章: