Trải nghiệm lần đầu tham gia Programming Competition

Tuần vừa qua mình có khá nhiều việc cần làm nên cũng gọi là có tí căng thằng. Vậy nên mình cùng với mấy anh em trong câu lạc bộ nhân dịp ngày cuối tuần có đăng ký tham gia thử một cuộc thi thuật toán do công ty out-source Netcompany tổ chức.

Trải nghiệm lần đầu tham gia Programming Competition
countdown = "3 days"
day = int(countdown.split(" ")[0])
while (day > 0):
	print("DEADLINE!!! ⚠")
    day -= 1

Câu lệnh ở trên thể hiện ngắn gọn, súc tích những gì đã trải qua suốt một tuần vừa rồi của mình. Tuần vừa qua mình có khá nhiều việc cần làm nên cũng gọi là có tí căng thằng. Vậy nên mình cùng với mấy anh em trong câu lạc bộ nhân dịp ngày cuối tuần có đăng ký tham gia thử một cuộc thi thuật toán do công ty out-source Netcompany tổ chức.

Team mình khi đăng ký thi mục đích là "vui là chính" vì mấy đứa đa phần là sinh viên năm nhất chưa có kinh nghiệm nhưng đó chỉ thấy mấy cuộc thi kiểu này trên youtube thôi nên cũng muốn trải nghiệm xem sao.

Vậy nên hôm nay mình cũng muốn chia sẻ với các bạn về một trong những cái "lần đầu" này của mình.


TRAINING TRƯỚC CUỘC THI

Không biết là do Netcompany có mối quan hệ mật thiết với mình hay sao nhưng mà giai đoạn trước cuộc thi team mình được chăm sóc rất chu đáo.

Mỗi ngày tụi mình được một thầy trong trước giao bài tập và gửi feedback đều đều về những gì tụi mình nên cải thiện và trau dồi để có được một thành tích tốt trong cuộc thi.

Mà khổ nổi team tụi mình 5 thằng thì hết 5 thằng là đi thi để tấu hài rồi nên thầy giao bài 3 buổi thì tui mình làm đúng một buổi là nghiêm túc còn 2 buổi còn lại là ngồi viết mấy cái hàm xàm xàm so coi đứa nào nhanh hơn và ngắn hơn. 😅

Để thuận lợi cho việc code và debug thì tụi mình sử dụng một IDE online tên là repl.it.

Vì cảm thấy team này không có tiềm năng đoạt giải nhưng có tiềm năng gây hài nên tụi mình cũng đặt tên trong danh sách thi là Code Clowns.

NGÀY THI

Hôm tụi mình thi là thứ bảy và để có thể kịp có mặt trước giờ thi thì tụi mình phải dậy từ rất sớm, cỡ 7h là phải có mặt ở trường để check-in. Sau đó là khởi hành đến nhà văn hóa sinh viên trong làng đại học ở Thủ Đức.

Programming competition lần này thì có khoảng 20 team đến từ nhiều trường đại học, nhưng mà vì đây là cuộc thi không mang nặng tính học thuật nên hầu hết các đội thi đấu với tinh thần rất thoải mái.

5 chú hề đến từ RMIT

Có một điều mình phải công nhận là khâu tổ chức và setup của Netcompany Việt Nam khá là chuyên nghiệp. Từ lúc bọn mình vào check-in và setup máy thì đều có các anh chị staff hỗ trợ nhiệt tình. Đồ ăn cũng khá là đa dạng nên các đội khoogn lo bị đói. Nhưng có một điểm hơi chuối của Netcompany là bảo mật của cái network 😀 (Chắc là do thời gian gấp rút nên họ không kịp chuẩn bị).

Để cụ thể thêm thì do tụi mình đến địa điểm thi đấu khá là sớm, cỡ 45 phút trước giờ thi lận nên cả đám có ngồi vọc 1 chút.

Mạng ở netcompany họ chặn Hackerrank vì đề lạ họ lấy trên nền tảng coding này. Nhưng mà chỉ trong một nốt nhạc là tụi mình đã lách qua được bằng một trick rất đơn giản là sử dụng WRAP của Cloudflare. Nôm na thì WRAP sẻ đổi DNS của bạn sang một DNS cộng đồng nhanh nhất được cung cấp bởi Cloudflare là 1.1.1.1.

Introducing WARP for Desktop and Cloudflare for Teams
Starting today Cloudflare WARP is available on Windows, macOS, iOS and Android. Warp clients can be enrolled in Cloudflare for Teams organizations to extend security protection to remote workers.

Tiếp theo thì khi mà tụi mình gọi lệnh ipconfig để truy cập vào mạng lưới mạng của Netcompany qua default gateway và đăng nhập thử bằng tài khoản mặc định khi modem được setup (thường tên đăng nhập sẽ là admin và mật khẩu là admin hoặc 12345). Vô tình thì nó cho tụi mình vào thẳng trang quản lý mạng với quyền admin luôn 🤣

Lúc tụi mình làm xong có mấy anh staff còn lại hốt hoảng kêu thoát ra đừng có phá nữa cơ :)). Thấy vui vui nên mình cũng có thử kết nối với telnet và bật wireshark lên vọc mà chưa kịp làm gì thì phải bắt đầu thi rồi.

Thôi mấy trò nghịch ngợm trước giờ thi như vậy đủ rồi, giờ thì thi thôi.

THI!!!

Vì cuộc thì này không có hạn chế và quy định chặt chẽ về máy móc và kỹ thuật nên tụi mình được toàn quyền sử dụng mạng. Có tổng cộng là 25 câu hỏi và phải nộp bài trên máy tính mà ban tổ chức cung cấp nên team tụi mình setup codeshare và reptl.io để tiện cho việc trao đổi. Cách tụi mình teamwork là sẽ có 1 thành viên copy đề từ máy ban tổ chức và gửi lên codeshare. Thành viên nào làm câu nào sẽ báo cho những thành viên còn lại và note lại trên codeshare. Bằng cách đó cách đó nếu các thành viên cần sự giúp đỡ thì sẽ báo và note lại đễ sau có gì dễ kiểm tra.

Ở giai đoạn đầu của cuộc thi team tụi mình có tiến triển khá tốt và gáy khá to tại tụi mình cũng hi vọng sẽ đạt được giải nhất khi thấy có triển vọng 😃 nhưng mà về sau các câu hỏi càng ngày càng kho nên tụi mình cũng bị chững lại và phải đành nhìn các team khác dẫn trước. Lúc đầu tụi mình có một quãng giữ ở top 1, sau là top 3 rồi cuối cùng là top 6 toàn cục chỉ thua mỗi đội top 5 một điểm.

KẾT QUẢ

Thật ra thì kết quả của cuộc thi không quá quan trọng vì đây không phải là cuộc thi học thuật và phần thưởng cho nhà chiến thắng cũng không quá to lớn để các đội tiếc nuối. Nhưng sau cuộc thi thì mình nhận ra được rất nhiều thứ như là:

  • Làm việc nhóm lúc nào cũng tốt hơn làm một mình: Tụi mình khi học ở RMIT sẽ được học về mạng mẽo, xây dựng ứng dụng, kiến trúc hệ thống và kỹ năng mềm nhiều hơn là thuật toán nên khi đi thi tụi mình không quá đề cao kết quả. Tuy nhiên việc được top 6 không phải nhờ tụi mình giỏi mà nhờ tụi mình cùng làm việc.
  • Cách giải quyết vấn đề tốt nhất là cách đơn giản nhất: Ở những giai đoạn cuối của cuộc thi, khi mà hầu hết các câu trả lời còn lại là những câu tụi mình không trả lời được hoặc không qua được một số test case. Lúc đó tụi mình 5 đứa ngồi chung với nhau để "bruteforce". Gọi là bruteforce nghe cho sang chảnh chứ thật ra là tụi mình so sánh nếu input nhập vào là test case đó thì sẽ return một kết quả chay do tụi mình đoán 😎. Nghe có vẻ hơi gian manh nhưng mà tụi mình cũng giải quyết được 3 câu trên 25 câu bằng cách này thì phải.
def algorithm(input : str) -> str:
# Hardcode kết quả
	if (input == "aabb"):
    	return "AAbb"
# Triển khai thuật toán...
Ví dụ cho phương pháp tụi mình làm
  • Kỹ năng Google đỉnh cao là một lợi thế: Phần này thì khỏi nói chắc các bạn cũng hiểu tại sao kỹ năng này là thượng thừa. Chung quy thì tụi mình 40 điểm mà hết 20 điểm chắc nhờ kỹ năng trời ban này.

Và đó là trải nghiệm lần đầu mình có cơ hội được tham gia một cuộc thi coding. Đúng như ông cha ta nói thì lần đầu lúc nào cũng là lần sướng nhất, mình nghĩ nếu có thể tham gia thêm 1 lần nữa thì cảm xúc của mình cũng sẽ không như lần thi này.

Subscribe to Tin Chung's Blog

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe