1. 程式人生 > >虎牙直播 2019暑期實習生-Android開發 面試經歷(已拿offer)

虎牙直播 2019暑期實習生-Android開發 面試經歷(已拿offer)

一面

  1. 兩個執行緒,一個執行緒輸出”A”,一個執行緒輸出”B”,使用兩個執行緒輸出”ABABABABABAB”,要保證輸出的次序。
  2. int c = 5;在編譯生成可執行檔案後這個變數儲存在檔案的什麼位置,在執行程式時又會儲存在記憶體中的什麼位置,如果多個程序執行該程式,那麼c在記憶體中的位置(以Windows同時開啟多個工作管理員為例)。
  3. String a = “明”,String b= “明”, a.equals(b) 和 a==b的結果是什麼,為什麼;char[] c = a.toCharArray(); char在Java中佔幾位; c.length是多少,如果a= “a”;那麼c.length 是多少,byte[] d = a.getBytes(); d.length是多少,為什麼。
  4. Java中的程序和Linux中的程序以及Java中的執行緒和Linux中的執行緒所指的定義相同嗎,為什麼。
  5. c中 &a所取的地址是虛擬地址還是實體地址。
  6. 給一個數字陣列,其中有一系列的學生成績,要將所有不及格的學生成績移除,將及格的成績在不改變原有順序的情況下從下標0開始放置,要求時間複雜度O(n).
  7. Android中從一個Actiivty開啟另一個Activity,兩個Activity的生命週期變化,為什麼要在第二個Activity的onResume()完成後才呼叫第一個Activity的onStop().
  8. 在一段組合語言中,每個指令都會有類似於0x990efw來操作記憶體,那麼作業系統對具體的每條指令獲取記憶體的實現是什麼,每次都會從記憶體中查詢嗎。
  9. volatile關鍵字是用來做什麼的,其原理是什麼,一般用來做什麼,為什麼不在每個變數上都加volatile。
  10. Http的get和post的區別有哪些,在Javq下如果在get的大小限制內要實現傳輸圖片要怎麼做;http長連線的建立。

二面

  1. 專案中遇到的最大的難點是什麼,最後是怎麼解決的。
  2. 一個列表中item有圖片,怎麼保證很多圖片的情況下不發生OOM(Recyclerview原理)。
  3. Fresco的Native儲存圖片避免OOM,Bitmap的不用手動回收。
  4. 當按Home鍵後Activity中的View會發生什麼方法呼叫。
  5. Java多執行緒的情況下一個執行緒CPU佔用過高,怎樣在有工具、沒有工具的情況下找出這個執行緒;在Linux中找出的命令(ps -aux)。
  6. 有沒有通過ADB進行Shell的操作,一般使用什麼命令。
  7. RxJava好在哪裡,一般用在哪些地方,實現執行緒切換的原理;讓你實現一個這樣的庫你會怎麼做(手寫一個增強的觀察者模式)。
  8. 應用Crash後怎樣獲取崩潰的日誌,怎樣對日誌進行分析,獲得日誌的原理是什麼。

三面

  1. 快排原理
  2. HashMap原理,HashMap時間複雜度,為什麼是O(n),出了陣列連結串列還有其他的實現嗎(紅黑樹);紅黑樹的概念,紅黑樹插入時間複雜度。
  3. Http和Tcp的關係,Tcp和Udp的區別,Udp的首部8個位元組分內容。
  4. 最熟悉的設計模式是什麼,單例模式的雙重校驗鎖的實現為什麼要在鎖外判空,如果不判空會怎麼樣。
  5. ANR發生後怎樣獲取發生ANR的原因,原理是什麼。

四面

  1. Java的反射原理。
  2. HashMap時間複雜度,為什麼;map還有什麼實現。
  3. TreeMap的原理和紅黑樹原理及紅黑樹的旋轉。
  4. 鬥魚和虎牙的區別有什麼。

五面

hr面,一般問題。