騰訊高級Android開發面試總結

     年年寒冬都擋不住一個程序員想進大廠的心,這不,今年又開始着手找工作啦。不過令人比較驚喜的是我一開始更新簡歷,就有獵頭找上門了,還就直接幫推了幾個大廠tcl,騰訊,迅雷等幾個大廠。一開始以爲機會不大,沒想到第二天就收到了騰訊的面試機會,特此記錄一下,其他幾個大廠暫時還沒有面試通知,後續有了再整理。

    首先就是自我介紹,這一段主要就是介紹自己的一些工作經歷,愛好什麼的。

    然後就是問了一下簡歷上的項目經驗,這一塊是針對具體項目問的,不過總而言之,他想要知道的就是你這個項目的重點和難點,我就是沒抓住重點,吃了虧,導致沒把面試官往比較高大上的點引,也導致他覺得我做的這個項目比較low。然後就去問下一個項目了。

    最後說一下他問的一些通用的問題:

       1.如何在launcher上實現這樣一個功能,就是生成一個圖標,第一天顯示,第二天不顯示。

         這個問題還在尋找答案中!哪位小夥伴知道可以告知一下,謝謝!

       2.講一下一個app是怎樣被啓動起來的?啓動流程是怎麼樣的?

    回答一:   Activity的啓動過程,我們可以從Context的startActivity說起,其實現是ContextImpl的startActivity,然後內部會通過Instrumentation來嘗試啓動Activity,這是一個跨進程過程,它會調用ams的startActivity方法,當ams校驗完activity的合法性後,會通過ApplicationThread回調到我們的進程,這也是一次跨進程過程,而applicationThread就是一個binder,回調邏輯是在binder線程池中完成的,所以需要通過Handler H將其切換到ui線程,第一個消息是LAUNCH_ACTIVITY,它對應handleLaunchActivity,在這個方法裏完成了Activity的創建和啓動,接着,在activity的onResume中,activity的內容將開始渲染到window上,然後開始繪製直到我們看見。

   回答二:

(1)啓動的起點發生在Launcher活動中,啓動一個app說簡單點就是啓動一個Activity,那麼我們說過所有組件的啓動,切換,調度都由AMS來負責的,所以第一步就是Launcher響應了用戶的點擊事件,然後通知AMS

(2)AMS得到Launcher的通知,就需要響應這個通知,主要就是新建一個Task去準備啓動Activity,並且告訴Launcher你可以休息了(Paused);

(3)Launcher得到AMS讓自己“休息”的消息,那麼就直接掛起,並告訴AMS我已經Paused了;

(4)AMS知道了Launcher已經掛起之後,就可以放心的爲新的Activity準備啓動工作了,首先,APP肯定需要一個新的進程去進行運行,所以需要創建一個新進程,這個過程是需要Zygote參與的,AMS通過Socket去和Zygote協商,如果需要創建進程,那麼就會fork自身,創建一個線程,新的進程會導入ActivityThread類,這就是每一個應用程序都有一個ActivityThread與之對應的原因;

(5)進程創建好了,通過調用上述的ActivityThread的main方法,這是應用程序的入口,在這裏開啓消息循環隊列,這也是主線程默認綁定Looper的原因;

(6)這時候,App還沒有啓動完,要永遠記住,四大組建的啓動都需要AMS去啓動,將上述的應用進程信息註冊到AMS中,AMS再在堆棧頂部取得要啓動的Activity,通過一系列鏈式調用去完成App啓動;

       3.和服務器進行連接,哪兩個因素必不可少?

  Android與服務器的通信方式主要有兩種,一是Http通信,一是Socket通信。

  我猜想面試官當時想的應該是http通信:必要因素應該是請求和響應。

  http連接使用的是“請求—響應方式”,即在請求時建立連接通道,當客戶端向服務器發送請求後,服務器端才能向客戶端返回數據。

Socket通信中:

基於TCP/IP協議的通信則是在雙方建立起連接後就可以直接進行數據的傳輸,在連接時可實現信息的主動推送,而不需要每次由客戶端想服務器發送請求。

而UDP則是提供無連接的數據報服務,UDP在發送數據報前不需建立連接,不對數據報進行檢查即可發送數據包。。
 

       4.你用過protoBuf麼?

         Protobuf是一種靈活高效可序列化的數據協議,相於XML,具有更快、更簡單、更輕量級等特性。優點:高效且節省流量,缺點:可讀性差!

       5.你講一下glide?

這個我推薦這位大神的回答:https://blog.51cto.com/14541311/2456718?source=dra

以上就是這次面試總結的內容,這樣一場高大上的BAT面試因爲我的準備不足而草草結束,真是一次很大的遺憾,結局自然不言而喻,只是希望通過這次面試,能夠讓我警醒到表達能力還有很多不足,以後還要加強自己的表達能力和基礎知識,爭取早日進大廠!加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章