Yêu thì cần phải nói, cũng như đói cần phải ăn, muốn giỏi lập trình thì nên biết về thuật toán, đơn giản thế thôi các bạn ạ! Bài viết này gửi đến các bạn 5 trang web, nguồn học thuật toán hữu ích để luyện trong lúc hơi rảnh rỗi như này.
Tiêu chí mình sắp xếp trang web đi từ lý thuyết đến thực hành
Exercism.io
Exercism.io là bước khởi đầu để bạn học thuật toán, trang không chuyên về thuật toán nhưng chuyên về cách dùng ngôn ngữ lập trình. Đây là một nguồn học thuật toán khá thú vị để bạn học thêm một ngôn ngữ mới. Bạn cũng có thể vừa làm vừa xem bài giải của người khác nhưng hãy vững tâm không để “sách giải” làm sa ngã nhé
Sau khi thành thạo về ngôn ngữ lập trình thì mình đến với muc tiêu chính của bải viết này, học thuật toán.
Geekforgeeks
Giới thiệu với các bạn trang web Geekforgeeks chuyên về thuật toán đây, trong đây có ty tỷ bài tập. Không chỉ có bài tập để luyện mà mỗi bài tập lại gồm nhiều cách giải khác nhau, đi kèm với độ phức tạp của mỗi người giải, tuy rất hay và bổ ích nhưng bạn hãy tỉnh táo, đừng bơi trong đây nhé! Có một điểm trừ nhỏ là bài tập không phân loại nên bạn sẽ phải chịu khó tìm kiếm bài tập phù hợp với mục tiêu của mình.
Bên cạnh đó, cũng có một trang để bạn vừa học lý thuyết, vừa thực hành về thuật toán, nhưng theo mình đánh giá thì luyên trang này sẽ giúp bạn “lên cơ” về thuật toán hơn.
Leetcode
Leetcode cũng như Geekforgeek vậy, nhưng có ưu điểm hơm là được phân hóa rõ ràng về mức đọ, có 3 mức độ khó dễ khác nhau. Có chuyện ngộ nghĩnh, tuy là easy nhưng lâu lâu cũng gặp phải bài khó nhai lắm :))
Trang web này cũng được những ông lớn công nghệ lựa chọn để test trình độ ứng viên, chịu khó làm những bài tập trong này biết đâu được khi apply, bạn trúng tủ.
Trang web này cũng có một điểm cộng là nó đo performance/runtime code của bạn, rồi so sánh với người khác, đánh giá xem code của bạn có optimize được không hay chưa tối ưu chỗ nào. Tính ra cứ như đường đua ấy nhỉ, việc so sánh này có thể lúc đầu bạn sẽ cảm thấy hơi khó chịu, nhưng mình thấy nó cũng có lợi lắm, giúp mình yếu chỗ nào để cải thiện hơn, và “chạy nhanh hơn”.
Học hành thì 3 trang web trên đã giải quyết cho các bạn, nhưng biết đâu được một ngày các bạn hết hứng không học nữa thì trang web tiếp theo sẽ giúp nhắc nhở các bạn luyện tiếp.
Daily Coding Problem
Tên gọi Daily Coding Problem cũng đã miêu tả đầy đủ chức năng của trang web này rồi. Khác với những trang trên, trang này không có danh sách bài tập, bạn đăng kí email và mỗi ngày trang web sẽ gửi bạn 1 bài, nên dù bạn có lỡ lười thì bạn cũng không trốn đi được :))). Khi bạn dùng gói premium thì sẽ được gửi kèm lời giải.
Hackerrank
Trùm cuối xuất hiện đây, lý do mình để Hackerrank cuối cùng là vì nơi đây bạn có thể tìm kiếm nhà tuyển dụng mơ ước. Trang này chắc không ai mà không biết nhỉ, từ junior cho đến senior, từ developer cho đến tuyển dụng.
Trang này cũng chia mức đô easy/medium/hard. Có cái rất tiện của trang này đó là bạn viết code, cho chạy trực tiếp và xem kết quả được luôn, nếu giải không được, không biết fix sao thì có mục dicussion, bạn vào đó xem lời giải. Trang này cũng được các nhà tuyển dụng lấy làm công cụ test trình độ ứng viên đó!
Thế là mình đã đi qua 5 trang web giúp các bạn luyện thuật toán. Đây là source mình hay dùng, các bạn có trang nào hay và hữu ích thì góp vui cùng TopDev tụi mình nha!
Có thể bạn quan tâm: