Tag Archives: algorithm

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 3: HashTable và Set, Graph và Tree

Ở phần 2, bọn mình đã ôn lại những cấu trúc dữ liệu rất cơ bản như Array, LinkedList, Stack and Queue rồi. Ở phần này, tụi mình sẽ tìm hiểu thêm về các cấu trúc dữ liệu hay ho nhưng ít dùng hơn như HashTable, Set, Graph và Tree!

Mình sẽ giải thích sơ về độ phức tạp, ứng dụng của chúng, cũng như những bài toán các bạn hay gặp với các cấu trúc dữ liệu này nhé.

 

Đây là phần 3 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 3: HashTable và Set, Graph và Tree

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 2: Array và Linked-List, Stack và Queue

Ở phần 1, bọn mình đã ôn lại một số khái niệm như Big-O Notation, Time và Space Complexity rồi.  Bạn nào chưa đọc thì đọc lại mới hiểu được trong phần 2 này nha.

Trong phần này, tụi mình sẽ ôn lại những cấu trúc dữ liệu rất cơ bản như Array, LinkedList, Stack and Queue nha!

Mình sẽ giải thích sơ về độ phức tạp, ứng dụng của chúng, cũng như những bài toán các bạn hay gặp với các cấu trúc dữ liệu này nhé.

Đây là phần 2 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 2: Array và Linked-List, Stack và Queue

8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 1: Ôn lại về Big-O Notation và độ phức tạp

Thay vì ngồi học mấy công nghệ cao siêu, kì này tụi mình ngồi học lại cơ bản, ôn lại kiến thức về thuật toán, về các cấu trúc dữ liệu thôi nhỉ?

Kiến thức về thuật toán không được dùng hằng ngày trong việc code, nhưng nó giúp bạn viết code tối ưu hơn, xử lý nhanh hơn. Ngoài ra, rất nhiều công ty bây giờ khoái phỏng vấn bằng thuật toán.

Số lượng thuật toán, cấu trúc dữ liệu có rất rất nhiều, kể vài quyển sách chưa hết. Tuy vậy, tụi mình chỉ cần tập trung vào 8 cấu trúc dữ liệu cơ bản này là được!

96,69% các bài phỏng vấn, leetcode, thuật toán … đều dựa trên 8 cấu trúc dữ liệu này, và 1 số biến thể của nó. Nắm vững 8 cấu trúc dữ liệu này, biết cách sử dụng nó là các bạn đã có kiến thức kha khá rồi nhé!

 

Đây là phần 1 trong series bài viết 3 phần:

  1. Ôn lại về Big-O Notitation, Time và Space Complexity
  2. Array, Linked List, Stack và Queue
  3. HashTable, Set, Graph và Tree

Continue reading 8 Cấu Trúc Dữ Liệu siêu cơ bản mà dev nào cũng nên biết – Phần 1: Ôn lại về Big-O Notation và độ phức tạp

Những điều mình thích và ghét sau hơn 6 năm theo ngành lập trình

Mấy nay viết bài kĩ thuật nhiều rồi nên hôm nay anh em mình ngồi tâm sự chém gió chút về chuyện ngành này nhé.

Đi làm cũng được vài năm rồi, nên hôm nay mình tâm sự mỏng về những điều mình thích và ghét sau hơn 6 năm năm theo ngành ha.

Tất cả những điều này đều dựa theo trải nghiệm của bản thân mình, thông qua các dự án/công ty mình đã làm qua. Do vậy nó hơi mang tính chủ quan của bản thân mình nha.

Continue reading Những điều mình thích và ghét sau hơn 6 năm theo ngành lập trình

5 trang web cực hay để luyện thuật toán, học lập trình

Hôm trước, mình đã có viết bài về 4 cách rèn luyện tư duy lập trình rồi! Do nhiều bạn muốn cụ thể, chi tiết những trang có thể học tập, luyện thuật toán nên hôm nay mình chia sẻ thêm cho các bạn 5 trang cực kì hay ho để luyện thuật toán/học lập trình nha!

Các bạn không cần phải dùng hết cả 2 làm gì, chỉ cần chọn 1-2 cái hay nhất là được rồi nhé!

Continue reading 5 trang web cực hay để luyện thuật toán, học lập trình

Các hệ thống lớn sử dụng Rate Limiting để chống DDOS, hạn chế spam, bảo vệ hệ thống như thế nào? – Phần 2

Ở kì trước, mình đã giới thiệu với các bạn về kĩ thuật Rate Limiting – Một kĩ thuật đơn giản mà hay ho, được khá nhiều hệ thống lớn sử dụng.

Trong kì này, chúng ta sẽ đi sâu vào tìm hiểu cụ thể về cách các hệ thống lớn áp dụng Rate Limiting; cách áp dụng Rate Limiting để bảo vệ hệ thống của chúng ta nhé!

Continue reading Các hệ thống lớn sử dụng Rate Limiting để chống DDOS, hạn chế spam, bảo vệ hệ thống như thế nào? – Phần 2

Các hệ thống lớn sử dụng Rate Limiting để chống DDOS, hạn chế spam, bảo vệ hệ thống như thế nào? – Phần 1

Hôm nay, mình sẽ giới thiệu các bạn 1 kĩ thuật rất đơn giản nhưng cực kì hay ho:

  • Kĩ thuật này được 69.96% các hệ thống từ lớn đến nhỏ như Google, Facebook, LinkedIn, Youtube áp dụng
  • Kĩ thuật này giúp chúng ta ngăn chặn DDOS, chống spam, giữ cho hệ thống hoạt động trơn tru.

Thế nhưng, chúng ta ít người biết đến “người hùng”  thầm lặng này. Kĩ thuật này có tên là Rate Limiting.

Continue reading Các hệ thống lớn sử dụng Rate Limiting để chống DDOS, hạn chế spam, bảo vệ hệ thống như thế nào? – Phần 1

Lightning Talk Kì 31- 5 thái độ nên có của lập trình viên thành công

Các bạn ham học hỏi có thể subscribe bot tại: bot.codergangvn.com nha

Kì này, mình chia sẻ về 5 thái độ mà một lập trình viên nên có đề thành công và phát triển trong ngành nha:

  1. Không sợ sai lầm, thất bại
  2. Khiêm tốn
  3. Đừng quá coi trọng công nghệ
  4. Có tinh thần trách nhiệm cao
  5. Tò mò, cầu tiến, ham học hỏi

Channel Tôi Đi Code Dạo là nơi mình chia sẻ những kiến thức, kinh nghiệm về ngành lập trình mà mình đạt được trong quá trình làm việc. Những kiến thức này sẽ biến các bạn từ một coder trở thành developer – lập trình viên thứ thiệt.

Nhớ ghé thăm và subscrible channel để xem clip mới vào 8H TỐI T3 VÀ T6 hàng tuần nha!

Lightning Talk Kì 30 – Làm sao rèn luyện tư duy lập trình

Do có nhiều bạn hỏi nên hôm nay Code Dạo chia sẻ 4 lời khuyên để rèn luyện tư duy lập trình nha:

  1. Học kĩ căn bản: https://toidicodedao.com/2017/06/06/dung-cong-nghe-hieu-cong-nghe
  2. Làm nhiều bài tập về thuật toán. 2 cuốn sách nên đọc là Cracking The Coding Interview và Algorithms, 4th Edition by Robert Sedgewick
  3. Làm ra sản phẩm: https://toidicodedao.com/2017/01/19/code-pet-project
  4. Tìm hiểu những thứ mới mẻ

Bài viết liên quan: Làm sao rèn luyện tư duy lập trình

Channel Tôi Đi Code Dạo là nơi mình chia sẻ những kiến thức, kinh nghiệm về ngành lập trình mà mình đạt được trong quá trình làm việc. Những kiến thức này sẽ biến các bạn từ một coder trở thành developer – lập trình viên thứ thiệt.

Nhớ ghé thăm và subscrible channel để xem clip mới vào 8H TỐI T3 VÀ T6 hàng tuần nha!

Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại

Từ trước đến nay, với các bạn muốn theo ngành IT, mình đều có lời khuyên là:

Kiến thức trong ngành thay đổi rất nhanh, các công nghệ rất dễ trở nên lạc hậu, lỗi thời. Do vậy, để theo đuổi ngành này, chúng ta phải chịu khó tự học, tự làm mới bản thân.

Hôm nọ, mình có đọc mẩu truyện tranh ngắn sau, về một cuốn sách khá nổi tiếng trong ngành – Working Effectively with Legacy Code

Nguồn: commitstrip.com/en/2019/03/13/like-a-good-wine

Mình chợt nhớ ra/ngộ ra rằng kiến thức công nghệ trong ngành IT cũng có 2 loại:

  • Loại thứ nhất càng để lâu càng cũ, lạc hậu, trở nên vô dụng
  • Loại thứ hai để lâu tận 10 năm, 20 năm cũng chả sao, thậm chí càng ngày càng có giá

Loại thứ 2 là những kiến thức gì vậy, các bạn xem sẽ biết nhé! (Bật mí nhỏ là không phải chỉ có thuật toán như mấy ông thầy trong trường hay nói đâu!

Continue reading Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại