1. 程式人生 > 實用技巧 >3年工作經驗的程式設計師天天點外賣,於是決定跑去餓了麼!

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

最新整理面試題

在這裡插入圖片描述

最新整理電子書

在這裡插入圖片描述

最新整理大廠面試文件

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

謝謝大家