請查收:2020互聯網大廠高頻面試題!

ListView和RecyclerView區別

參考鏈接:

https://blog.csdn.net/shu_lance/article/details/79566189

既然RecyclerView在很多方面能取代ListView,Google爲什麼沒把ListView劃上一條過時的橫線?

答案: 可以沿着回收機制來回答。ListView採用的是RecyclerBin的回收機制在一些輕量級的List顯示時效率更高

你用過MVP和MVVM的區別

參考鏈接:

https://www.cnblogs.com/dubo-/p/5619077.html

HashMap的內部實現原理?

    1. HashMap可以接受null鍵值和值,而HashTable則不能,HashMap是非synchronized的;存儲的是鍵值對。
    1. HashMap是基於hashing原理,使用put(key,value)存儲對象到HashMap中,使用get(key)從HashMap中獲取對象,當我們給put方法傳遞鍵和值時,我們先對鍵調用hashCode()方法,返回的hashCode用於找到bucket位置來存儲鍵對象和值對象,作爲Map.Entry.
    1. 如果兩個對象hashCode相同:存儲時:他們會找到相同的bucket位置,發生碰撞,因爲HashMap使用鏈表存儲對象(每個Map.Entry都有一個next指針),這個Entry會存儲在鏈表中。獲取時:會用hashCode找到bucket位置,然後調用key.equals()方法找到鏈表中正確的節點.最終找到要找的值對象.減少碰撞:使用final修飾的對象、或不可變的對象作爲鍵,使用(Integer、String)(是不可變、final的,而且已經重寫了equals和hashCode方法)這樣的wrapper類作爲鍵是非常好的,(我們可以使用自定義的對象作爲鍵嗎?答:當然可以,只要它遵守了equals和hashCode方法定義規則,並且當對象插入到Map中之後將不會再改變。)
    1. HashMap負載因子默認是0.75,可設置,當map填滿了75%的bucket時候,將會創建原來HashMap大小兩倍的bucket數組,來重新調整map的大小,並將原來的對象放入新的bucket數組中,這個過程叫做rehashing,因爲它調用hash方法找到新的bucket位置。
    1. 重新調整map大小可能會發生競爭問題:如果兩個線程都發現HashMap需要調整大小了,它們都會嘗試進行調整,在調整中,存儲在鏈表中的元素的次序會反過來,因爲移動bucket位置的時候,HashMap並不會將元素放在鏈表的尾部,而是放在頭部,這是爲了避免尾部遍歷,如果條件競爭發生了,就死循環了。

你用過AsyncTask,說一說AsyncTask的內部實現原理?

參考鏈接:

https://www.cnblogs.com/absfree/p/5357678.html

AsyncTask內部維護了一個線程池,是串行還是並行,怎麼維護的?

串行

參考鏈接:

https://www.cnblogs.com/absfree/p/5357678.html

那你說說線程池的四種初始化吧?

你用過MD,你知道怎麼定義一個Behavior嗎?

參考鏈接:

https://www.jianshu.com/p/82d18b0d18f4

RecyclerView的拖拽怎麼實現的?

參考鏈接:

https://blog.csdn.net/aiynmimi/article/details/77744610

寫一個單利模式,應注意哪三個條件?

1、構造函數私有 2、含有一個該類的靜態私有對象 3、有一個靜態的公有的函數用於創建或獲取它本身的靜態私有對象 4、其次纔是考慮線程同步!

一個按升序排列好的數組int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},輸入一個x,int x = 31,在數據中找出和爲x的兩個數,例如 9 + 22 = 31,要求算法的時間複雜度爲O(n);

如何向一個數據庫具有int類型A,B,C,D四列的表中隨機插入10000條數據?如何按升序取出A列中前10個數?

service兩種啓動方式有什麼區別?

參考鏈接:

https://blog.csdn.net/siwen1234/article/details/50292683

說說三級緩存、Handler機制 ?

參考鏈接:

https://blog.csdn.net/wenzhi20102321/article/details/53214315

Handler機制

https://www.cnblogs.com/dendai-05/p/6945159.html

阿里巴巴

  • LRUCache原理
  • 圖片加載原理
  • 模塊化實現(好處,原因)
  • JVM
  • 視頻加密傳輸
  • 統計啓動時長,標準
  • 如何保持應用的穩定性
  • ThreadLocal 原理
  • 談談classloader
  • 動態佈局
  • 熱修復,插件化
  • HashMap源碼,SpareArray原理
  • 性能優化,怎麼保證應用啓動不卡頓
  • 怎麼去除重複代碼
  • SP是進程同步的嗎?有什麼方法做到同步
  • 介紹下SurfView
  • HashMap實現原理,ConcurrentHashMap 的實現原理
  • BroadcastReceiver,LocalBroadcastReceiver 區別
  • Bundle 機制
  • Handler 機制
  • android 事件傳遞機制
  • 線程間 操作 List
  • App啓動流程,從點擊桌面開始
  • 動態加載
  • 類加載器
  • OSGI
  • Https請求慢的解決辦法,DNS,攜帶數據,直接訪問IP
  • GC回收策略
  • 畫出 Android 的大體架構圖
  • 描述清點擊 Android Studio 的 build 按鈕後發生了什麼,大體說清一個應用程序安裝到手機上時發生了什麼;
  • 對 Dalvik、ART 虛擬機有基本的瞭解;
  • Android 上的 Inter-Process-Communication 跨進程通信時如何工作的;
  • App 是如何沙箱化,爲什麼要這麼做;
  • 權限管理系統(底層的權限是如何進行 grant 的)
  • 進程和 Application 的生命週期;
  • 系統啓動流程 Zygote進程 –> SystemServer進程 –> 各種系統服務 –> 應用進程
  • recycleview listview 的區別,性能
  • 排序,快速排序的實現
  • 樹:B 樹的介紹
  • 圖:有向無環圖的解釋
  • TCP/UDP的區別
  • synchronized與Lock的區別
  • volatile
  • Java線程池
  • Java中對象的生命週期
  • 類加載機制
  • 雙親委派模型
  • Android事件分發機制
  • MVP模式
  • RxJava
  • 抽象類和接口的區別
  • 集合 Set實現 Hash 怎麼防止碰撞
  • JVM 內存區域 開線程影響哪塊內存
  • 垃圾收集機制 對象創建,新生代與老年代
  • 二叉樹 深度遍歷與廣度遍歷
  • B樹、B 樹
  • 消息機制
  • 進程調度
  • 進程與線程
  • 死鎖
  • 進程狀態
  • JVM內存模型
  • 併發集合瞭解哪些
  • ConCurrentHashMap實現
  • CAS介紹
  • 開啓線程的三種方式,run()和start()方法區別
  • 線程池
  • 常用數據結構簡介
  • 判斷環(猜測應該是鏈表環)
  • 排序,堆排序實現
  • 鏈表反轉
  • 動態權限適配方案,權限組的概念
  • 網絡請求緩存處理,okhttp如何處理網絡緩存的
  • 圖片加載庫相關,bitmap如何處理大圖,如一張30M的大圖,如何預- - 防OOM
  • 進程保活
  • listview圖片加載錯亂的原理和解決方案
  • https相關,如何驗證證書的合法性,https中哪裏用了對稱加密,哪裏用了非對稱加密,對加密算法(如RSA)等是否有了解滴滴
  • MVP
  • 廣播(動態註冊和靜態註冊區別,有序廣播和標準廣播)
  • service生命週期
  • handler實現機制(很多細節需要關注:如線程如何建立和退出消息循環等等)
  • 多線程(關於AsyncTask缺陷引發的思考)
  • 數據庫數據遷移問題
  • 設計模式相關(例如Android中哪裏使用了觀察者模式,單例模式相關)
  • x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完
  • TCP與UDP區別與應用(三次握手和四次揮手)涉及到部分細節(如client如何確定自己發送的消息被server收到) HTTP相關 提到過Websocket 問了WebSocket相關以及與socket的區別
  • 是否熟悉Android jni開發,jni如何調用java層代碼
  • 進程間通信的方式
  • java註解
  • 計算一個view的嵌套層級
  • 項目組件化的理解
  • 多線程斷點續傳原理
  • Android系統爲什麼會設計ContentProvider,進程共享和線程安全問題
  • jvm相關
  • Android相關優化(如內存優化、網絡優化、佈局優化、電量優化、業務優化)
  • EventBus實現原理

美團

  • static synchronized 方法的多線程訪問和作用,同一個類裏面兩個synchronized方法,兩個線程同時訪問的問題
  • 內部類和靜態內部類和匿名內部類,以及項目中的應用
  • handler發消息給子線程,looper怎麼啓動
  • View事件傳遞
  • activity棧
  • 封裝view的時候怎麼知道view的大小
  • arraylist和linkedlist的區別,以及應用場景
  • 怎麼啓動service,service和activity怎麼進行數據交互
  • 下拉狀態欄是不是影響activity的生命週期,如果在onStop的時候做了網絡請求,onResume的時候怎麼恢復
  • view渲染

愛奇藝

  • RxJava的功能與原理實現
  • RecycleView的使用,原理,RecycleView優化
  • ANR的原因
  • 四大組件
  • Service的開啓方式
  • Activity與Service通信的方式
  • Activity之間的通信方式
  • HashMap的實現,與HashSet的區別
  • JVM內存模型,內存區域
  • Java中同步使用的關鍵字,死鎖
  • MVP模式
  • Java設計模式,觀察者模式
  • Activity與Fragment之間生命週期比較
  • 廣播的使用場景

百度

  • Bitmap 使用時候注意什麼?
  • Oom 是否可以try catch ?
  • 內存泄露如何產生?
  • 適配器模式,裝飾者模式,外觀模式的異同?
  • ANR 如何產生?
  • String buffer 與string builder 的區別?
  • 如何保證線程安全?
  • java四中引用
  • Jni 用過麼?
  • 多進程場景遇見過麼?
  • 關於handler,在任何地方new handler 都是什麼線程下
  • sqlite升級,增加字段的語句
  • bitmap recycler 相關
  • 強引用置爲null,會不會被回收?
  • glide 使用什麼緩存?
  • Glide 內存緩存如何控制大小?
  • 如何保證多線程讀寫文件的安全?

攜程

  • Activity啓動模式
  • 廣播的使用方式,場景
  • App中喚醒其他進程的實現方式
  • AndroidManifest的作用與理解
  • List,Set,Map的區別
  • HashSet與HashMap怎麼判斷集合元素重複
  • Java中內存區域與垃圾回收機制
  • EventBus作用,實現方式,代替EventBus的方式
  • Android中開啓攝像頭的主要步驟

360

  • 軟引用、弱引用區別
  • 垃圾回收
  • 多線程:怎麼用、有什麼問題要注意;Android線程有沒有上限,然後提到線程池的上限
  • JVM
  • OOM,內存泄漏
  • ANR怎麼分析解決
  • LinearLayout、RelativeLayout、FrameLayout的特性、使用場景
  • 如何實現Fragment的滑動
  • ViewPager使用細節,如何設置成每次只初始化當前的Fragment,其他的不初始化
  • ListView重用的是什麼
  • 進程間通信的機制
  • AIDL機制
  • AsyncTask機制
  • 如何取消AsyncTask
  • 序列化
  • Android爲什麼引入Parcelable
  • 有沒有嘗試簡化Parcelable的使用
  • AIDL機制
  • 項目:拉活怎麼做的
  • 應用安裝過程
  • 某海外直播公司
  • 線程和進程的區別?
  • 爲什麼要有線程,而不是僅僅用進程?
  • 算法判斷單鏈表成環與否?
  • 如何實現線程同步?
  • hashmap數據結構?
  • arraylist 與 linkedlist 異同?
  • object類的equal 和hashcode 方法重寫,爲什麼?
  • hashmap如何put數據(從hashmap源碼角度講解)?
  • 簡述IPC?
  • fragment之間傳遞數據的方式?
  • 簡述tcp四次揮手?
  • threadlocal原理
  • 內存泄漏的可能原因?
  • 用IDE如何分析內存泄漏?
  • OOM的可能原因?
  • 線程死鎖的4個條件?
  • 差值器&估值器
  • 簡述消息機制相關
  • 進程間通信方式?
  • Binder相關?
  • 觸摸事件的分發?
  • 簡述Activity啓動全部過程?
  • okhttp源碼?
  • RxJava簡介及其源碼解讀?
  • 性能優化如何分析systrace?
  • 廣播的分類?
  • 點擊事件被攔截,但是相傳到下面的view,如何操作?
  • Glide源碼?
  • ActicityThread相關?
  • volatile的原理
  • synchronize的原理
  • lock原理
  • 翻轉一個單項鍊表
  • string to integer
  • 合併多個單有序鏈表(假設都是遞增的

請查收:六大互聯網大廠高頻面試題!2020面試要做的準備可不止這些

面試準備

上面題目是開放的,就不單獨附答案了.

不管怎麼樣,不論是什麼樣的大小面試,要想不被面試官虐的不要不要的,只有刷爆面試題題做好全面的準備,當然除了這個還需要在平時把自己的基礎打紮實,這樣不論面試官怎麼樣一個知識點裏往死裏鑿,你也能應付如流啊~

分享我的面試學習筆記,這可是我通過字節跳動面試的最強武器!
[學習PDF大全+字節跳動真題+簡歷模板]

字節跳動面試真題解析

計算機基礎面試題、數據結構和算法面試題、Java面試題、Android面試題、其他擴展面試題、非技術面試題總共五個章節354頁。

還有一份Android學習PDF大全,這份Android學習PDF大全真的包含了方方面面了

內含Java基礎知識點、Android基礎、Android進階延伸、算法合集等等


字節跳動真題解析、Android知識大全PDF、簡歷模板私信我領取

面試時HR也是不可以忽略的環節,我們經常也會遇到很多關於簡歷製作,職業困惑、HR經典面試問題回答等有關面試的問題。

有全套簡歷製作、春招困惑、HR面試等問題解析參考建議。

分享不易,關注+點贊支持一下哦

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