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