19/09/2018, 14:52

Top 10 “đấu trường” code hot nhất hiện nay

Một trong những cách tuyệt vời để nâng cao kỹ năng code của bạn là giải những bài toán lập trình hóc búa. Giải quyết các bài toán và câu đố khác nhau giúp bạn xử lý vấn đề tốt hơn, hiểu sự phức tạp của các ngôn ngữ lập trình, chuẩn bị cho các cuộc phỏng vấn xin làm, tìm hiểu các thuật ...

Một trong những cách tuyệt vời để nâng cao kỹ năng code của bạn là giải những bài toán lập trình hóc búa. Giải quyết các bài toán và câu đố khác nhau giúp bạn xử lý vấn đề tốt hơn, hiểu sự phức tạp của các ngôn ngữ lập trình, chuẩn bị cho các cuộc phỏng vấn xin làm, tìm hiểu các thuật toán mới và hơn thế nữa.

Dưới đây là danh sách một số trang web tổ chức các sân chơi cho giới lập trình cùng một số thông tin cơ bản.

1. TopCoder

TopCoder là một trong những “đấu trường” online đầu tiên dành cho các lập trình viên có thể cạnh tranh trực tiếp với nhau. Nó đưa ra danh sách các thử thách về thuật toán từ trước đến nay, bạn có thể thực hiện thử thách đó trực tuyến bằng code editor của họ. Những trận đấu đơn theo thể thức loại vòng tròn được tổ chức vài lần mỗi tháng tại một thời điểm cụ thể, tại đó các coder cạnh tranh với nhau để giải quyết những thử thách nhanh nhất với điểm số cao nhất.

Các user được xếp thứ hạng cao trên TopCoder là những lập trình viên rất giỏi và thường xuyên tham gia nhiều cuộc thi lập trình. Người được xếp hạng cao nhất sẽ được sở hữu blog riêng của mình với tên “ALGORITHMS WEEKLY by PETR MITRICHEV”, nơi họ có thể viết về các cuộc thi code, các thuật toán, toán học và bất cứ thứ gì họ thích.

2. Coderbyte

Coderbyte cung cấp hơn 200 thử thách code và bạn có thể sử dụng 1 trong 10 ngôn ngữ lập trình để giải quyết nó (xem ví dụ này). Có nhiều cấp độ thử thách khác nhau từ dễ (tìm từ dài nhất trong một chuỗi) đến khó (print tập hợp khớp với nhau tối đa của một đồ thị).

Họ cũng cung cấp một số bài tổng hợp hướng dẫn thuật toán, video giới thiệu và các khóa học chuẩn bị trước phỏng vấn. Không giống như HackerRank và các trang web tương tự khác, bạn có thể xem đáp án mà các user khác đưa ra cho các thử thách và cả cách giải chính thức do Coderbyte đăng tải.

3. Project Euler

Project Euler cung cấp một loạt các thử thách trong lĩnh vực khoa học máy tính và toán học. Những thử thách thường liên quan đến việc viết một chương trình nhỏ để tìm ra đáp án cho một công thức toán học hay phương trình phức tạp, chẳng hạn như tìm tổng của các số đứng trước một số trong một chuỗi.

Tuy nhiên có một điểm hạn chế là bạn không thể giải trực tiếp code trên trang web, bạn cần phải giải trên máy tính của mình và sau đó upload bài giải lên trang web của họ.

4. HackerRank

HackerRank cung cấp những thử thách trong các lĩnh vực Algorithms, Mathematics, SQL, Functional Programming, AI, và nhiều cái khác. Bạn có thể giải quyết tất cả các thử thách trực tuyến (hãy xem ví dụ này). Họ cung cấp các diễn đàn trao đổi và bản xếp hạng trong mỗi thử thách, và hầu hết các thách thức đi kèm với một bài giải thích thêm và hướng dẫn cách tiếp cận để giải quyết vấn đề. Ngoài các bài như vậy, bạn không thể xem các giải pháp của người khác trên HackerRank.

HackerRank cũng cung cấp các cơ hội việc làm cho các user thông qua hình thức giải quyết các vấn đề về lập trình từ các công ty tài trợ.

5. CodeChef

CodeChef là một “đấu trường” do người Ấn Độ xây dựng, cung cấp hàng trăm thử thách. Bạn có thể viết code trong editor trực tuyến của họ và xem thêm bộ sưu tập các thử thách được phân loại theo các mức độ khác nhau tùy thuộc vào từng mức độ kỹ năng (hãy xem ví dụ này). Họ có một cộng đồng lớn các lập trình viên đóng góp vào diễn đàn, viết bài hướng dẫn và tham gia vào các cuộc thi code của CodeChef.

6. CodeEval

CodeEval tương tự như HackerRank, CodeEval đưa ra các thử thách từ các công ty tài trợ, điều đó có thể giúp bạn có được công việc nếu bạn giải quyết chúng tốt. Các công ty có thể tạo ra thử thách và tổ chức các cuộc tuyển dụng các developer mới. Bạn có thể xem danh sách các thử thách hiện tại ở đây.

7. Codewars

Codewars phần lớn là các thử thách về code do cộng đồng của họ đưa ra và chỉnh sửa. Bạn có thể giải quyết những thử thách này trực tuyến trong editor của họ bằng nhiều ngôn ngữ. Bạn có thể xem các thảo luận cho từng thử thách cũng như các giải pháp của những người tham gia khác.

8. LeetCode

LeetCode là một Online Judge phổ biến cung cấp hơn 190 thử thách có thể giúp bạn chuẩn bị cho các buổi phỏng vấn về kỹ thuật. Bạn có thể sử dụng 1 trong 9 ngôn ngữ lập trình để giải quyết các thử thách được đặt ra. Bạn không thể xem các giải pháp của những người khác nhưng bạn được cung cấp số liệu thống kê các giải pháp như đánh giá tốc độ code ran của bạn so với những người khác.

Họ cũng có một phần Mock Interview đặc biệt dành cho việc chuẩn bị phỏng vấn xin việc, bên cạnh việc họ tổ chức các cuộc thi viết code LeetCode còn có mục dành cho các bài báo chuyên sâu giúp bạn hiểu rõ hơn về một số chuyên đề nhất định.

9. SPOJ

Sphere Online Judge (SPOJ) là một web trực tuyến cung cấp hơn 20k thử thách code. Bạn có thể gửi code của bạn vào editor trực tuyến của họ. SPOJ cũng tổ chức các cuộc thi riêng của mình và có một khu vực dành cho các user thảo luận về những thử thách code. Họ hiện không cung cấp bất kỳ giải pháp chính thức hoặc các bài viết như một số trang web khác làm.

10. CodinGame

CodinGame hơi khác một chút so với các trang web khác, thay vì chỉ đơn thuần là giải quyết những thử thách code được đưa ra, bạn tham gia viết code cho game mà bạn trực tiếp chơi. Bạn có thể xem một danh sách các game được trang web cung cấp chính thức ở đây và thêm ví dụ ở đây. Mỗi game sẽ đi kèm một bản mô tả vấn đề, test cases và 1 editor, với CodinGame bạn có thể viết code bằng 1 trong hơn 20 ngôn ngữ lập trình.

Mặc dù trang web này khác với các trang web điển hình đã được đề cập ở trên nhưng nó vẫn được cộng đồng lập trình viên yêu thích thử thách và tham gia các cuộc thi đón nhận nồng nhiệt.

Danh sách này dựa trên những trải nghiệm của bản thâ tôi khi tham gia các “đấu trường”, một số thông tin được tìm kiếm trên Google, các bài viết của Quora và một số bài viết khác. Tôi cũng thường xuyên tham gia một số diễn đàn và website như r/learnprogramming để xem trang web nào thường được người khác khuyên dùng.

Techtalk via freeCodecamp

0