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