成  就  一  直  前  進  的  你

成  就  一  直  前  進  的  你

loanding...

首頁>求職面試>新手必看!Android 系統設計面試必考重點

新手必看!Android 系統設計面試必考重點

Android 面試常分為 App 設計與工具庫設計兩類,重點在理解架構選擇、API 設計與效能優化。

新手必看!Android 系統設計面試必考重點
share
share

文/Jamie Chen

最近面試到一段落,發現mobile system design的文章真的不多,網路上的資源都以backend system design為主,但其實mobile與backend的system design著重的地方非常不同,這篇會以Android mobile system design為主,說明面試會遇到什麼問題、怎麼準備以及應該怎麼回答

面試的問題?

System design絕對不是問什麼是activity/fragment這種問題。通常分為兩大類

  • App design: newsfeed, photo upload/sync app, and chat message app, news app… 這種比較直覺就是請你設計一個facebook, whatsapp這類的
  • Tool library design: log tool, A/B testing tool, downloader, image loader.. 這種真的就比較難回答,非常考驗平常有沒有在追third party library’s source code

如何準備?

  • Android developers 絕對是最好的資源。把你平常開發時候用的東西了解透徹,這是最基本的。Ex: Why MVVM? MVVM解決什麼問題?什麼時候用WorkManager? 什麼時候用Foreground Service
  • Backend API的基本概念一定要熟悉,會幫助你怎麼設計database。還有一些backend的概念有時候也會被問到。Ex: chat message app會問push&pull model, paginaion用page number, or cursor index。我準備的方法就跟backend的同事多請教多討論。另外也推薦system design的聖經 Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
  • System design這關通常會問的很細節,尤其是performance的問題。如何支援offline? 網路不穩定怎麼辦?很耗電怎麼辦?大推Google官方的Android performance patterns。建議每個影片都看過至少一次。
  • Grokking the Mobile System Design interview 這篇文章我大概看了三次,講的非常好,幫助很多。
  • 練習的時候就自己畫在紙上或ipad上,然後大聲唸出來,並試著想面試會遇到的問題,在針對不足補強

回答步驟?

先寫在最前面,這邊很重要的一件事: 溝通。因為問題真的太廣了,請設計一個Facebook。Facebook的功能這麼多,一定要一直溝通確保你跟面試官on the same page再開始回答

  • 確認好問題,比如說newsfeed,就大概先畫一下newsfeed的view的樣子。這樣可以確保你是往正確的方向回答,也可以幫助接下來的思考
  • 接著會開始說需要有什麼API(get/post/update/delete),怎麼設計in app databse,把大概的流程架構畫出來,這邊通常會問為什麼in-app-database, table or database的問題
  • 接著我會開始說app要用什麼架構,這邊主要我都以MVVM為主。Repository, UseCase, ViewModel, LiveData, View怎麼溝通,為什麼要這樣做?MVVM的優缺點都分析一次。如果是tool類型的app真的比較難回答,就不能分析View的部分。如果是圖片就了解cache有幾層,怎麼運用builder的,Log是怎麼傳上去的
  • 接著分析完後,通常會挑一兩個重點問你,比如chat meesage app, push or pull的優缺點。怎麼support offline,怎麼做cache? 網路不穩定要怎麼做cache?background process的取捨。
練習時的系統設計架構圖
練習時的系統設計架構圖

System design真的不太好準備,也是最體現實力的一關。平常開發就多思考,面試前多畫白板,跟其他developer多交流,多看source code。面試的時候不要覺得是在面試,當成是在跟以後的同事交流,這樣也可以看出這間公司是不是適合你。2020找工作不容易,希望這篇文章可以幫助到你。祝大家offer多多,都找到喜歡的工作,也歡迎在下方分享面試系統設計的心得

本文經 Jamie Chen 授權
文章來源:如何準備Android系統設計的面試

上一篇: 長榮客服求職者親曝考試細節!筆試題型、面試問題通通不藏私

你可能會喜歡的文章

author

作者簡介

我是面試經驗談 / 各行各業面試全攻略!

分享各行各業的面試技巧與準備心法,從履歷撰寫到面試應答一手掌握!也記錄進入職場後的甘苦點滴,無論是升遷瓶頸、人際相處,還是轉職迷惘,都陪你一起思考下一步。

totop