小公司程序員的編程水平與BAT大廠到底有多大差距?

BAT的牛人多,普通人也多,雖然他們不是每個人都能達到令人仰望的技術水平,但畢竟平臺高,所以眼光會變得寬闊;代碼要求更爲嚴格,所以普通的程序員也會被逼變得更優秀;身邊的牛人多,普通的程序員也會受到影響,提升的更快。

webp

正好,小編今天看到一篇文章,是講去阿里的面試經歷,也分享給大家,看看自己離着【進】阿里還有多大的差距。

Activity

  • 說下Activity生命週期 ?

  • Activity A 啓動另一個Activity B 會調用哪些方法?如果B是透明主題的又或則是個DialogActivity呢 ?

  • 說下onSaveInstanceState()方法的作用 ? 何時會被調用?

  • 說下 Activity的四種啓動模式、應用場景 ?

  • 瞭解哪些Activity常用的標記位Flags?

  • 說下 Activity跟window,view之間的關係?

  • 橫豎屏切換的Activity生命週期變化?

  • 如何啓動其他應用的Activity?

  • Activity的啓動過程?

Fragment

  • 談一談Fragment的生命週期 ?與Activity生命週期的不同 ?

  • 談談Activity和Fragment的區別?

  • Fragment中add與replace的區別(Fragment重疊)

  • getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之間的區別?

  • FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景

Service

  • 談一談Service的生命週期?

  • Service的兩種啓動方式?區別在哪?

  • 如何保證Service不被殺死 ?

  • 能否在Service開啓耗時操作 ? 怎麼做 ?

  • 用過哪些系統Service ?

  • 瞭解ActivityManagerService嗎?發揮什麼作用

Broadcast Receiver

  • 廣播有幾種形式 ? 都有什麼特點 ?

  • 廣播的兩種註冊方式 ?

  • 廣播發送和接收的原理了解嗎 ?(Binder機制、AMS)

ContentProvider

  • ContentProvider瞭解多少?

  • ContentProvider的權限管理?

數據存儲

  • 描述一下Android數據持久存儲方式?

  • SharedPreferences的應用場景?注意事項?

  • 瞭解SQLite中的事務操作嗎?是如何做的

  • 使用SQLite做批量操作有什麼好的方法嗎?

  • 如何刪除SQLite中表的個別字段?

  • 使用SQLite時會有哪些優化操作?

IPC(重點)

  • Android中進程和線程的關係? 區別?

  • 如何開啓多進程 ? 應用是否可以開啓N個進程 ?

  • 爲何需要IPC?多進程通信可能會出現的問題?

  • Android中IPC方式、各種方式優缺點,爲什麼選擇Binder?

  • Binder機制的作用和原理?

  • Binder框架中ServiceManager的作用?

  • Bunder傳遞對象爲什麼需要序列化?Serialzable和Parcelable的區別?

  • 講講AIDL?原理是什麼?如何優化多模塊都使用AIDL的情況?

View

  • 講下View的繪製流程?

  • MotionEvent是什麼?包含幾種事件?什麼條件下會產生?

  • 描述一下View事件傳遞分發機制?

  • 如何解決View的事件衝突 ? 舉個開發中遇到的例子 ?

  • scrollTo()和scollBy()的區別?

  • Scroller是怎麼實現View的彈性滑動?

  • invalidate()和postInvalidate()的區別 ?

  • SurfaceView和View的區別?

  • 自定義View如何考慮機型適配 ?

Handler

  • 談談消息機制Handler ? 作用 ?有哪些要素 ?流程是怎樣的 ?

  • 一個線程能否創建多個Handler,Handler跟Looper之間的對應關係 ?

  • 軟引用跟弱引用的區別

  • 爲什麼系統不建議在子線程訪問UI

  • Looper死循環爲什麼不會導致應用卡死

  • 使用Handler的postDealy後消息隊列會有什麼變化 ?

  • 可以在子線程直接new一個Handler嗎 ?怎麼做 ?

  • Message可以如何創建 ? 哪種效果更好 ? 爲什麼 ?

線程(重點)

  • 用過線程池嗎 ? 講講AsyncTask的原理

  • 線程池的幾個參數的理解,四種線程池的使用場景

  • 直接在Activity中創建一個thread跟在service中創建一個thread之間的區別

  • IntentService有什麼用 ?

  • 線程池核心線程數一般定義多少 ,爲什麼 ?

  • Thread、Looper、MessageQueue、Handler、Message每個類的功能以及這些類之間的關係

  • 線程池的好處、原理、類型 ? 多線程是否一定會高效(優缺點)

  • ThreadPoolExecutor的工作策略 ?

  • 什麼是ANR ? 什麼情況會出現ANR ?如何避免 ? 在不看代碼的情況下如何快速定位出現ANR問題所在 ?

  • NR在四大組件的時間、場景

  • 多線程中,讓你做一個單例,你會怎麼做

  • 除了notify還有什麼方式可以喚醒線程

Bitmap

  • Bitmap在decode的時候申請的內存如何複用、釋放時機

  • Bitmap使用需要注意哪些問題 ?Bitmap.recycle()會立即回收麼 ? 什麼時候會回收 ? 如果沒有地方使用這個Bitmap,爲什麼垃圾回收不會直接回收它 ?

  • 一張Bitmap所佔內存以及內存佔用的計算

  • Android中緩存更新策略 ?

  • LRU的原理 ?

性能優化(重點)

  • 圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什麼?怎麼處理?

  • 內存中如果加載一張500*500的png高清圖片.應該是佔用多少的內存?

  • WebView的性能優化 ?

  • Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM

  • 內存回收機制與GC算法(各種算法的優缺點以及應用場景);GC原理時機以及GC對象

  • 內存泄露和內存溢出的區別 ?AS有什麼工具可以檢測內存泄露

  • 性能優化,怎麼保證應用啓動不卡頓? 黑白屏怎麼處理?

  • 性能優化如何分析systrace?

  • 強引用置爲null,會不會被回收?

  • ListView跟RecyclerView的區別(動畫、刷新、緩存、數據綁定層、優化、各自的使用場景)

  • ListView的adapter是什麼adapter,如何複用 ?

  • Java多線程引發的性能問題,怎麼解決?

  • 性能優化如何分析systrace?

JNI

  • 對JNI是否瞭解

  • 如何加載NDK庫 ?如何在JNI中註冊Native函數,有幾種註冊方法 ?

  • java如何調用c、c++語言 ?

  • JNI如何調用java代碼 ?

  • 你用JNI來實現過什麼功能 ? 怎麼實現的 ?(加密處理、影音方面、圖形圖像處理)

設計模式

  • 你所知道的設計模式有哪些?

  • 談談MVC、MVP和MVVM,好在哪裏,不好在哪裏 ?

  • 如何理解生產者消費者模型 ?

  • 是否能從Android中舉幾個例子說說用到了什麼設計模式 ?

  • 裝飾模式和代理模式有哪些區別 ?

  • 實現單例模式有幾種方法 ?懶漢式中雙層鎖的目的是什麼 ?兩次判空的目的又是什麼 ?

  • 用到的一些開源框架,介紹一個看過源碼的,內部實現過程。

  • 談談對RxJava的理解

  • RxJava的作用,與平時使用的異步操作來比的優缺點

  • 說說EventBus作用,實現方式,代替EventBus的方式

  • Fragment如果在Adapter中使用應該如何解耦?

Android進階延伸點

  • 如何進行單元測試,如何保證App穩定

  • Android中如何查看一個對象的回收情況

  • TabLayout如何設置指示器的寬度包裹內容 ?

  • APK的大小如何壓縮 ? 多渠道包 ?

  • 插件化原理分析

  • 組建化原理,組件化中路由、埋點的實現

  • Hook以及插樁技術

  • Android的簽名機制,APK包含哪些東西 ?

  • v3簽名key和v2還有v1有什麼區別

  • 熱修復流派、原理,如何進行dex替換的 ?

  • Android4.0~9.0之間大的變化,如何處理 ?

  • 說下Measurepec這個類

  • WebView相關(內存泄露、JS交互)

  • 請例舉Android中常用佈局類型,並簡述其用法以及排版效率

  • 區別Animation和Animator的用法,概述其原理

  • 如何實現一個推送,極光推送原理

  • 是否使用過DataBinding ? ButterKnife是怎麼做到佈局綁定的 ?

  • 使用過什麼圖片加載庫 ?Glide的源碼設計哪裏很微妙 ?

  • 做過屏幕適配嗎 ?你的處理方案有哪些 ?

  • 做過主題切換嗎?你的處理方案有哪些?

  • 做過權限適配嗎 ?動態權限適配方案、權限組的概念

  • 用過哪些網絡加載庫 ?OkHttp、Retrofit實現原理 ?

  • 對於應用更新這塊是如何做的 ? (灰度,強制更新、分區域更新)

  • 瞭解GPS、GIS嗎 ?

  • 會用Kotlin、Fultter嗎 ? 談談你的理解

看完了有什麼感想,自己和BAT的要求有差距麼?

這也是根據面試題目整理的一份面試資料還有學習的視頻,今天免費分享給你們。

webp


webp

領取方式

以上資源,進羣無套路免費獲取,每天還會更新最新資料

加QQ羣818520403,免費領取資料 

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