- vừa được xem lúc

Stack và Queue thì ứng dụng được gì vào dự án thực tế???

0 0 15

Người đăng: Tờ Mờ Sáng học Lập trình

Theo Viblo Asia

Câu hỏi tưởng chừng như đơn giản này lại làm bó tay rất nhiều bạn sinh viên khi đi phỏng vấn tìm việc.

Stack (ngăn xếp)Queue (hàng đợi) là 2 cấu trúc dữ liệu cơ bản mà anh em nào học IT chắc cũng đều từng học qua trong môn Cấu trúc dữ liệu & Giải thuật

Nhưng cậu liệu đã từng đặt câu hỏi: học "2 ông thần" này thì làm được gì cho đời? Ngoại trừ thêm/xóa phần tử trong danh sách hay chưa?

Cùng mình tìm hiểu trong bài viết này nhé!

1. Stack (Ngăn xếp)

  • Hoạt động theo nguyên lý Vào Sau Ra Trước - Last In First Out (LIFO)
  • Giống như việc xếp chồng sách lên nhau. Quyển sách nào được xếp vào sau cùng (push), thì sẽ được lấy ra đầu tiên (pop)

image.png

  • Một ví dụ trong thực tế anh em lập trình viên thường sử dụng Stack nhất, đó là trong quá trình debug. Chúng ta thường sẽ quan sát cửa sổ CallStack để xem các hàm gọi đến nhau như thế nào. Những hàm nằm trên cùng của CallStack sẽ là những hàm trả ra kết quả đầu tiên.

image.png

  • Ngoài ra, stack còn được dùng để implement chức năng Undo / Redo (Ctrl + Z / Ctrl + Shift + Z) mà các cậu thường nhìn thấy trên các text editor. Tương tự như vậy với chức năng Go Back / Go Forward trên trình duyệt.

image.png

2. Queue (Hàng đợi):

  • Hoạt động theo nguyên lý Vào Trước Ra Trước - First In First Out (FIFO)
  • Giống như việc xếp hàng đợi mua vé xem phim. Ai xếp hàng trước thì sẽ mua được vé xem phim trước (Không tính ngoại lệ như vụ scandal TT lấn hàng bao rạp nha)

image.png

  • Một ví dụ trong thực tế có thể áp dụng vào web app mảng Marketing của công ty, đó là chức năng gửi email marketing. Nếu tất cả người dùng thực hiện gửi email hàng loạt trong cùng một thời điểm, có thể gây quá tải dẫn đến tèo luôn con server gửi mail.
  • Khi đó, chúng ta có thể sử dụng Queue để khắc phục tình trạng này. Khi người dùng gửi email, email đó sẽ được đẩy vào Queue. Nhờ đó chúng ta có thể kiểm soát được việc muốn gửi bao nhiêu email đi trong một thời điểm bằng cách giới hạn số message lấy ra từ Queue.

image.png

Hi vọng kiến thức này hữu ích với cậu! Hẹn gặp lại 👋

Bình luận

Bài viết tương tự

- vừa được xem lúc

Quick and Dirty Stack, Queue and Deque in JavaScript

Quick and Dirty Stack, Queue and Deque in JavaScript. Trong quá trình phỏng vấn, dùng JavaScript, nếu đề bài không yêu cầu bắt buộc phải implement Stack hoặc Queue thì chúng ta có thể tiết kiệm thời g

0 0 27

- vừa được xem lúc

Cách xây dựng cấu trúc dữ liệu Stack và Queue.

Mở đầu. Hello các bạn, hôm nay mình sẽ chia sẻ với các bạn cách để có thể tự xây dựng 2 loại cấu trúc dữ liệu stack(ngăn xếp) và queue(hàng đợi) sử dụng mảng trong C++;.

0 0 43

- vừa được xem lúc

Giới thiệu về Queues trong Laravel

Trong cuộc sống, bạn sẽ thường gặp phải những tình huống phải triển khai nhiều công việc đồng thời, và dân gian thường nói rằng: Việc dễ thì làm trước, khó làm sau. Queue của Laravel được xây dựng như

0 0 137

- vừa được xem lúc

Sự khác nhau giữa Stack và Queue

Stack và Queue đều là các cấu trúc dữ liệu không nguyên thủy (non-primitive). Sự khác biệt lớn nhất giữa Stack và Queue là Stack sử dụng phương thức LIFO (last in first out) để truy cập và thêm các ph

0 0 48

- vừa được xem lúc

Cuối cùng thì Event loop là gì?

Đặt vấn đề. Vài tháng trước, mình có một buổi presentation về Javascript core nên cũng có tìm hiểu qua về một số khái niệm cơ bản và hay ho như nhân V8 (Google), Event-Driven, Non-blocking I/O, Event

0 0 40

- vừa được xem lúc

Crawl hàng triệu page mỗi ngày với python

Crawling có lẽ không còn xa lạ với tất cả mọi người, rất dễ để bắt đầu lấy được data. Tuy nhiên khi gặp phải những thách thức như: crawl 1 vài triệu page mỗi ngày, tài nguyên thì ít mà muốn vít thật n

0 0 19