Android工程師面試題

時(shí)間:2024-09-19 09:30:41 學(xué)人智庫(kù) 我要投稿
  • 相關(guān)推薦

關(guān)于Android工程師面試題

  singletask:棧內(nèi)復(fù)用模式。不是在當(dāng)前任務(wù)棧中查找是否存在,實(shí)際過(guò)程如下:

關(guān)于Android工程師面試題

  查找該Activity所需的任務(wù)棧是否存在(由taskAffinity控制,或者默認(rèn)為包名)。

  在任務(wù)棧當(dāng)中查找該Activity是否存在。

  這里面存在任務(wù)棧的切換,也就是當(dāng)開啟的singtask類型的Activity不屬于當(dāng)前任務(wù)棧時(shí),則會(huì)切換到其任務(wù)棧。

  singleInstance:?jiǎn)螌?shí)例模式。

  包含了singleTask的所有特性,另外加上:設(shè)置為該模式的Activity,只能單獨(dú)存在于一個(gè)任務(wù)棧中。當(dāng)有兩個(gè)singleInstace的Activity設(shè)置成同樣的任務(wù)棧時(shí),會(huì)出現(xiàn)兩個(gè)同名的任務(wù)棧,分別用來(lái)存放同名的Activity。

  注:在任何跳轉(zhuǎn)的時(shí)候,首先調(diào)用本Activity的onPause,然后跳轉(zhuǎn)。如果被跳轉(zhuǎn)的activity由于啟動(dòng)方式而沒(méi)創(chuàng)建新的實(shí)例,則會(huì)先調(diào)用onNewIntent,然后按照正常的生命周期調(diào)用。

  如

  1:A→B,A:onPause;B:onCreate,onStart,onResume。

  2:A(singleTop)→A,A:onPause;A:onSaveInstanceState;A:onResume。

  3、View的繪制

  推薦郭霖大神的博客:

  https://blog.csdn.net/guolin_blog/article/details/16330267

  4、canvas的使用

  推薦以下博客:

  https://blog.csdn.net/qinjuning/article/details/6936783

  5、ActivityManagerService的相關(guān)知識(shí)點(diǎn)

  推薦以下博客:

  https://wiki.jikexueyuan.com/project/deep-android-v2/activity.html

  6、Activity切換時(shí)生命周期交集

  Activity之間的協(xié)作當(dāng)一個(gè)activity A啟動(dòng)了另外一個(gè)activity B,它們的生命周期是有交叉的;

  首先A的onPause()被調(diào)用;

  之后B的onCrate(), onStart()及onResume() 方法會(huì)被調(diào)用(此時(shí)B擁有用戶焦點(diǎn));

  最后,如果A在屏幕上不可見(jiàn),onStop()方法被調(diào)用;

  因此,我們?cè)趦蓚(gè)activities中傳遞數(shù)據(jù),或者共享資源時(shí)(如數(shù)據(jù)庫(kù)連接),需要在前一個(gè)activity的onPause()方法而不是onStop()方法中進(jìn)行;

  7、Hybrid(重要加分項(xiàng))

  java和JS的交互

  https://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/

  https://rensanning.iteye.com/blog/2043049

  WebView開啟JavaScript腳本執(zhí)行

  WebView設(shè)置供JavaScript調(diào)用的交互接口。

  8、網(wǎng)絡(luò)編程

  volley

  https://bxbxbai.github.io/2014/09/14/android-working-with-volley/

  https://blog.csdn.net/guolin_blog/article/details/17656437

  如何控制TCP連接時(shí)的擁塞

  https://blog.csdn.net/yechaodechuntian/article/details/25429143

  三次握手

  https://blog.csdn.net/whuslei/article/details/6667471

  Android客戶端和服務(wù)端如何使用Token和Session

  https://wyong.blog.51cto.com/1115465/1553352

  移動(dòng)端獲取網(wǎng)絡(luò)數(shù)據(jù)優(yōu)化的幾個(gè)點(diǎn)連接復(fù)用 :

  節(jié)省連接建立時(shí)間,如開啟 keep-alive。

  對(duì)于 Android 來(lái)說(shuō)默認(rèn)情況下 HttpURLConnection 和 HttpClient 都開啟了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影響連接池的 Bug,具體可見(jiàn):Android HttpURLConnection 及 HttpClient 選擇

  請(qǐng)求合并:

  即將多個(gè)請(qǐng)求合并為一個(gè)進(jìn)行請(qǐng)求,比較常見(jiàn)的就是網(wǎng)頁(yè)中的 CSS Image Sprites。如果某個(gè)頁(yè)面內(nèi)請(qǐng)求過(guò)多,也可以考慮做一定的請(qǐng)求合并。

  減少請(qǐng)求數(shù)據(jù)的大小:

  對(duì)于post請(qǐng)求,body可以做gzip壓縮的,header也可以作數(shù)據(jù)壓縮(不過(guò)只支持http 2.0)。

  返回的數(shù)據(jù)的body也可以作gzip壓縮,body數(shù)據(jù)體積可以縮小到原來(lái)的30%左右。(也可以考慮壓縮返回的json數(shù)據(jù)的key數(shù)據(jù)的體積,尤其是針對(duì)返回?cái)?shù)據(jù)格式變化不大的情況,支付寶聊天返回的數(shù)據(jù)用到了)

  根據(jù)用戶的當(dāng)前的網(wǎng)絡(luò)質(zhì)量來(lái)判斷下載什么質(zhì)量的圖片(電商用的比較多)。

  9、android開發(fā)中,可能會(huì)導(dǎo)致內(nèi)存泄露的問(wèn)題

  不要讓生命周期長(zhǎng)于Activity的對(duì)象持有到Activity的引用

  盡量使用Application的Context而不是Activity的Context

  盡量不要在Activity中使用非靜態(tài)內(nèi)部類,因?yàn)榉庆o態(tài)內(nèi)部類會(huì)隱式持有外部類實(shí)例的引用(具體可以查看細(xì)話Java:”失效”的private修飾符了解)。如果使用靜態(tài)內(nèi)部類,將外部實(shí)例引用作為弱引用持有。

  垃圾回收不能解決內(nèi)存泄露,了解Android中垃圾回收機(jī)制

  **更多內(nèi)容可以參考以下博客:

  https://spencer-dev.lofter.com/post/d7b9e_6faf120

  10、activity的啟動(dòng)過(guò)程:

  https://www.cloudchou.com/android/post-788.html

  以上是我遇到和搜集到的各類題目以及相應(yīng)的解答,接下來(lái)一段時(shí)間也會(huì)持續(xù)更新,大家遇到什么經(jīng)典或者不會(huì)的問(wèn)題也可以給我留言,在此統(tǒng)一分享給大家。祝大家能夠找到自己心儀的工作,前途一片光明!

【Android工程師面試題】相關(guān)文章:

投行面試題07-24

軟件測(cè)試面試題01-17

中層副職競(jìng)聘面試題09-05

來(lái)看看谷歌的面試題08-17

濟(jì)南稼軒中學(xué)小升初面試題07-21

壓力危機(jī)類面試題目突破技巧11-09

今年最強(qiáng)的面試題和最牛的答卷09-20

考察個(gè)人價(jià)值觀的另類面試題02-21

人力資源行業(yè)常見(jiàn)面試題匯總02-03

面試題:給我們一個(gè)錄取你的理由?11-16