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