餓了?餓了麼?3年工作經驗的程序員天天點外賣決定投聲了餓了麼面經!

在這裏插入圖片描述

面試過程:

通過boss直聘網站找相應的職位,找到就申請了。
過了2天來電話了,是一個週六的早晨9點鐘。
電話面試問了 java基礎,redis,jdk,spring原理,mybatis,dubbo;
後來讓我去現場面,問了java內存相關,redis內存相關,最擅長的技術領域。。

電話面試的期間,面試官很有耐心的聽我講也不會突然打斷我的思路(感覺很舒適)。
現場面試不得不說大廠還是大廠,就挺氣派的。公司看起來一切都是盡然有序。

在這裏插入圖片描述

面試官問的面試題:

技術人員一面

  • 對於進程中鎖的理解。
  • 解決死鎖的方法
  • 網絡的7層結構
  • TCP/UDP的不同
  • 三次握手
  • 給定一個URL,如何訪問
  • 棧和隊列的區別
  • 鏈表,雙向鏈表。

架構師二面

Java的war文件和jar文件有什麼不同,war文件是怎麼出現的
int 和 Integer 有什麼區別,在這裏問了很多,比如用什麼比較纔會給true的結果
Java裏有哪些集合,後續又問了set和list的區別以及優缺點,還有tree
Java的內存結構,主要問堆和棧還有線程的數據是怎麼在堆和棧裏存儲的,棧的生存週期啥的

一、Activity的生命週期及描述;

這個問題都小兒科了,只要你記住那幾個方法,知道每個方法的作用就ok了。

二、MVC的作用及描述:

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範;
Model(模型)表示應用程序核心(比如數據庫記錄列表)。
View(視圖)顯示數據(數據庫記錄)。
Controller(控制器)處理輸入(寫入數據庫記錄)。優點:耦合性低、重用性高

三、ANR是什麼?如果出現ANR,你會怎麼處理?

說真的,做android的應該知道ANR這個術語,可面試的時候當時我就大腦一片空白,完全沒搜索出來,後來面試人員一提示,立馬想起來了;我的回答是:是操作程序佔用時間過長或者主線程被阻塞引起的ANR,解決辦法是把佔用時間長的操作進行多線程處理或者進行異步操作處理,本人覺得還是基本正確的,至少是面試官希望聽到的結果,下邊呈現技術大牛們的詳細解釋。
在Android上,如果你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱作應用程序無響應(ANR:Application Not Responding)對話框。用戶可以選擇「等待」而讓程序繼續運行,也可以選擇「強制關閉」。所以一個流暢的合理的應用程序中不能出現anr,而讓用戶每次都要處理這個對話框。因此,在程序裏對響應性能的設計很重要,這樣系統不會顯示ANR給用戶。
默認情況下,在android中Activity的最長執行時間是5秒,BroadcastReceiver的最長執行時間則是10秒。

ANR的常見類型

ANR一般有三種類型:

  • KeyDispatchTimeout(5 seconds) --主要類型
    按鍵或觸摸事件在特定時間內無響應
  • BroadcastTimeout(10 seconds)
    BroadcastReceiver在特定時間內無法處理完成
  • ServiceTimeout(20 seconds) --小概率類型
    Service在特定的時間內無法處理完成

三:KeyDispatchTimeout

A key or touch event was not dispatched within the specified time(按鍵或觸摸事件在特定時間內無響應)
具體的超時時間的定義在framework下的ActivityManagerService.java

爲什麼會超時呢?
超時時間的計數一般是從按鍵分發給app開始。超時的原因一般有兩種:

  • 當前的事件沒有機會得到處理(即UI線程正在處理前一個事件,沒有及時的完成或者looper被某種原因阻塞住了)
  • 當前的事件正在處理,但沒有及時完成

如何避免KeyDispatchTimeout

  • :UI線程儘量只做跟UI相關的工作
  • :耗時的工作(比如數據庫操作,I/O,連接網絡或者別的有可能阻礙UI線程的操作)把它放入單獨的線程處理
  • :儘量用Handler來處理UIthread和別的thread之間的交互

說了那麼多的UI線程,那麼哪些屬於UI線程呢?
UI線程主要包括如下: Activity:onCreate(), onResume(),
onDestroy(), onKeyDown(), onClick(),etc AsyncTask: onPreExecute(),
onProgressUpdate(), onPostExecute(), onCancel,etc Mainthread handler:
handleMessage(), post*(runnable r), etc

HR三面
簡單自我介紹一下過往的經歷和項目

  • 機器人每次向前走1步概率是1/2,每次向前走2步概率是1/2,當機器人走的路程是4的整數倍時候結束,求結束時機器人步數的期望
  • 老公接老婆下班,老公6:20—6:30到,老婆6:25—6:30下辦公樓,如果老公到老婆辦公樓下比老婆晚,就會捱打,求老公捱打概率。

最後

針對最近很多人都在面試,我這邊也整理了相當多的面試專題資料,也有其他大廠的面經。希望可以幫助到大家。
下面的面試題答案都整理成文檔筆記。也還整理了一些面試資料&最新2020收集的一些大廠的面試真題(都整理成文檔,小部分截圖),有需要的可以點擊進入暗號:QF

最新整理面試題

在這裏插入圖片描述

最新整理電子書

在這裏插入圖片描述
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。一鍵三連哦!
在這裏插入圖片描述

謝謝大家