歡迎光臨
每天分享高質量文章

Android 面經:獵豹移動、餓了麼、中園博林…

作者:璇_c2be

連結:https://www.jianshu.com/p/089861329c1a

在2018年10月初,公司倒閉,無奈走上找工作的道路,不想自己平時圖安逸,不思進取,再次找工作才發現,android行業也不是站在風口上,豬也能吹上天的世道了.作為技術小菜的我,再找工作那幾個月真是戰戰兢兢,被打擊得信心全無.記錄下我的面試經歷,分享給需要的人.勉勵自己要時時進步,才不會被淘汰.

獵豹移動:(有筆試)

  • atomicinteger記憶體模型

  • static編譯時有啥不同,static 陳述句塊,static變數,static方法,構造初始化順序(靜態系結)

  • animation和animator的用法,概述實現原理

  • Handler,looper,messagequeue,thread,message,每個類功能,關係?

  • Mvc,mvp的差異

  • app閃退的原因有哪些?每種情況簡述分析過程

  • 如果一個app存在多行程,請列出全部的ipc方法

  • 作業系統中行程和執行緒有什麼聯絡和區別,系統什麼時候會在使用者態和核心態中切換?- 如何載入ndk庫?如何在jni中註冊native函式,有幾種註冊方式?

  • 一個app如果效能不好,怎麼分析?

餓了麼(無筆試)

  • 設計的六大原則

  • 如果hashmap key不一樣,但是hashcode一樣會怎麼樣?

  • okhttp有什麼優秀的設計樣式?builder樣式有什麼好處?責任鏈樣式有什麼好處?

  • 懶漢樣式單例為什麼加volaitle?

  • hashmap是否執行緒安全?不安全會出什麼問題?

  • concurrenthashmap讀寫分別是啥情況?

  • bindservice和startservice生命週期有啥不同?

  • 廣播有幾種?廣播是觀察者樣式?跨進城廣播也是觀察者樣式嗎?

  • ams是怎麼找到啟動的那個activity的?

  • a-b-c介面,其中b是singleinstance的,那麼c介面點back傳回a介面,為什麼?怎麼管理棧的?

  • 紅黑樹有啥特性?

  • 在oncreate裡面可以得到view的寬高嗎?

  • view的getwidth和getmesurewidth有啥區別?

  • 遍歷hashmap的原理?

  • 23種設計樣式

中園博林(有筆試)

  • 如何避免out of menmory和anr?

  • arraymap和hashmap的區別?

  • 如何實現執行緒同步?

  • 簡述android事件分發機制

  • 簡述view繪製流程

  • 用兩個棧實現一個佇列

  • 口頭問viewpager巢狀滑動衝突怎麼解決?

  • svg動畫

  • 屬性動畫畫一個拋物線怎麼弄?

立思辰(無筆試)

  • 為了適配多解析度,引入什麼開源框架?

  • 閱讀介面書架用什麼控制元件實現?
    -佈局怎麼做到每行的文字左右對齊?

  • 直播介面,微信對話介面實現?

  • 效能最佳化怎麼弄?

vv音樂(有筆試)

  • sax解析xml的優點

  • Contentvalue 鍵值型別

  • androiddvm的行程與linux的行程說法正確的是?(選擇題)

  • Android:gravity和android:layout_gravity的區別?

  • assets與res/raw的區別?

  • 解釋layout_weight的作用view如何掃清?

  • animation.animationlistner乾什麼用的?

  • android常用佈局及排版效率

  • collection與collections的區別

  • 匿名內部類是否可以extends其他類?是否可以implement interface(介面)

  • 補間動畫常見的效果?有哪幾個常見的插入器?

  • override與overload的區別?overloaded的方法是否可以改變傳回值的型別?

  • sleep與wait有什麼區別?

  • 在android中,請簡述jni的呼叫過程?請結束android.mk的作用,並試寫一個android.mk檔案(包含一個.c源檔案即可)

  • 氣泡排序(程式碼實現)

  • 猴子偷桃問題程式碼實現

  • 給出兩個連結串列的頭指標比如p1,p2,判斷這兩個連結串列是否相交,寫出主要思路即可

口頭問

  • 簡述封裝,繼承,多型

  • 強軟弱虛取用的應用場合輸出一個陣列,不重覆?(有點忘記題目什麼意思了)

  • 用四個執行緒計算陣列和(我說用join方法,或者countdownlatch,他說用執行緒池即可)

  • 什麼叫安全釋出物件(多執行緒裡面)final?

  • 策略樣式和命令樣式是啥?

  • 拓撲排序

  • 陣列和連結串列在中間位置的插入效率

  • binder的原理

  • art和dvm在gc上有啥不同?有啥改進?

  • linux和windows下行程怎麼通訊的?(完全不瞭解)

  • 效能最佳化做過什麼工作?

  • 一個類實現一個介面,介面取用指向這個類物件,可以不可以呼叫它的tostring方法?

  • 瀏覽器,輸入url匹配,假設有一億條url快取,用什麼資料結構匹配?

  • recycleview快取機制相比listview快取機制有啥改進?

  • 一個長度為10的arraylist和linklist,在第五條插入,哪個更快?

  • 子類複寫父類的equals方法,但是子類增加了一個成員變數int,請問equals方法咋整?

大數醫療(有筆試)

  • 手寫hashmap

  • 寫生產者消費者樣式,不可用syncronized

  • treemap,hashmap應用場景

位元組跳動(無筆試)

  • dvm和art的區別

  • 從framework的角度講activity的啟動流程(冷啟動)

  • 手寫演演算法,二維陣列,每一行,每一列都是升序,找出某數的下標,沒有輸出[-1,-1],最好的時間複雜度是m+n(行數+列數)

  • zxing二維碼開源框架流程

  • contentprovider怎麼升級維護?

  • constaintlayout

  • bitmap有幾種格式,分別佔多少位元組

滴滴出行(無筆試)

  • android事件分發機制,如何下發,如何上傳?

  • 一個介面下拉掃清要怎麼實現?

  • bitmap佔用記憶體多少怎麼計算?一個畫素佔幾個位元組?

  • threadlocal的原理?

  • framework載入activity的流程

  • arraylist和linkedlist的應用場景

  • 網路請求相關的框架

  • 好幾萬條簡訊,滑動卡頓怎麼解決?

  • 有沒有瞭解過三方開源資料庫(好像是騰訊的什麼資料庫框架,不僅僅是懂sqlite)

  • 避免記憶體洩漏,為什麼說handler用成員內部類會記憶體洩漏?activity不是已經到gcroot被切斷了嗎?還有靜態context持有activity的取用會記憶體洩漏,必須要持有怎麼辦?(及時釋放)

  • 計算viewgroup的層級,遞迴實現和非遞迴實現

  • 自己寫一個應用,包名就叫android行不行,為什麼?

  • 主執行緒looper如果沒有訊息,就會阻塞在那,為什麼不回anr?

  • 系統行程可以用webview嗎?

  • 原子類的瞭解一個app多行程的好處

  • 一個arraylist,裡面全部是int,講所有值是2的整數的節點刪除

  • arraymap瞭解

  • binder機制

  • shareprefrence原理?是否執行緒安全和行程安全?

  • 一個app啟動頁另開一個行程,啟動頁10s後啟動mainactivity,請問5s的時候有幾個行程?

  • java記憶體結構,記憶體模型

融雲(有筆試)

  • 氣泡排序手寫

  • 如何判斷一個字串是迴文字串

梧桐車聯(電話面試沒過)

  • 為什麼要引入activity這個元件

  • shareprefrence不是行程安全,假設一個apk兩個行程同時修改shareprefrence怎麼辦?

  • contenprovider已經是行程間通訊,為什麼還要引入broadcastreceiver?

  • a啟動b,b啟動c,怎樣可以在c介面點back退回到a?

  • startservice和bindservice生命週期有什麼不同?

  • 兩個應用同時註冊一個廣播,優先順序都一樣,哪個會先收到廣播?(有序廣播?)

  • 還有些其他的,忘記了

螞蟻金服(電話面試沒過)

  • threadlocal原理

  • zxing有過最佳化提高識別率嗎?

京東

  • arraylist裡面可以不可以new一個t泛型的陣列?

  • 補間動畫click事件還在原位怎麼解決?

  • 多執行緒併發

  • 隔代資料庫升級

  • 效能最佳化

贊(0)

分享創造快樂