天天看點

oppo的android面試準備

很榮幸收到的oppo的面試通知,對此在網上查閱一些以往面oppo的題目,整體如下,參考題目來自

OppoAndroid面試小記

看準網oppo的android面試

android基礎

  • Activity啟動模式及應用場景?
    • standard: 普通的啟動
    • singleTask: 棧内複用,主activity一般用這個
    • singleTop: 棧頂複用,消息、通知頁面
    • singleInstance:呼叫來電、鬧鐘
  • service
    • bindService和startService,如果需要和activity綁定使用bindService,不需要則使用startService
  • 廣播,靜态廣播和動态廣播的差別?
    • 注冊方式:靜态是清單檔案注冊,動态是代碼注冊
    • 生命周期:即使應用不在了,仍能收到靜态廣播;對應activity銷毀,動态廣播便不會收到了
  • 哪些場景會出現記憶體洩漏,解決使用弱引用
    • 單例造成的記憶體洩漏
    • 非靜态内部類建立靜态執行個體造成的記憶體洩漏
    • Handler造成的記憶體洩漏
    • 資源對象未關閉:File、Bitmap等
    • 線程造成的記憶體洩漏
    • 集合容器中的記憶體洩漏
    • 使用ListView時造成的記憶體洩漏
    • WebView造成的洩漏
  • 事件分發機制
  • RecyclerView和ListView的差別?
    • 布局效果、常用功能與API等
    • 緩存機制的不同,lv需要自己寫viewhoder,rv不需要,複用機制也不一樣
    • 局部重新整理,lv隻能全部重新整理,rv可以局部重新整理
    • 動畫,lv本身不支援動畫,rv支援動畫
  • Activity+Fragment
  • 開發中的常用的布局控件?什麼情況下線性布局,什麼情況下用相對布局?如何減少布局層級?
  • 用過哪些事件總線?EventBus的優缺點是啥?
  • WebView互動原理?
  • 資料庫,如何進行資料庫遷移?
  • 大資料加載
  • 自定義View
  • handler源碼分析
  • 如何分析記憶體洩漏及如何處理
  • 如何分析ANR及如何處理
  • 性能優化
  • 記憶體優化你做過沒有?一張十萬乘以十萬的圖檔,如何加載才不會記憶體溢出?
  • 記憶體溢出,記憶體抖動,記憶體洩漏你都碰到過嗎?怎麼解決的?如何區分這幾種情況?怎麼解決由記憶體洩漏而導緻的記憶體溢出?
  • 程序間通信,binder原理
  • okhttp源碼
  • 熱修複原理及幾種方案對比
  • apk加強
  • Glide,RxJava原理和性能優化
  • 有沒有優化在弱網時候的通信?
    • Android App優化之網絡優化
    • 壓縮/減少資料傳輸量
    • 利用緩存減少網絡傳輸
    • 針對弱網(移動網絡), 不自動加載圖檔
    • 界面先回報, 請求延遲送出

Java

  • 多線程
  • Thread直接調用run會怎樣?start的作用是什麼?
    • 直接run會去執行run中邏輯,但不會建立線程
    • start時,會C層先建立一個線程,然後線上程中執行run中邏輯
  • tcp udp差別,TCP和http的主要差別?
    • tcp是面向連接配接的,udp是面向非連接配接的,tcp三次握手保證可靠通信
    • tcp和ucp是傳輸層的協定,http是應用層的協定
  • http封包結構,https加密
    • 請求行(http版本、請求方式)
    • 請求頭(host、content-type、content-length)
    • 請求體
    • http本身存在竊聽、篡改和冒充的風險,在http基礎上增加ssl層便為https
  • jvm
  • 有幾種常見的單例模式?對于這幾種單例模式synchronized具體鎖的是什麼東西?
  • 即時通信原理?
    • osi 7層和4層模型
  • 心跳機制需要考慮哪些因素?
    • 心跳發送和業務邏輯在同一個線程
    • 心跳發送和業務邏輯共享網絡連接配接
    • 心跳的發送間隔和檢查間隔的确定,一般30s

繼續閱讀