×

System Design Interview Là Gì? 7 Bước Xử Lý Phỏng Vấn Thiết Kế Hệ Thống Cho Dân IT

Ngày đăng: 20/06/2023 | Không có phản hồi

Ngày cập nhật: 21/06/2023

System design interview là gì? Những bạn đang hướng tới các vị trí như kỹ sư phần mềm, web designer, frontend developer, v.v, đặc biệt là bậc senior và cao hơn, sẽ cần chú ý tới loại hình phỏng vấn này để có thể đạt được mục tiêu. Cùng Glints tìm hiểu về hình thức phỏng vấn này và cách để interview thành công nhé!

System design interview là gì?

System design interview có nghĩa là phỏng vấn đánh giá khả năng thiết kế hệ thống, phát hiện lỗi và chỉnh sửa các thiết kế phần mềm quy mô lớn. Những cái tên lớn như Facebook, Google hay Amazon đều sử dụng hình thức phỏng vấn này để đánh giá khả năng xử lý vấn đề liên quan đến khả năng mở rộng (scalability), bộ nhớ đệm (caching), cân bằng tải (load balancing), bảo mật, v.v.

Chi tiết hơn, sau khi nhận câu hỏi từ nhà tuyển dụng, các ứng viên sẽ phải áp dụng kiến thức về thiết kế hệ thống để phân tích, xác định lỗi và giải quyết các vấn đề. Từ đó, nhà tuyển dụng sẽ chấm điểm xem liệu ứng viên có thể thật sự xây dựng được phần mềm chất lượng, không lỗ hổng hay không.

System designs interview là gì
System designs interview là phỏng vấn yêu cầu thiết kế hệ thống dữ liệu.

Đọc thêm: Top 9 Các Hình Thức Phỏng Vấn Phổ Biến Nhất Hiện Nay

Các topic và câu hỏi thường gặp trong system design interview

Bạn sẽ dễ gặp các câu hỏi và chủ đề như thế nào khi tham gia phỏng vấn system design?

Về chủ đề

Dưới đây là một số concept chính bạn cần tìm hiểu và làm quen trước khi đến với buổi phỏng vấn:

  • Caching (Bộ nhớ đệm)
  • Storage (Lưu trữ dữ liệu)
  • Replication (Nhan bản)
  • Data partitioning techniques (Kỹ thuật phân vùng dữ liệu)
  • Load balancing (Cân bằng tải)
  • Đo lường hiệu suất của các hệ thống có thể mở rộng
  • API design
  • Khả năng mở rộng, tính sẵn sàng và độ tin cậy của các hệ thống quy mô lớn
  • Forward and reverse proxies (Proxy chuyển tiếp và đảo ngược)
  • SQL vs. NoSQL

Về câu hỏi thường gặp

Các cuộc phỏng vấn thiết kế hệ thống có thể bao gồm nhiều chủ đề và bạn cần chuẩn bị bằng cách nghiên cứu trước các câu hỏi tiềm năng.

Dưới đây là một số câu hỏi phổ biến nhất trong các system designs interview:

  • Thiết kế dịch vụ lưu trữ và chia sẻ tệp toàn cầu như Dropbox hoặc Google Drive.
  • Thiết kế một mạng xã hội như Facebook, Instagram hoặc Twitter.
  • Thiết kế một dịch vụ chat như Facebook Messenger hoặc WhatsApp.
  • Thiết kế một dịch vụ phát video toàn cầu như YouTube hoặc Netflix.
  • Thiết kế một dịch vụ gọi xe như Uber hoặc Lyft.
  • Thiết kế trình thu thập dữ liệu web.
  • Thiết kế một cửa hàng khóa-giá trị.
  • Thiết kế bộ giới hạn tốc độ API.
  • Thiết kế dịch vụ rút gọn URL.
  • Thiết kế hệ thống thang máy, v.v.

Các bước hoàn thành system design interview thật thành công

Nếu bạn cũng sắp trải qua cuộc phỏng vấn liên quan đến system design, hãy cùng Glints tham khảo 7 bước ngắn gọn dưới đây:

Bước 1: Xác định rõ yêu cầu

Khi nhận được “đề bài” cho màn phỏng vấn system design, điều trước nhất mà bạn cần làm là hiểu rõ câu hỏi và chủ đề mà người tuyển dụng đã đưa ra cũng như những tiêu chuẩn đầu tiên khi đặt ra nền móng của hệ thống. Những điểm chung mà bạn cần xác định được là:

  • Đối tượng người dùng sẽ làm gì trên hệ thống bạn sẽ thiết kế
  • Họ muốn đạt được mục đích gì qua hệ thống của bạn?
  • Giải pháp của bạn sẽ giúp họ ra sao?
  • Tổng cộng sẽ có khoảng bao nhiêu người dùng?
  • Họ sẽ sử dụng hệ thống cùng một lúc hay sẽ truy cập hệ thống riêng lẻ?
system design interview
Xác định đúng yêu cầu ngay từ đầu là bước rất quan trọng.

Bước 2: Đưa ra ước tính thô

Ước lượng ban đầu (back-of-the-envelope estimation) về quy mô hệ thống bạn sẽ thiết kế sẽ là bước đệm giúp bạn làm tốt hơn trong việc mở rộng quy mô, phân vùng, cân bằng tải và bộ nhớ đệm.

Bước 3: Xác định giao diện hệ thống

Tiếp theo, bạn nên xác định API nào được mong đợi từ hệ thống. Điều này sẽ thiết lập hợp đồng chính xác mà hệ thống cần và đảm bảo rằng bạn không đưa ra các yêu cầu và con số sai lệch so với tiêu chuẩn.

Bước 4: Xác định mô hình dữ liệu

Việc xác định mô hình dữ liệu sẽ làm rõ cách dữ liệu luân chuyển giữa các thành phần hệ thống khác nhau. Từ đó nó sẽ hướng đến phân vùng và quản lý dữ liệu.

Đọc thêm: Câu Hỏi Phỏng Vấn IT HelpDesk Và Gợi Ý Trả Lời

Bước 5: Thiết kế cấp cao

Tiếp theo, bạn có thể vẽ sơ đồ khối với 5–6 ô đại diện cho các thành phần cốt lõi của hệ thống. Bạn cần xác định đủ các thành phần cần thiết để giải quyết vấn đề thực tế từ đầu đến cuối.

Ví dụ, nếu bạn được yêu cầu thiết kế Tiny-URL, bạn cần thảo luận về những vấn đề sau:

  • Tạo và lưu trữ hàm băm (hash) của URL đầy đủ
    • MD5 và Base62
    • Xung đột băm (hash collision)
    • SQL hoặc NoSQL
    • Lược đồ cơ sở dữ liệu
  • Dịch URL đã băm thành URL đầy đủ
    • Tra cứu cơ sở dữ liệu
    • API và thiết kế hướng tới đối tượng

Bước 6: Thiết kế chi tiết

Từ đây, chúng ta sẽ tìm hiểu sâu hơn về hai hoặc ba thành phần chính. Người phỏng vấn sẽ đưa ra phản hồi và chỉ ra những phần nào của hệ thống cần phải thảo luận thêm. Bạn nên trình bày các cách tiếp cận khác nhau, ưu và nhược điểm của chúng, đồng thời giải thích lý do tại sao bạn thích cách tiếp cận này hơn cách tiếp cận kia.

Đi tới thiết kế chi tiết hơn.

Bước 7: Xác định và giải quyết tắc nghẽn

Bottleneck nghĩa là điểm mà tại đó dòng chảy của dữ liệu bị suy yếu, tắc nghẽn. Bạn nên cố gắng thảo luận về càng nhiều nút cổ chai (bottleneck) càng tốt cũng như các cách tiếp cận khác nhau để giảm thiểu sự tồn tại của chúng trong hệ thống. Chẳng hạn:

  • Có điểm lỗi nào trong hệ thống không? Những bước có thể được thực hiện để giảm thiểu rủi ro này?
  • Có đủ bản sao dữ liệu để đảm bảo rằng người dùng vẫn có thể được phục vụ nếu một vài máy chủ bị ngừng hoạt động không?
  • Hiệu suất của dịch vụ được theo dõi như thế nào? Có cảnh báo trực tiếp khi các thành phần quan trọng bị lỗi hoặc hiệu suất xuống cấp?

Bằng cách xem xét các vấn đề như vậy, bạn có thể đảm bảo rằng hệ thống bạn thiết kế trong system design interview được trang bị tốt để xử lý những rủi ro và tiếp tục phục vụ người tiêu dùng một cách hiệu quả.

Bài viết có hữu ích đối với bạn?

Đánh giá trung bình 2 / 5. Lượt đánh giá: 1

Chưa có đánh giá nào! Hãy là người đầu tiên đánh giá bài viết.

Chúng tôi rất buồn khi bài viết không hữu ích với bạn

Hãy giúp chúng tôi cải thiện bài viết này!

Làm sao để chúng tôi cải thiện bài viết này?

[jetpack-related-posts]

Có thể bạn cũng thích

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Khám phá ngay 10k+ công việc mới tại Glints
Nền tảng tuyển dụng hàng đầu Đông Nam Á

X