Bạn có vượt qua câu hỏi thuật toán phỏng vấn không? Học các câu hỏi thuật toán mất quá nhiều thời gian? Không phải vấn đề của bạn! Trước đó, không có phương pháp học thuật toán nào có thể đơn giản và hiệu quả như vậy. Chỉ cần ba bước để trở thành bậc thầy về thuật toán: Bước đầu tiên là đọc câu hỏi; Bước thứ hai là phát hoạt ảnh, tham khảo phụ đề và hiểu các ý tưởng và mật mã;Bước thứ ba là đọc, phân tích và tóm tắt;
Việc tạo ra một ứng dụng sơ đồ hoạt ảnh thuật toán bắt nguồn từ trải nghiệm cá nhân của nhiều lập trình viên, những người thường thấy mình cần phải xem lại các thuật toán bất cứ khi nào họ thay đổi công việc. Quá trình xem lại các thuật toán này thường liên quan đến việc xem xét các giải pháp trực tuyến khác nhau, nhiều giải pháp trong số đó kết hợp hình ảnh động hoặc sơ đồ. Những hình thức trình bày này hiệu quả hơn và dễ hiểu hơn so với chỉ dùng văn bản. Tuy nhiên, một số hạn chế nhất định trong các tài nguyên hiện có đã trở nên rõ ràng, bao gồm thiếu tính tương tác trong hoạt ảnh, không thể thay đổi dữ liệu khi học và những thách thức liên quan đến khả năng truy cập trên thiết bị di động.
Được thúc đẩy bởi mong muốn nâng cao trải nghiệm học tập, nhà phát triển đã cam kết tạo ra 70 hoạt ảnh khác nhau trong ứng dụng. Mục tiêu chính của ứng dụng này là phục vụ như một công cụ học tập hỗ trợ người dùng nhanh chóng nắm bắt các khái niệm và mã thuật toán. Mặc dù ứng dụng cung cấp trải nghiệm học tập tương tác và trực quan nhưng nó không cho phép người dùng gửi hoặc thực thi mã; Việc gõ mã trên máy tính vẫn cần thiết để có được trải nghiệm học tập trọn vẹn.
Khi tổ chức nội dung của ứng dụng, nhà phát triển đã chọn không sắp xếp các câu hỏi thuật toán theo số nhận dạng LeetCode của họ. Thay vào đó, họ phân loại các câu hỏi thành ba loại chính: danh sách liên kết, chuỗi, mảng và cây nhị phân; quay lui, thuật toán tham lam, lập trình động và chia để trị; cùng với một phần riêng để sắp xếp. Mỗi danh mục lại được chia theo độ khó—dễ, trung bình và khó—cho phép người dùng tập trung tuần tự vào các lĩnh vực kiến thức cụ thể đồng thời khuyến khích việc học kỹ lưỡng các khái niệm lý thuyết.
Ứng dụng này cũng phản ánh kinh nghiệm học tập trước đây của chính nhà phát triển, đặc biệt là những thách thức gặp phải khi làm việc với các thuật toán sắp xếp. Vì việc sắp xếp ban đầu được coi là một chủ đề khó nên một cách phân loại cụ thể cho chủ đề này đã được chỉ định cho những người mới bắt đầu để tạo điều kiện hiểu rõ hơn. Phương pháp tiếp cận có cấu trúc này nhằm mục đích giúp người dùng điều hướng một cách có hệ thống thông qua các chủ đề phức tạp theo cách phù hợp với khuôn khổ giáo dục truyền thống.
Để tăng cường sự tương tác giữa hoạt ảnh và mã, ứng dụng kết hợp một số tính năng chu đáo. Một khía cạnh quan trọng là chức năng đánh dấu mã, đồng bộ hóa hoạt ảnh với quá trình thực thi mã bằng cách đánh dấu từng dòng mã khi hoạt ảnh tương ứng diễn ra. Ngoài ra, để bổ sung cho các yếu tố hình ảnh, tính năng phụ đề được đưa vào để cung cấp các giải thích ngắn gọn trong mỗi bước hoạt ảnh. Ứng dụng này cũng bao gồm chức năng phát lại và đặt lại cho từng thuật toán, cho phép người dùng chọn ngẫu nhiên các trường hợp thử nghiệm bằng nút đặt lại, đơn giản hóa hơn nữa quá trình tìm hiểu và nâng cao mức độ tương tác của người dùng.
Tại sao bạn lại tạo một ứng dụng sơ đồ hoạt ảnh thuật toán ?
Giống như nhiều lập trình viên, tôi phải chuẩn bị rất nhiều thời gian để hoàn thiện thuật toán mỗi khi thay đổi công việc. Rất hay, trong quá trình lướt đề các bạn phải đọc đáp án trước. Tôi cũng đọc rất nhiều lời giải của các ông lớn trên Internet và đặc biệt thích đọc phân tích thuật toán bằng hình ảnh chuyển động hoặc sơ đồ, nhanh hơn đọc văn bản. Trong quá trình này, một số vấn đề cũng được phát hiện như: hoạt ảnh không tương tác và không thể tạm dừng; dữ liệu đã chết và không thể thay đổi được; học trên điện thoại di động không thuận tiện, v.v.
Lúc đầu, tôi thấy một số hình ảnh động hay và tôi rất muốn triển khai chúng trong ứng dụng bằng mã gốc nhiều lần. Lần này cuối cùng tôi đã quyết định và thực hiện 70 hình ảnh động trong một lần.
Tôi hiểu rằng vị trí của ứng dụng này là một công cụ có thể giúp chúng ta nhanh chóng hiểu các ý tưởng và mã thuật toán, giúp ghi nhớ và nâng cao hiệu quả học tập. Nhưng ở đây bạn không thể gửi, không thể thực thi mã và mã vẫn phải gõ trên máy tính để cảm thấy dễ chịu hơn.
Tại sao nó không được sắp xếp theo thứ tự của leetcode số?
Hiện tại, các câu hỏi thuật toán được phân thành ba khối chính:
- danh sách liên kết, chuỗi, mảng, cây nhị phân;
- Quay lui, tham lam, lập trình động, chia để trị;
- Sắp xếp và phân loại riêng biệt.
Dưới mỗi loại, độ khó được chia thành dễ, trung bình và khó.
Đầu tiên hãy phân loại cấu trúc dữ liệu và thuật toán riêng biệt rồi học theo điểm kiến thức. Ví dụ: bạn có thể tập trung học cấu trúc cây nhị phân hoặc thuật toán lập trình động, để việc đào tạo bão hòa tập trung có thể giúp nâng cao hiệu quả học tập. Cấu trúc dữ liệu có trước, thuật toán theo sau, cũng được sắp xếp theo thứ tự mà chúng ta học kiến thức lý thuyết.
Về mặt thuật toán, hiện nay có 4 loại được sắp xếp: quay lui, tham lam, lập trình động và chia-và -conquer.
Khi tôi học cấu trúc dữ liệu và thuật toán nhiều năm trước, lần đầu tiên tôi tiếp xúc với nhiều thuật toán sắp xếp khác nhau. Lúc đó, tôi cảm thấy việc sắp xếp quá khó và rất ấn tượng nên đã tạo một cách phân loại riêng cho người mới bắt đầu.
Suy nghĩ về cách kết hợp hoạt ảnh và mã cũng như các vấn đề tương tác khác
- Trong quá trình tự học các thuật toán, tôi thường hiểu ý nhưng không hiểu mã, nhiều mã trong phần giải thích văn bản không có chú thích. Nhìn thấy điều này là một cơn đau đầu lớn. Do đó, khi nghĩ đến tương tác với Ứng dụng, chức năng đánh dấu mã được thiết kế đặc biệt, có nghĩa là mỗi dòng mã sẽ được đánh dấu khi hoạt ảnh diễn ra. Bằng cách này, hoạt ảnh đang thực thi, mã được đánh dấu và trông rất ngầu.
- Mặc dù hoạt ảnh rất dễ hiểu nhưng vẫn cần một số giải thích ngắn gọn nên chức năng "phụ đề" được thiết kế bên dưới hoạt ảnh. Mỗi khi thực hiện bước tương ứng, lời giải thích tương ứng sẽ được hiển thị.
- Phát lại và đặt lại hoạt ảnh, mỗi trang thuật toán có chức năng phát lại, vậy chuẩn bị các trường hợp kiểm thử như thế nào? Để đơn giản hóa khái niệm về các trường hợp kiểm thử, nút "đặt lại" được thiết kế, có nghĩa là các trường hợp kiểm thử là ngẫu nhiên. Khi bạn muốn thay đổi một bộ dữ liệu, chỉ cần nhấp vào đặt lại.