Những bài tập lập trình hay nhất dành cho người mới bắt đầu: Thực hành lập trình từ dễ đến khó

Những bài tập lập trình hay nhất dành cho người mới bắt đầu: Thực hành lập trình từ dễ đến khó

Có một điều mà chẳng ai cảnh báo bạn cả. Bạn có thể xem hết các video hướng dẫn trong cả tháng trời, gật đầu đồng ý với mọi video, rồi sau đó mở một file trống và không biết phải gõ gì. Tôi đã từng trải qua điều đó. Hầu hết những người học lập trình đều vậy.

Cách giải quyết có vẻ nhàm chán nhưng hiệu quả: tự mình giải quyết các vấn đề nhỏ, ban đầu có thể sẽ không được tốt lắm. Vì vậy, hướng dẫn này được chia làm hai phần. Phần đầu tiên là một tuyển tập các bài toán lập trình hay nhất dành cho người mới bắt đầu (mười bài, độ khó từ dễ đến khó). Phần thứ hai bao gồm các trang web nơi bạn sẽ tìm thấy hàng ngàn bài toán khác sau khi đã hoàn thành các bài toán của tôi.

Bất kỳ ngôn ngữ lập trình nào cũng được. Các ví dụ của tôi sử dụng Python và một vài đoạn JavaScript, vì đó là nơi hầu hết mọi người bắt đầu. Hãy làm theo thứ tự nếu có thể. Mỗi bài toán đều khéo léo lồng ghép một ý tưởng mới.

Vì sao các bài tập lập trình giúp xây dựng kỹ năng lập trình thực tế?

Thử thách là gì? Một thử thách nhỏ với đáp án đúng rõ ràng. "Hãy chọn một từ, đọc ngược lại." "Đây là một danh sách các số, số nào lớn nhất?" Bạn không cần cài đặt bất cứ thứ gì hay chọn một framework. Bạn chỉ cần viết khoảng mười dòng.

Xem hướng dẫn nghĩa là bạn đang theo dõi quá trình suy nghĩ của người khác. Các bài toán lập trình thì đảo ngược điều đó, và sự khó chịu này lại hữu ích. Bạn đoán, chương trình bị lỗi, bạn nheo mắt nhìn lỗi, rồi lại thử. Làm như vậy trong vài tuần và một số thứ sẽ dần trở nên dễ dàng hơn:

  • Thành thạo cú pháp. Không còn phải tra cứu trên Google cách viết vòng lặp for đến lần thứ năm nữa.
  • Kỹ năng giải quyết vấn đề. Bạn bắt đầu chia nhỏ một nhiệm vụ mơ hồ thành các bước trước khi chạm vào bàn phím.
  • Tư duy logic. Một danh sách trống, một số nguyên âm, một từ chỉ có một chữ cái. Bạn bắt đầu mong đợi những điều đó.
  • Gỡ lỗi. Văn bản lỗi màu đỏ không còn gây cảm giác khó chịu nữa.
  • Sự tự tin. Mỗi bài toán được giải quyết là bằng chứng cho thấy bạn có thể tự mình viết chương trình.

Ai đó từng nói với tôi rằng lập trình có quy tắc 80/20 riêng, và đối với các bài toán dành cho người mới bắt đầu thì quy tắc này khá chính xác. Hầu hết chúng đều dựa trên năm thao tác cơ bản: vòng lặp, câu lệnh if/else, thao tác với chuỗi ký tự, đếm phần tử trong từ điển và duyệt mảng. Khi bạn thành thạo những thao tác này, nhiều bài toán "mới" hóa ra lại là những bài toán cũ được biến tấu lại.

Những bài toán lập trình hay nhất dành cho người mới bắt đầu

10 bài toán lập trình dễ dành cho người mới bắt đầu giải.

Không có cái nào trong số này là mới mẻ cả, và đó chính là điểm mấu chốt. Chúng xuất hiện trong hầu hết các khóa học dành cho người mới bắt đầu vì chúng hiệu quả. Năm cái đầu tiên chỉ cần vòng lặp, điều kiện và một chút thao tác với chuỗi hoặc danh sách, trong khi năm cái cuối cùng khiến bạn phải suy nghĩ về cấu trúc dữ liệu nào cần sử dụng trước khi gõ bất cứ thứ gì. Dù thế nào đi nữa, hãy cố gắng đừng tìm kiếm trên Google trong ít nhất hai mươi phút, ngay cả khi bạn cảm thấy điều đó vô ích.

Thử thách 1: FizzBuzz

Nhiệm vụ là in ra các số từ 1 đến 100, nhưng mọi bội số của ba sẽ hiển thị là "Fizz", mọi bội số của năm sẽ hiển thị là "Buzz", và các số là bội số của cả hai sẽ hiển thị là "FizzBuzz".

Tôi nhớ mình đã nghĩ rằng nó nghe có vẻ đơn giản đến mức gần như xúc phạm. Tuy nhiên, nó không đơn giản đến thế, đó là lý do tại sao các nhà tuyển dụng lại thích nó trong một thời gian dài. Những người đã đọc rất nhiều về lập trình nhưng lại viết rất ít thường gặp khó khăn ở các bước kiểm tra. Phiên bản của tôi bằng Python trông như thế này:

python for n in range(1, 101): if n % 15 == 0: print("FizzBuzz") elif n % 3 == 0: print("Fizz") elif n % 5 == 0: print("Buzz") else: print(n)

Sau khi chương trình của bạn hoạt động, hãy kéo dòng %15 xuống cuối, chạy chương trình và xem có bao nhiêu FizzBuzz còn sống sót. Kết quả: không còn cái nào.

Thử thách 2: Đảo ngược chuỗi

"Hello" đi vào, "olleh" đi ra.

Hầu như mọi ngôn ngữ lập trình đều có những cách viết tắt tương tự, ví dụ như `s[::-1]` trong Python hoặc `split("").reverse().join("")` trong JavaScript, và bạn có thể viết thử một lần để xem nó hoạt động. Sau đó, thành thật mà nói, tôi sẽ xóa nó đi và sử dụng phiên bản "nhàm chán" hơn với vòng lặp để thêm từng ký tự một. Đó là lúc bạn nhận ra rằng trong hầu hết các ngôn ngữ, chuỗi không thể được thay đổi tại chỗ, điều này gây nhầm lẫn cho nhiều người sau này nếu họ không được học điều đó ngay từ đầu.

Thử thách 3: Kiểm tra chuỗi đối xứng

Từ đối xứng (palindrome) là từ như "racecar" hay "noon" mà đọc giống nhau ở cả hai chiều, vì vậy hàm của bạn nên trả lời "có" cho những từ đó và "không" cho từ "hello".

Khi điều đó thành công, đây là thời điểm tốt để nâng cao kỹ năng lập trình của bạn bằng cách nhập chuỗi "A man, a plan, a canal: Panama", chuỗi này chỉ được chấp nhận sau khi bạn chuyển văn bản thành chữ thường và loại bỏ khoảng trắng và dấu chấm câu. Bạn có thể sử dụng lại đoạn mã đảo ngược chuỗi từ thử thách trước cho việc này, điều này thật tuyệt.

Thử thách 4: Dãy Fibonacci

Có lẽ bạn đã từng thấy dãy số này trước đây: 0, 1, 1, 2, 3, 5, 8, 13, trong đó mỗi số là tổng của hai số đứng trước nó. Hàm của bạn nên trả về n số đầu tiên trong dãy số đó.

Hai biến và một vòng lặp là đủ. Điều thú vị bắt đầu khi bạn viết lại nó bằng đệ quy, sao cho hàm tự gọi chính nó, và sau đó hỏi n = 35. Trên hầu hết các máy tính xách tay, bạn sẽ phải đợi một lúc, và việc tìm hiểu lý do tại sao điều đó xảy ra là một cái nhìn đầu tiên nhẹ nhàng về lập trình động. Đó là một trong những khoảnh khắc nhỏ kiểu "à, thì ra là vậy" mà bạn sẽ nhớ mãi.

Thử thách 5: Xoay một mảng

Cho một mảng và một số k, sau đó di chuyển mỗi phần tử k vị trí sang phải, với các phần tử ở cuối được đưa lên đầu. Với [1, 2, 3, 4, 5] và k = 2, bạn sẽ nhận được [4, 5, 1, 2, 3].

Hầu hết các lần thử đầu tiên đều thất bại khi k lớn hơn danh sách. Xoay năm phần tử đi 7 độ thực chất chỉ là xoay chúng đi 2 độ, điều này rất rõ ràng khi bạn nhìn thấy và không thể nhận ra cho đến lúc đó.

Nếu bạn vượt qua được năm bài đó mà không gặp quá nhiều khó khăn, thì xin chúc mừng. Những bài tiếp theo sẽ đòi hỏi nhiều hơn ở bạn.

Thử thách 6: Tìm số nguyên lớn nhất trong một mảng

Việc tìm số lớn nhất rất dễ nếu bạn được phép sử dụng hàm max(), nhưng bạn không làm vậy. Thay vào đó, hãy sử dụng vòng lặp, rồi tìm số lớn thứ hai mà không cần duyệt qua danh sách hai lần. Bây giờ bạn đang theo dõi hai giá trị và phải cẩn thận xem nên cập nhật giá trị nào trước.

Các số trùng lặp và số âm là những thứ tốt để kiểm thử, vì nhiều giải pháp ban đầu thường âm thầm thất bại khi gặp phải chúng.

Thử thách 7: Đếm nguyên âm trong câu

Đếm nguyên âm là bài khởi động. Bài tập chính là đếm từng nguyên âm riêng lẻ và trả về kết quả dạng {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0}.

Đối với nhiều người mới bắt đầu, đây là thời điểm mà từ điển (hoặc đối tượng trong JavaScript) trở nên dễ hiểu, và điều đó rất quan trọng, bởi vì đây có lẽ là cấu trúc dữ liệu mà bạn sẽ sử dụng nhiều nhất trong năm tới.

Thử thách 8: Kiểm tra đảo chữ

Các từ đảo chữ sử dụng chính xác các chữ cái giống nhau nhưng theo thứ tự khác nhau, ví dụ như "listen" và "silent", vì vậy bạn đang viết một hàm để kiểm tra xem hai chuỗi có đủ điều kiện để được gọi là từ đảo chữ hay không.

Tôi biết có hai cách hợp lý. Bạn có thể sắp xếp cả hai chuỗi và so sánh kết quả, hoặc bạn có thể đếm tần suất xuất hiện của mỗi chữ cái và so sánh các số liệu đó. Viết cả hai cách rồi tự hỏi cách nào tốn ít công sức hơn về cơ bản là bước đầu tiên để bạn suy nghĩ về hiệu quả.

Thử thách 9: Tổng hai

Với một danh sách như [2, 7, 11, 15] và mục tiêu là 9, bạn trả về vị trí của hai số có tổng bằng mục tiêu, ở đây là [0, 1].

Hầu hết mọi người bắt đầu với hai vòng lặp lồng nhau để thử mọi cặp số, và điều đó ổn với các danh sách ngắn nhưng sẽ nhanh chóng trở nên chậm. Cách tiếp cận nhanh hơn là lưu trữ các số bạn đã thấy trong một từ điển để bạn có thể tra cứu chúng ngay lập tức. Không phải ngẫu nhiên mà LeetCode đặt bài toán này lên đầu tiên, vì nó cho thấy rõ ràng tầm quan trọng của cấu trúc dữ liệu phù hợp.

Thử thách 10: Trò chơi đoán số

Ở đây, máy tính sẽ chọn một số bí mật từ 1 đến 100, bạn liên tục đoán, và máy tính sẽ thông báo "quá cao" hoặc "quá thấp" cho đến khi bạn đoán đúng, cùng với số lần thử bạn đã thực hiện.

Nó không hẳn là một câu đố lập trình đơn giản mà giống một ứng dụng nhỏ hơn, với đầu vào từ người dùng, một vòng lặp while và các số ngẫu nhiên. Sẽ có lúc ai đó gõ "chuối" thay vì một con số, vì vậy bạn cũng sẽ phải xử lý các đầu vào sai. Và không giống như những ứng dụng khác, đây là một ứng dụng mà bạn thực sự có thể đưa cho bạn bè chơi.

Những trang web tốt nhất cho các cuộc thi lập trình trực tuyến

Sau khi dùng hết mười cái của tôi, bạn sẽ muốn một nguồn cung cấp không giới hạn với tính năng tự động kiểm tra. Tất cả các trang web về thử thách lập trình trực tuyến đều làm được điều đó. Chỉ là cảm giác khi sử dụng chúng rất khác nhau.

Nền tảng Tốt nhất cho Định dạng Trị giá
Edabit Người mới bắt đầu hoàn toàn Các bài toán lập trình ngắn gọn trên trình duyệt Gói miễn phí
Codewars Thực hành được game hóa "Kata" được xếp hạng với các giải pháp từ cộng đồng. Miễn phí
Chủ nghĩa tập thể dục Học hỏi những thói quen tốt Các khóa học ngôn ngữ với người hướng dẫn trực tiếp (tùy chọn) Miễn phí
Trại mã miễn phí Học tập có cấu trúc Chương trình học tích hợp bài tập và chứng chỉ. Miễn phí
HackerRank Các lộ trình kỹ năng và chuẩn bị việc làm Các bài toán theo chủ đề có ghi chú độ khó Miễn phí cho người học
LeetCode Chuẩn bị phỏng vấn Các bài toán thuật toán được phân loại Dễ/Trung bình/Khó Gói miễn phí
CodeChef Hướng tới các cuộc thi Các lộ trình luyện tập cộng với các cuộc thi thường xuyên Gói miễn phí
Dự án Euler Những người yêu toán học Các câu đố nặng về toán học, chỉ nộp đáp án. Miễn phí
Sự ra đời của mã Niềm vui theo mùa Các câu đố hàng ngày dựa trên cốt truyện vào mỗi tháng 12 Miễn phí

Edabit

Nếu một người bạn hỏi tôi nên bắt đầu từ đâu, tôi sẽ khuyên dùng Edabit. Các bài toán ngắn, mọi thứ đều chạy trên trình duyệt và bạn còn tích lũy được điểm kinh nghiệm (XP). Edabit bao gồm Python, JavaScript, Java, C++ và một vài ngôn ngữ khác, và nhãn "rất dễ" thực sự có nghĩa là rất dễ.

Codewars

Codewars gọi các bài toán của mình là kata (một thuật ngữ võ thuật dùng để chỉ các bài tập). Chúng được xếp hạng từ 8 kyu, dễ nhất, đến 1 kyu. Điều thú vị nằm ở sau khi bạn nộp bài. Bạn sẽ được xem câu trả lời của tất cả những người chơi khác, và việc đặt mười dòng mã vụng về của bạn bên cạnh hai dòng mã mượt mà của người khác sẽ giúp bạn học hỏi được nhiều hơn hầu hết các bài hướng dẫn khác.

Chủ nghĩa tập thể dục

Exercism hoạt động như một tổ chức phi lợi nhuận và hoàn toàn miễn phí. Có các khóa học cho hơn 80 ngôn ngữ lập trình, và các cố vấn tình nguyện sẽ xem xét mã của bạn nếu bạn yêu cầu. Bạn có thể làm bài tập trực tiếp trên trình duyệt hoặc tải bài tập về máy tính của mình. Tôi khuyên bạn nên chọn phương án thứ hai, vì nó giúp bạn làm quen với Visual Studio Code và giao diện dòng lệnh.

Trại mã miễn phí

Đây không hẳn là một trang web luyện tập theo kiểu bài tập. Nó là một chương trình học hoàn chỉnh, nhưng được xây dựng từ hàng trăm bài tập lập trình nhỏ, nên rất phù hợp. Tuyệt vời nếu bạn thích sự bài bản: JavaScript, Python, thiết kế web đáp ứng và nhiều hơn nữa, với các dự án chứng chỉ ở cuối mỗi lộ trình.

HackerRank

HackerRank phân loại các bài toán theo kỹ năng (Python, SQL, cấu trúc dữ liệu, thuật toán) và cho bạn biết độ khó của từng bài cũng như số người đã giải được. Rất nhiều công ty sử dụng nền tảng này để sàng lọc ứng viên. Làm quen với giao diện ngay bây giờ sẽ giúp bạn tránh được nhiều căng thẳng sau này.

LeetCode

Đây là nơi chuẩn bị cho phỏng vấn. Các bài toán được gắn nhãn Dễ, Trung bình và Khó, và ngay cả "Dễ" cũng giả định bạn đã nắm vững những kiến thức cơ bản. Tôi khuyên bạn nên coi những bài tập lập trình ở đây như một mục tiêu bạn đang hướng tới, chứ không phải là điểm khởi đầu. Hãy quay lại khi tôi đã quen với việc làm bài tập này.

CodeChef

CodeChef ban đầu là một trang web lập trình thi đấu. Ngày nay, nó cũng có các khóa học thực hành dành cho người mới bắt đầu bên cạnh các cuộc thi thường xuyên, vì vậy nếu các cuộc thi tính giờ nghe có vẻ thú vị, đây là một nơi nhẹ nhàng để thử sức.

Dự án Euler

Các bài toán toán học cần lập trình để giải. Trang web không có trình soạn thảo. Bạn viết chương trình ở bất cứ đâu bạn muốn và chỉ cần nhập kết quả cuối cùng. Những người yêu toán học rất thích nó. Còn những người khác thì thường không mấy hứng thú.

Sự ra đời của mã

Vào tháng 12 hàng năm, bạn sẽ nhận được một câu đố gồm hai phần mỗi ngày, được liên kết với nhau bằng một câu chuyện vui nhộn. Gần đây, chương trình đã rút ngắn từ 25 ngày xuống còn 12 ngày và loại bỏ bảng xếp hạng toàn cầu, vì vậy hiện nay chủ yếu là các bảng xếp hạng riêng tư với bạn bè hoặc đồng nghiệp. Các câu đố cũ vẫn được giữ nguyên suốt cả năm, và kho lưu trữ là một thư viện luyện tập tuyệt vời.

Bạn cũng sẽ được nghe về Coderbyte, nơi kết hợp các bài tập thử thách với các khóa học phỏng vấn, và Topcoder, nơi thực sự dành cho các lập trình viên giàu kinh nghiệm.

Một lời cảnh báo. Nhiều danh sách cũ vẫn hướng dẫn bạn đến Google Code Jam và Kick Start. Google đã đóng cửa cả hai vào năm 2023, và chỉ còn lại kho lưu trữ các bài toán.

Những bài toán lập trình hay nhất dành cho người mới bắt đầu

Làm thế nào để luyện tập các bài toán lập trình mà không bị kiệt sức

Đánh dấu trang mười trang web không làm bạn giỏi hơn. Thói quen mới làm được điều đó. Đây là những gì tôi sẽ làm:

  1. Hãy chọn một ngôn ngữ lập trình và gắn bó với nó. Python thường được chọn vì nó dễ đọc và gần giống tiếng Anh. JavaScript thì hợp lý nếu bạn muốn xây dựng trang web.
  2. Hãy cài đặt một trình soạn thảo mã thực sự. Trình soạn thảo trên trình duyệt cũng ổn trong tuần đầu tiên. Việc cài đặt Visual Studio Code sớm sẽ giúp bạn học cách chạy tệp, đọc lỗi trong cửa sổ dòng lệnh và sử dụng trình gỡ lỗi.
  3. Giải quyết từ một đến ba bài toán mỗi ngày. Thực hành lập trình hàng ngày với liều lượng nhỏ sẽ hiệu quả hơn việc nhồi nhét kiến thức suốt sáu tiếng đồng hồ vào Chủ nhật. Các mẫu lập trình sẽ được ghi nhớ dần giữa các buổi học, và một mục tiêu nhỏ sẽ khó bị bỏ qua hơn.
  4. Sau khi hoàn thành bài tập, hãy đọc thêm các lời giải khác. Trên Codewars hoặc Exercism, hãy xem hai hoặc ba câu trả lời khác. Bạn sẽ học được những cách làm tốt nhất và một số thủ thuật thực sự thông minh đáng để học hỏi.
  5. Hãy xem lại những bài toán cũ. Một tuần sau, hãy làm lại một bài toán như vậy từ trí nhớ. Nếu bạn không làm được, nghĩa là bạn đã học thuộc lòng thay vì hiểu nó.
  6. Hãy chuyển sang các dự án nhỏ hơn. Khi đã giải quyết được khoảng 30 đến 50 vấn đề, hãy xây dựng một thứ gì đó: một danh sách việc cần làm, một ứng dụng thời tiết dựa trên API miễn phí, một trò chơi phiêu lưu bằng văn bản. Đó là lúc các kỹ năng riêng lẻ bắt đầu phối hợp với nhau.

Nên làm gì khi bạn gặp khó khăn trong một bài toán lập trình?

Bạn sẽ gặp bế tắc. Các lập trình viên cấp cao thường bị bế tắc ngay cả trước giờ ăn trưa. Họ có một quy trình để giải quyết vấn đề, vì vậy hãy học hỏi một quy trình từ đó:

  • Hãy diễn đạt lại vấn đề bằng lời lẽ của riêng bạn. Điều đáng ngạc nhiên là rất nhiều trường hợp "Tôi không thể giải quyết vấn đề này" thực chất là "Tôi đã hiểu sai vấn đề."
  • Hãy tự làm một ví dụ bằng tay. Sử dụng dữ liệu đầu vào nhỏ, bút và giấy, và ghi lại từng bước bạn thực hiện. Chúc mừng, đó chính là thuật toán của bạn.
  • Hãy viết mã giả trước. "Với mỗi số, nếu nó lớn hơn số lớn nhất hiện tại, hãy giữ nguyên." Ngôn ngữ đơn giản dễ sửa hơn so với mã.
  • Hãy in tất cả mọi thứ ra. Hầu hết các lỗi đều do một biến chứa giá trị khác với những gì bạn tưởng. Hãy in nó ra và tìm hiểu.
  • Hãy giải thích nó bằng lời nói. Trình bày từng dòng mã một, cho một người hoặc một con vịt cao su nghe. Lỗi phần mềm thường xuất hiện ở giữa câu nói.
  • Hãy sử dụng gợi ý theo từng bước. Nhiều nền tảng cung cấp gợi ý trước khi đưa ra câu trả lời đầy đủ. Hãy tận dụng gợi ý, rồi tiếp tục thử lại.

Dù bạn làm gì đi nữa, đừng sao chép lời giải, rồi xem nó được chấp nhận và bỏ qua. Tôi đã từng làm như vậy một thời gian và chẳng đi đến đâu cả. Nếu bạn đọc một câu trả lời, hãy đóng tab đó lại, đợi một giờ và tự mình xây dựng lại.

Các bài tập lập trình theo chủ đề tiền điện tử dành cho người mới bắt đầu về Blockchain

Có lẽ thanh toán bằng tiền điện tử hoặc blockchain là lý do khiến bạn muốn học lập trình ngay từ đầu. Vậy thì hãy thực hành giải quyết các bài toán thuộc lĩnh vực đó. Các nguyên tắc cơ bản là giống nhau (chuỗi ký tự, số nguyên, API), nhưng các bài toán lại giống với công việc kỹ thuật thực tế hơn nhiều. Bạn không cần phải hiểu các thuật toán đồng thuận cho bất kỳ bài toán nào trong số này.

  • Lấy giá tiền điện tử trực tiếp. Truy cập API giá tiền điện tử công khai miễn phí, in giá Bitcoin hiện tại và cập nhật mỗi phút. Xin chào, các yêu cầu HTTP và JSON.
  • Kiểm tra tính hợp lệ của định dạng địa chỉ ví. Kiểm tra xem một chuỗi có giống một địa chỉ hợp lệ hay không: đúng độ dài, đúng tiền tố, chỉ sử dụng các ký tự cho phép. Bài tập thực hành chuỗi rất hay, và là phần giới thiệu nhẹ nhàng về biểu thức chính quy.
  • Hãy xây dựng một công cụ chuyển đổi đơn vị. Chuyển đổi Satoshi sang BTC (1 BTC = 100.000.000 satoshi), wei sang ETH (1 ETH = 10¹⁸ wei). Bạn sẽ nhanh chóng hiểu tại sao số thực và tiền tệ không tương thích với nhau, và tại sao các nhà phát triển lại giữ số tiền dưới dạng số nguyên.
  • Sử dụng thuật toán băm SHA-256 để băm một chuỗi ký tự. Băm một câu bằng thư viện chuẩn, thay đổi một chữ cái, rồi băm lại. Kết quả hoàn toàn khác nhau. Thuộc tính đó là một phần quan trọng giúp duy trì sự ổn định của blockchain.
  • Tạo một trang thanh toán đơn giản. Một trang sản phẩm với nút "Thanh toán bằng tiền điện tử" tạo hóa đơn thử nghiệm thông qua API của cổng thanh toán.

Yếu tố cuối cùng kết nối tất cả lại với nhau: một biểu mẫu, một lệnh gọi API, xử lý lỗi và hiển thị kết quả cho người dùng thực. Các cổng thanh toán như Plisio công bố API và tài liệu mà bạn có thể tích hợp vào cửa hàng thực hành, điều này làm cho bài tập dành cho người mới bắt đầu trông giống như một quá trình tích hợp thương mại điện tử thực tế.

Hãy bắt đầu thực hành lập trình của bạn với một bài toán ngay hôm nay!

Khi nghĩ lại điều gì thực sự giúp tôi vượt qua khó khăn khi mới bắt đầu, đó không phải là một bài toán khó huyền thoại nào cả. Những thử thách lập trình tốt nhất dành cho người mới bắt đầu hóa ra lại là những bài toán nhỏ nhàm chán mà tôi đã hoàn thành, thường là vào đêm khuya với tách trà nguội bên cạnh máy tính xách tay.

Vậy nên tối nay hãy mở trình soạn thảo và chạy thử FizzBuzz, kể cả đoạn mã xấu xí. Cứ tiếp tục làm theo danh sách của tôi chừng nào còn thấy thú vị, và khi không còn thú vị nữa, hãy chuyển sang trang web nào trong bảng trông thân thiện nhất. Hãy duy trì thói quen này đến mức bỏ qua nó sẽ cảm thấy hơi nực cười. Một tháng nữa, một số việc này sẽ trở nên gần như nhàm chán, và sự nhàm chán đó chính là cảm giác thực sự khi sở hữu kỹ năng lập trình từ bên trong.

Bất kỳ câu hỏi?

Thành thật mà nói? FizzBuzz, cũng giống như hầu hết mọi người. Nó chỉ yêu cầu một vòng lặp và một vài câu lệnh if, và bạn có thể giải thích nó trong một hơi, vậy mà nhiều người vẫn mắc lỗi về thứ tự kiểm tra trong lần thử đầu tiên. Đảo ngược chuỗi là một bước thứ hai khá hay.

Edabit là lựa chọn tôi sẽ giới thiệu cho người mới bắt đầu hoàn toàn, chủ yếu vì các bài toán ngắn và bạn không bao giờ phải cài đặt bất cứ thứ gì. Về sau, Codewars trở nên gây nghiện nhờ vào bảng xếp hạng và cách bạn có thể xem lời giải của mọi người. Exercism có người hướng dẫn miễn phí, điều này khá hiếm. freeCodeCamp phù hợp với những người thích một lộ trình có sẵn. LeetCode có thể để dành, vì ngay cả những bài toán Dễ của nó cũng ngầm đòi hỏi kiến thức cơ bản.

Tôi nghĩ Python là lựa chọn phù hợp nhất với hầu hết mọi người, một phần vì cú pháp của nó đơn giản, dễ hiểu và bạn có thể tập trung vào logic thay vì dấu ngoặc và dấu chấm phẩy. Nếu bạn đã biết mình muốn xây dựng website, JavaScript cũng là một lựa chọn hợp lý, vì hầu hết các trình duyệt đều hỗ trợ nó. Cả hai đều tốt cho các bài tập lập trình, và thành thật mà nói, việc kiên định với lựa chọn của mình quan trọng hơn chính bản thân lựa chọn đó.

Từ một đến ba bài tập mỗi ngày, và tôi muốn nói đó là mức tối đa chứ không phải mục tiêu khi bạn mới bắt đầu. Giải hai bài tập mỗi ngày trong một tháng sẽ giúp bạn học hỏi được nhiều hơn là giải ba mươi bài tập dồn vào một cuối tuần. Tôi khuyên bạn nên dành thời gian còn lại để thực sự hiểu từng lời giải và xem cách người khác tiếp cận vấn đề.

Điều kỳ lạ là chúng vẫn đơn giản, mặc dù bản thân các vấn đề không bao giờ trở nên dễ giải hơn. Điều thay đổi là bạn bắt đầu nhận thấy tần suất xuất hiện của một vài mẫu quen thuộc, chẳng hạn như vòng lặp, câu lệnh điều kiện, xử lý chuỗi, đếm bằng từ điển và duyệt qua mảng. Đến khoảng bài toán thứ bốn mươi, bạn sẽ tự nhủ "à, lại là một trong những dạng bài này nữa", và đó chính là sự thay đổi.

Hãy bắt đầu bằng cách viết lại bài toán bằng ngôn từ của riêng bạn, vì theo kinh nghiệm của tôi, khoảng một nửa số lần "bế tắc" thực chất là do hiểu sai vấn đề. Giấy cũng rất hữu ích. Hãy giải một ví dụ nhỏ bằng tay, ghi lại những gì bạn đã làm, và danh sách đó sẽ trở thành mã giả của bạn. Các câu lệnh in sẽ cho bạn thấy các biến của bạn thực sự chứa giá trị gì. Và nếu sau hai mươi hoặc ba mươi phút mà vẫn không có kết quả, một gợi ý cũng được, nhưng toàn bộ đáp án thường không đủ.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.