[Training] Những “đấu trường” dành cho lập trình viên
Bài đăng này đã không được cập nhật trong 6 năm
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.
Còn cách nào tốt hơn để "thử những điều táo bạo" là tham gia những cuộc thi với các lập trình viên khác trong một môi trường cạnh tranh? Bạn có lẽ sẽ thất bại, nhưng chẳng sao cả. Chính bản thân việc tham gia này sẽ dạy cho bạn rất nhiều kỹ năng và kỹ thuật mới. Cùng với một suy nghĩ đúng đắn để cho việc lập trình không còn bị căng thẳng và áp lực, bạn sẽ không có gì để sợ hãi cả.
TRƯỚC GIỜ G
Trước bất cứ một cuộc thi nào, việc chuẩn bị những kiến thức, kỹ năng là vô cùng cần thiết. Vậy nên hãy tìm cho mình 1 phòng tập để thử sức với các bài tập trước khi vào võ đài nhé.
1. CodeFights
CodeFights do một công ty công nghệ của Mỹ áp dụng cơ học trò chơi vào các thách thức trong lập trình máy tính trực tuyến cho cả mục đích giảng dạy lẫn tuyển dụng. Vào tháng 11 năm 2016, CodeFights báo cáo rằng nó có 500.000 người dùng đăng ký, phần lớn là ở Hoa Kỳ. CodeFights cung cấp các bài tập trực quan và thú vị nhất để thực hành lập trình. Nó rất hữu ích để chuẩn bị cho các cuộc phỏng vấn kỹ thuật và nâng cao kỹ năng coding của bạn.
2. 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.
3. 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.
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.
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.
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ọ.
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ợ.
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.
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.
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.
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.
VÕ ĐÀI
Sau những ngày rèn luyện vất vả, vượt qua biết bao thử thách. Giờ đây đã đến lúc tập nhóm và bước vào những đấu trường thực thụ.
CODEWAR
CODEWAR là một trong những cuộc thi về lập trình phần mềm với quy mô lớn do Framgia Việt Nam tổ chức, giành cho các lập trình viên với những thử thách đầy cam go và quyết liệt, mở ra các cơ hội tuyệt vời để họ cùng đấu trí và thỏa sức đam mê. Sau 2 mùa tranh tài tại CODEWAR 2016 và CODEWAR 2017 – với chiến thắng đến từ chính các bạn sinh viên – đã khép lại với vô vàn ẩn số vẫn chưa được giải mã. Mong rằng các lập trình viên sẽ chào đón những mùa CODEWAR tiếp theo để tiếp tục chinh phục những đỉnh cao mới trong thế giới IT cùng Framgia Vietnam nhé.
CTF
CTF (Capture the Flag) là một cuộc thi kiến thức chuyên sâu về bảo mật máy tính, được tổ chức theo mô hình trò chơi chiến tranh mạng, tập trung vào hai kỹ năng tấn công và phòng thủ mạng máy tính của người chơi.
Trong một cuộc thi CTF, các đội tham gia CTF sẽ được cấp một máy chủ (hoặc một mạng máy chủ) đã cài đặt sẵn nhiều chương trình chứa các lỗ hổng bảo mật. Nhiệm vụ của đội chơi là tìm ra các lỗ hổng đó, tấn công các máy chủ của các đội khác để ghi điểm, đồng thời phải nhanh chóng vá các lỗ hổng trên máy chủ của đội nhà, để tránh bị tấn công bởi các đội khác.
CTF hấp dẫn và thu hút giới hacker, người làm bảo mật bởi lẽ các cuộc thi này phản ánh rất chân thật công việc hàng ngày và đòi hỏi người chơi phải có các kỹ năng của một hacker, người làm về bảo mật thực thụ. Muốn chiến thắng ở một cuộc thi CTF, người chơi không chỉ phải nhuần nhuyễn các kỹ năng phát hiện và khai thác lỗ hổng bảo mật, mà còn phải thật sự lành nghề trong việc bảo vệ sự an toàn và duy trì tính liên tục của hệ thống mạng trước các đợt tấn công dồn dập từ bên ngoài.
continue ...
Tham Khảo
- Code War Framgia
- Cuộc thi Code War Framgia 2017
- Top 10 “đấu trường” code hot nhất hiện nay
- Kiểm tra kỹ năng lập trình của bạn qua những cuộc thi trực tuyến
- Top Career Code Challenge 2017
http://sie.hust.edu.vn/top-career-code-challenge-2017-cuoc-thi-lap-trinh-quoc-te-truc-tuyen/ - Rèn luyện kỹ năng học và tự học hiệu quả
All rights reserved