做了一年的android應用開發,準備換個工作環境,結果在面試中卻成了一個典型的面霸,兩周的十個工作日里,竟然筆試加面試達到了15次。不過,在這些面試中學到了不少東西!下面把我的android面試經歷給大家分享一下,免得大家以后走彎路。
同一家公司可能面試了多次,同一家公司我就放在一起了。筆試一般都是java基礎和C/c++基礎。
Java知識點包括:接口與抽象的使用及區別,多線程,socket基礎,集合類,也有個別公司考察定義,很無語。
C/C++知識點包括:指針的移動,排序算法,鏈表,有時還會有二叉樹的遍歷或圖的遍歷。
這里具體說一下android面試題目:
南京WSCX:
1、
Activity的生命周期,兩個Activity之間跳轉時必然會執行的是那幾個方法?
2、
不用service,B頁面為音樂播放,從A跳轉到B,再返回,如何使音樂繼續播放?
3、
Service有哪些啟動方法?有什么區別?
4、
(音樂播放器)如何加載的音樂信息,如何改善其效率。
5、
電話狀態的監聽,改變打電話界面(聽說我改動的Phone源碼就不再問了)。
6、
ListView如何提高其效率?
移動應用開發“三不要”
不要讓我等 不要讓我想 不要讓我煩
1. 分頁
2. 異步加載
3. 耗時操作給用戶進度提示
7、
還有一些都是在上面的基礎上擴展的,跟具體項目有關,就不說了。
總結:他們只是問一問這些基礎的知識,都是給外包公司招人,自己做不了主,也就是檢驗一下應聘人員懂不懂android。
南京SL:
1、
啟動一個程序,可以主界面點擊圖標進入,也可以從一個程序中跳轉過去,二者有什么區別?
都是隱式意圖
Task:主界面
首先創建一個Task棧, 配置了Main Launcher Activity被啟動,作為棧底
從其他跳轉過來的Activity在啟動它的Activity所在的棧里
2、
啟動一個Activity有哪幾種方法?
Start()
Main Launcher的Activity
接收事件
通知
桌面小組件
不建議:
服務
廣播
3、
怎么樣在啟動一個Activity時就啟動一個service?
4、
兩個Activity之間怎么傳遞數據?
總結:他們也是剛開始做Android,面試人員最多有兩三年工作經驗,我感覺他們接觸Android時間不一定跟我長,也就只問一些他們自己擅長的那一塊。
南京RH:
這家讓我比較窩火,一個Android問題沒問,全是問Java知識,沒有筆試,但說了不少題目,讓你當場反應,大多是說算法,說出問題的解決思路。最后我問他們不是招收Android工程師嗎,怎么沒問Android知識?回答竟然是:Android這東西很簡單,會了Java經過幾天的培訓,就能很快做Android,我暈,那你直接招收Java工程師就是了,干嘛找我!我聽以前的主管說過,有些公司不缺人,卻打出招聘的牌子,目的就是為了從面試人員身上獲取一些問題的解決方案,獲取一些別的公司的發展方向,這下我算是見識了!
南京ZDW:
面試官說他的面試題目都是網上找的,自己不懂,就看網上的答案與我的作對比。這次真的被問住了,問題全是實際工作中從沒考慮過的。
1、
Android程序與Java程序的區別?并強調了不是虛擬機方面的!
J2EE用于服務端編程 性能 穩定性 安全性
Android 客戶端 用戶體驗
JAVA J2EE Struts Spring Hibernate AJAX HRML JS XML HTTP SQL
Android: JAVA XML HTTP Android SQL
2、
Android中Task任務棧的分配。
3、
程序之間的親和性的理解。
4、
同一個程序,但不同的Activity是否可以放在不同的Task任務棧中?
5、
在Android中,怎么節省內存的使用,怎么主動回收內存?
核心:什么占內存
資源池:同類臨時對象創建多次
對象在不需要使用的時候不創建
Activity或者Service中的onDestroy方法中
主動釋放
6、
Android四大組建,對各種組件的理解。(因為在不同的資料中,有人把Activity、Intent、Service、ContentProvide看為四大組建,也有人把Activity、Broadcast Receives或Intent Receives、Service、ContentProvide看成四大組建)所以這個話題就牽出來的問題比較多。
7、
對Android的理解。
總結:這只是我會的幾個,不會的太多,當時大腦一熱把不會的問題也全忘了,就問android方面的問題就問了一個多小時,只記得這幾個了,我就納悶了,我也經常上網看這方面的知識,有些問題我這么就沒見過呢,他們這都是在哪里找的??
南京RBKJ:
這個大多是底層,我也很無語,一會驅動開發,一會Framwork修改,我感覺自己是一個一年級小孩再被初中生問問題,最后就說了一句話:不好意思,你們就當我沒來過!
南京CMKJ:1、Intent 傳遞數據時,可以傳遞哪些類型數據?2、不同工程中的方法是否可以相互調用?3、Android中Provide是用來干什么的?4、電話的狀態有哪之中,怎么判斷是來電還是去電?5、在Android中是如何實現判斷區分通話記錄中的電話狀態,去電,來電、未接來電?6、音樂播放器如果有大量的音樂文件,如何提高界面展示速度?7、還有些具體的項目經驗經歷。
上海SN:
1、音樂播放功能api中播放流程是怎么樣的?
2、Activity怎么和service綁定,怎么在activity中啟動自己對應的service?
3、 Service有幾種啟動方式,區別是什么?
4、
界面間的跳轉用什么實現,跳轉時activity的生命周期。
5、
界面間的布局是怎么實現的,控件的排列。
6、項目中你遇到的最大困難是什么,怎么解決的。
歲月 –> 經歷—>經驗
故作思考狀
先想好答案
有多個解決問題的辦法,
這些方法可以在公司中使用來解決未來的問題
過程是曲折,道路坎坷,
最后靠自己的努力解決了。
1. 看文檔:
自定義的通知欄
2. 上網google eoeandroid
3. Android交流群
怎么證明自己是有能力、有經驗解決問題
7、有些項目(我做過的)android中已經有了,而你又自己實現了,為什么自己實現,以及你用的實現方式以及所用知識點,二者相比,哪個更有優點,優點在哪。
系統自帶的應用缺點:
UI簡陋,用戶體驗稍差
UI 差異化的功能
8、你做的一個比較復雜的界面,畫出來,每個部分用的什么控件,各個控件中你用到的的屬性是什么,寫出來。
9、如果有種功能,他認為你做的顯得不夠完美,可能會把這個不完美的地方說出來,讓你根據這問題給出一個解決方案。
10、
Android用的數據庫是什么樣的?它和sql有什么區別?為什么要用ContentProvide?它和sql的實現上有什么差別?
如果進個大公司,技術全面的面試官來面你,會問得很全但很粗略,各知識點都涉及到,還給你發揮的境地。小公司就會很不幸了,尤其是面試官,自己也就懂那一點東西,他不管你會什么,就只問他會的那點知識,你們的經驗有交集還好,不然就算你是諸葛亮,也只能自認倒霉!
還有幾家,是剛做Android,就沒問這方面的知識,就問了問java方面的,在這里就不說了,希望這些對大家有用!
看到有幾位朋友說是要看看java基礎部分,我整理了一下,幫要找工作的同學復習一下,希望有幫助(具體的公司就不說了,只說題目):
1.抽象類和接口的區別2.sleep()和wait()方法的區別3.TreeMap和hashMap的區別4.length和length()的區別
5.重載和重寫的區別
6.數據庫的查詢語句(求和,平均值,最大值等)
7.寫四個線程,操作同一個數,兩個用于加1,兩個用于減1。
8.寫一個socket的簡單程序,實現客戶端與服務器通信
9.寫10個簡單的linux命令
adb ls cd rm rmdir mkdir
10..EJB和java程序的區別11.什么是集群?12.內存的堆和棧以及數據的存儲位置,數組和鏈表的最根本的區別13.寫出JDBC連接數據庫的語句14.還有個是繼承一個A類同時又實現一個借口,A類和接口中都有同一個成員變量x,問你會不會編譯出問題15.實現一個單實例模式類16.統計一個字符串中個字母出現的次數,按照a~zA~Z的順序17.反轉一個字符串,并去掉其中的空格18.在一個人機對弈程序中,最關鍵步驟是什么
19.二叉樹的非遞歸遍歷
20.用多種排序方法對一組數據排序
21.給定一個圖(數據結構中的圖),計算兩點間的最短路徑
時間太久了,只記得這么多了,希望對大家有幫助!