Frontend system design 分為兩種:
因為 Web app 越來越複雜,所以也開始採用 Software engineering classes,像是:
甚至像是 Flux / Redux-based architecture
你必須專注於應用程序中獨特的部分,而不是花太多時間談論適用於所有問題的一般內容 (It's imperative that you focus on the parts that are unique to the application and not spend too much time talking about general stuff that are applicable to all questions)
以下是幾個重點步驟:
以下是一些常見問題及其重要部分
Application | Examples | Important Areas |
---|---|---|
News Feed | Facebook, Twitter | 訊息流互動 (Feed interactions), 訊息流分頁方法 (Feed pagination approaches), 訊息編輯器(Message/post composer) |
Messaging/Chat | Messenger, Slack, Discord | 訊息同步 (Message syncing), 即時聊天 (Real-time chat), 訊息列表 (Messages list), 聊天室列表 (Chat list) |
E-commerce Marketplaces | Amazon, eBay | 產品列表 (Product listing pages), 產品細節 (Product detail pages), 購物車 (Cart), 結帳流程 (Checkout) |
Photo Sharing | Instagram, Flickr, Google Photos | 照片瀏覽 (Photos browsing), 照片編輯(Photos editing), 照片上傳 (Photos uploading) |
Travel Booking | Airbnb, Skyscanner | 搜尋介面 (Search UI) , 搜尋結果 (Search results), 預定介面 (Booking UI) |
Email Client | Outlook, Apple Mail, Gmail | 信箱同步 (Mailbox syncing), 信箱介面 (Mailbox UI), 寫信介面 (Email composer), |
Video Streaming | Netflix, YouTube | 影片播放器 (Video player), 影片串流 (Video streaming) , 推薦影片 (Recommended videos) |
瀑布流版面 (Masonry layout implementation) and 媒體訊息流優化 (media feed optimizations) | ||
Collaborative Apps | Google Docs, Google Sheets, Google Slides, Notion | 即時互動 (Real-time collaboration), 狀態同步 (State syncing) |
Drawing | Figma, Lucidchart | Rendering approach, Client state/data model |
Maps | Google/Apple Maps, Foursquare City Guide | 地圖渲染 (Map rendering), 展示地區 (Displaying locations) |
File Storage | Google Drive, Dropbox | 檔案上傳 (File uploading), 檔案下載 (File downloading), 檔案搜尋器 (File explorer) |
視訊會議 (Video Conferencing) | Zoom, Google Meet | 影片串流 (Video streaming), 多樣觀看模式 (Various viewing modes) |
(共乘系統) Ridesharing | Uber, Lyft | 旅程預定 (Trip booking), 司機位置 (Driver location) |
音樂串流 (Music Streaming) | Spotify, Apple Music | 音樂播放器界面 (Music player UI), 播放清單 (Playlists UI) |
遊戲 (Games) | Tetris, Snake | Game state, Game loop, Game logic |
或許會需要寫一小段 code 如下
<ImageCarousel
images={...}
onPrev={...}
onNext={...}
layout="horizontal"
>
<ImageCarouselImage style={...} />
<ImageThumbnail onClick={...} />
</ImageCarousel>
API Design Principles for UI components | Front End Interview Guide | GreatFrontEnd