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