今天去了著名的百度面試,百度的環(huán)境很好,我很喜歡。
我在大廳等了一會(huì),前臺(tái)在幫我預(yù)約面試官。不一會(huì)面試官來(lái)了,看起來(lái)他穿的很隨意。我想百度的工作氛圍應(yīng)該還是較為開(kāi)放自由的。
人把我?guī)У搅?,很多圓形桌子的一個(gè)地方,好像這個(gè)地方是專門面試用的,周圍零零散散有幾個(gè)一同面試的。這個(gè)面試官看起來(lái)挺有親和力。先是讓我介紹一下之前做的項(xiàng)目。于是我簡(jiǎn)單的說(shuō)了每一個(gè)項(xiàng)目是做什么的,負(fù)責(zé)比較多的是哪里等等。說(shuō)完之后,他給我一張紙。上面兩張圖,一張圖上畫著一個(gè)webview,下面是兩個(gè)按鈕,一個(gè)叫網(wǎng)頁(yè),一個(gè)叫列表,webview里寫著一個(gè)apk的http地址。第二張圖是一個(gè)列表頁(yè)面,然后子項(xiàng)里包含一個(gè)進(jìn)度條,和一個(gè)暫停按鈕??赐曛笏麄冋f(shuō),點(diǎn)擊第一個(gè)webview里面的鏈接,跳轉(zhuǎn)到第二個(gè)頁(yè)面(列表頁(yè))。他讓我設(shè)計(jì)一下這個(gè)程序。我仔細(xì)看了一下。首先我說(shuō)了下A這個(gè)activity的布局,和B的布局。OK。這應(yīng)該不難。下面的兩按鈕,我看做是ActivityGroup。功能上,我思考了一下。這考的應(yīng)該是android與JS的交互,還有就是下載這個(gè)方法的寫法,再有就是如何更新進(jìn)度條,更新進(jìn)度條可能涉及到線程之間的通信問(wèn)題。整理好思路,我跟他一步步的說(shuō)。首先,webview加載的html里包含了一個(gè)鏈接,可以把webview添加一個(gè)JavaScriptInterFace接口,然后出現(xiàn)clickOnAndroid()這個(gè)方法。在這里面可以調(diào)用下載方法。 然后寫一個(gè)下載的方法,new 一個(gè)byte[],這的大小可以隨時(shí)取到,然后服務(wù)器會(huì)返回這個(gè)apk的大小,根據(jù)下載過(guò)的字節(jié)數(shù)跟實(shí)際的大小比,就可以下載的百分比。這個(gè)下載方法可以放在B里,因?yàn)檫M(jìn)度條也在B里。把A的鏈接地址傳給B,就能在B里進(jìn)行下載任務(wù),這個(gè)下載是在一個(gè)線程里進(jìn)行的。子線程進(jìn)行下載,同時(shí)將下載量用Handler 發(fā)消息通知主線程更新UI(進(jìn)度條)。
上述是這個(gè)例子部分的描述,其實(shí)難度倒是平易近人。只是在我說(shuō)的過(guò)程中,面試官要求在紙上寫出方法名,至少寫偽代碼。我比較習(xí)慣編譯器了,所以有的方法名就記得不太清楚,就湊合用筆畫著。面試官問(wèn)的很細(xì)致,包括列表如果建立,適配器如何寫,適配器里的getView如何寫?這些都要問(wèn)。寫的部分大概就是這樣。
然后我來(lái)總結(jié)一下他問(wèn)的問(wèn)題。
1、說(shuō)一下activity的生命周期?A——B的時(shí)候,A走什么方法?會(huì)不會(huì)一直在onPause()?
2、服務(wù)的啟動(dòng)方式?服務(wù)與activity如何傳遞數(shù)據(jù)?
3、有沒(méi)有用過(guò)異步?寫出他的寫法以及內(nèi)部的方法。說(shuō)明他們是在什么線程里?用的AsynTask時(shí)候遇到了什么問(wèn)題?是如何解決的?或者是用AsynTask時(shí)候需要注意什么?
4、一個(gè)按鈕如果變色(點(diǎn)擊效果),要如何實(shí)現(xiàn)?
5、動(dòng)畫有幾種方式?
6、剛才的下載,除了利用實(shí)現(xiàn)JavaScriptInterFace接口還有沒(méi)有其他方法?
7、下載完了如何跳轉(zhuǎn)到該軟件的安裝界面
8、能否在Thread的runable里面直接newHandler()?如果不能,說(shuō)出原因?
9、如何使用數(shù)據(jù)庫(kù),寫出來(lái)
第8題 沒(méi)答上來(lái) 我預(yù)感應(yīng)該不行,于是回去實(shí)驗(yàn)了一下,果然報(bào)錯(cuò),大概的意思是,無(wú)法創(chuàng)建句柄(Android Can‘t create handler inside thread that has not called Looper.prepare()
),悲劇平時(shí)我也沒(méi)這么用過(guò),就知道很別扭。
不管怎么樣,這是一次小小的經(jīng)驗(yàn)和教訓(xùn),希望可以從中收獲就足矣。
-
Android
+關(guān)注
關(guān)注
12文章
3935瀏覽量
127374 -
工程師
+關(guān)注
關(guān)注
59文章
1570瀏覽量
68514 -
百度
+關(guān)注
關(guān)注
9文章
2268瀏覽量
90381
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論