天天看點

Android大廠面試題整理1、小紅書Android面2、快手 Android3、愛奇藝Android工程師4、 微信視訊号安卓工程師5、抖音社交Android工程師6、抖音電商Android工程師7、小米android開發8、美團移動端一面

1、小紅書Android面

Java篇

  • 靜态變量和執行個體變量的差別
  • “==” & equals()
  • 淺拷貝 & 深拷貝
  • HashMap , 擴容機制
  • 多個線程如果共享多個資源,需要怎麼保證安全
  • volatile,CAS/ABA

Android篇

  • 事件的分發機制
  • Handler原理
  • TCP UDP
  • Kotlin和Java的差別
  • 啟動優化
  • 記憶體優化
  • 多程序通信

2、快手 Android

  • Android/ 布局優化
  • Activity啟動模式
  • RecyclerView和ListView差別
  • Handler機制,loop方法為何不會造成ANR
  • View繪制流程
  • SingleTop和standard啟動模式下,生命周期回調有何不同
  • onStart和onResume差別
  • Java/ 面向對象三大特性
  • Array和Linked差別
  • HashMap底層
  • 程序間通信方式
  • equals和==差別
  • 線程間加鎖的方式
  • 知道啥設計模式
  • synchronized的不同使用
  • 異常
  • 線程池
  • 建立線程的方式
  • OS/ 死鎖
  • 網絡/ tcp和udp的差別

3、愛奇藝Android工程師

  • 介紹項目
  • Android布局嵌套深有什麼問題
  • kotlin協程
  • HashMap原理
  • 算法:手寫快排
  • Activity啟動模式
  • Activity A → B的生命周期在這四種啟動模式下的狀态
  • 廣播類型
  • 有序廣播如何實作的按順序收到廣播
  • 持久化存儲方式
  • SharedPreferences的格式
  • xml解析方式
  • json與xml的差別,json為什麼比xml更好
  • Android view繪制流程
  • surfaceView
  • sp, dp, px的差別
  • 機型大小适配
  • 适配語言
  • ANR 什麼時候出現,如何排查
  • Android動畫
  • startService與bindService的差別
  • Service保活方式
  • java泛型,<? extends T>能否add元素
  • 重寫equals方法需要重寫hashCode方法嗎
  • ThreadLocal
  • wait,sleep,yield,join的差別
  • 算法1:字元串全排列
  • 算法2:删除連結清單中倒數第n個節點

4、 微信視訊号安卓工程師

Android

  • 講一下Android發生Crash的整體流程
  • Native層Crash是如何捕獲到的?
  • Java層Crash是如何捕獲到的?
  • 如何做到發生異常時不會殺死APP?在

    UncaughtExceptionHandler.unCatchException方法調用Looper進行死循環可以

  • 講一下Handler機制
  • Looper的定時器是用如何實作的?
  • APK包裡有什麼?
  • APP在運作時是通過什麼來擷取到layout檔案的?
  • 講一下surfaceview跟textview
  • Activity A 啟動 Activity B 時,他們在同一個棧的情況下生命周期以及執行順序是怎麼樣的?
  • Destroy()方法是什麼時候調用的?

Java

  • 有什麼線程同步的機制?
  • volatile關鍵字講一下。
  • volatile如何實作可見性?
  • synchronize如何實作可見性?
  • volatile防止指令重排代碼級别如何實作?

作業系統

  • 講一講作業系統核心态跟系統态的了解。
  • 作業系統核心是什麼?
  • 作業系統核心本質上就是作業系統代碼的常駐機構。
  • 作業系統核心就是管理所有代碼和資料結構的集合。
  • 作業系統核心是軟體和硬體之間的媒介。
  • 為什麼作業系統要有核心态、系統态的存在?
  • Linux有什麼信号?
  • sigill信号在什麼情況下會觸發?

5、抖音社交Android工程師

一面

  • 項目
  • volitale與synchronized的差別
  • 手寫單例
  • 匿名内部類如何持有外部類對象
  • 記憶體洩漏的概念
  • 記憶體洩漏的場景
  • 記憶體洩漏檢測的工具
  • handler原理,sendMessage與sendMessageDelay如何保證Message放入MessageQueue中的順序
  • 兩個Message相隔5秒,這5秒内線程會一直阻塞嗎
  • 自定義 View如何特殊處理wrap_content,padding的實作
  • MVVM和MVP 的差別(引出了一系列問題,不是很了解就直接說不了解比較好)
  • LiveData與RxJava的差別
  • LiveData生命周期感覺如何實作
  • 介紹RxJava
  • https與http的差別,中間人如何修改密鑰
  • 算法:二叉樹z字形列印

二面

  • 項目
  • final、finally與finalize的差別
  • java開啟一個線程的方式
  • Thread.start()與直接調用run()的差別
  • Java預設提供了幾種線程池
  • thread{ i++ }執行10次結果,如何讓i最後等于10
  • synchronized與reentrantlock差別
  • 死鎖
  • 悲觀鎖樂觀鎖
  • gc垃圾回收
  • 垃圾标記階段,Python如何實作的斷開循環引用
  • Retrofit傳回的是什麼資料類型
  • 伺服器傳回的資料有哪些類型,為什麼不能用xml類型傳回
  • 請求資料這個過程發生了什麼
  • get與post請求的差別,get與post攜帶資料的差別
  • java注解
  • kotlin擴充函數原理
  • 算法:兩個連結清單相加

三面

  • main方法執行之前發生了什麼
  • System.out.println(“a”)将字元輸出到螢幕發生了什麼
  • 輕按兩下QQ發生了什麼
  • 浏覽器輸入url發生了什麼
  • 根據前序周遊和中序周遊輸出後序周遊
  • 如果排期隻有一周的任務,但是以我的能力需要兩周才能完成,這個時候你會怎麼辦。
  • k個一組反轉連結清單

6、抖音電商Android工程師

一面

  • 實習學到的架構
  • MVVM
  • Dagger原理
  • livedata原理
  • 程序和線程
  • 作業系統IO模型
  • 程序通信方式
  • 管道通信原理
  • TCP協定如何實作可靠傳輸
  • UDP如何實作可靠傳輸
  • java建立線程
  • 線程池原理
  • 線程池拒絕政策
  • synchronized與reentrantlock實作方式的差別
  • AQS原理
  • handler原理
  • Retrofit原理
  • 算法: 二叉樹右視圖 — 非遞歸實作

二面

  • Navigation的優缺點
  • 如何實作的自定義navigate方法切換fragment,如何讓被覆寫的fragment感覺到生命周期
  • gc如何判斷垃圾對象
  • 成員變量與局部變量的差別,局部變量的值一定是存放在堆中嗎()
  • jvm類加載的時機
  • jvm類加載過程
  • 雙親委托機制是什麼
  • 雙親委托機制什麼時候會被破壞
  • 記憶體洩漏是什麼
  • volatile的作用
  • 寫一個死鎖
  • 算法:判斷A是否是B的子樹

三面

  • 自己是如何學習Android的
  • 實習過程中的難點說一個
  • 實習過程中和哪些人接觸的比較多
  • 如何和别人溝通的
  • 挑一個項目說一下
  • 裡氏替換原則
  • http狀态碼
  • http多路複用
  • 資料庫
  • 算法 漢字表示的數字轉成阿拉伯表示。

7、小米android開發

  • http與https的差別。
  • Java構造器工作工程。
  • Java中的引用類型有哪些。
  • http,http1.1,http2.0有啥差別。
  • TCP/IP最大容量的意義是什麼?
  • 還有Integer與int類型差別?各自怎麼比較大小?
  • 還有垃圾回收機制還有final的用法
  • 為什麼HashMap在1.8中采用了紅黑樹?你能說下啥是紅黑樹嗎?啥是平衡二叉樹?啥是二叉搜尋樹?啥是滿二叉樹?
  • Java1.7采用數組加連結清單與1.8采用紅黑樹有啥差別?
  • HashMap 線程不安全原因是啥?分版本作答
  • 如果線程安全的話 要用哪個?我說Hashtable。他說HashTable效率太低,怎麼安全又效率高?
  • 對稱加密與非對稱加密?
  • SSL是幹嘛的?

8、美團移動端一面

  • jvm記憶體模型
  • new 對象的過程
  • 類加載過程
  • ClassLoader源碼
  • final關鍵字
  • 匿名内部類
  • 講下垃圾回收算法
  • LinkedList && ArrayList
  • hashMap
  • 常用注解,spring中的注解
  • 鎖,synchronized底層原理
  • https && http
  • 浏覽器輸入位址後的過程
  • 狀态碼 303 304
  • 你知道的設計模式
  • 單例模式 說了雙重校驗鎖,靜态内部類 ,不同場景下如何選擇
  • 雙重校驗鎖為什麼要兩次判空
  • volatile,指令重排