Tag Archives: thuật toán

[Ngẫm] Người ta không đánh giá bạn qua kĩ năng, mà đánh giá theo thành tựu

Mấy hôm nay, trong 1 lần ngồi lai rai nhậu nhẹt, chém gió với mấy ông bạn, tụi mình có bàn đến một chủ đề khá vui:

Làm sao biết đánh giá được trình độ của một ông developer? Làm sao biết ổng giỏi hay thành công?

Các anh em mỗi người nói 1 kiểu:

  • Lương cao, title khủng (Manager, Director) là dev thành công
  • Vào được các công ty lớn, đầu vào khó (như Google, Netflix, Facebook..) là dev giỏi
  • Xây dựng được 1 hệ thống lớn, 1 product xịn … là dev giỏi
  • Có tiếng nói, được nhiều anh em trong ngành biết và nể… là dev thành công

Hmm, nghĩ lại thì cũng thấy có phần đúng. Mà lạ nhỉ, không ông nào bảo dev giỏi là phải code giỏi, phải giỏi toán, phải thuật toán giỏi cả…

Nghe nói mấy cái đấy quan trọng lắm cơ mà! Tại sao lạ vậy nhỉ? Các bạn đọc bài này sẽ rõ nhé.

Continue reading [Ngẫm] Người ta không đánh giá bạn qua kĩ năng, mà đánh giá theo thành tựu

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

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

Những lý do bạn rớt phỏng vấn… mà các công ty không nói cho bạn

Dạo gần đây, khi tư vấn, mình thấy có vài bạn cũng có khả năng, nhưng mãi không dám đi phỏng vấn xin thực tập vì … sợ rớt. Cũng có 1 số bạn đã đi phỏng vấn nhưng … rớt nhiều lần nên buồn, lên kể lể tâm sự với mình.

Thật ra, rớt phỏng vấn là chuyện … bình thường, ai hẳn cũng có lần trải nghiệm rồi! Quan trọng là mình biết được gì, học được gì sau khi đi phỏng vấn.

Tuy nhiên, không phải công ty nào cũng cho bạn feedback, lý do tại sao công ty không tuyển bạn. Do vậy, trong bài này, mình sẽ chia sẻ một số lý do các bạn … rớt phỏng vấn, để bà con xem và rút kinh nghiệm nhé!

Continue reading Những lý do bạn rớt phỏng vấn… mà các công ty không nói cho bạn

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!