Tôi đang học Java bây giờ một ngày.
Tôi muốn trở thành một nhà phát triển doanh nghiệp thành công. Vậy thì những thuật toán và cấu trúc dữ liệu nào tôi nên thành thạo? Những cuốn sách bạn muốn giới thiệu cho tôi?
Để trở thành một nhà phát triển Java thành công, tôi có cần biết tất cả các thuật toán nâng cao như các thuật toán được đưa ra trong CLRS không?
Bạn có thể gợi ý cho tôi một danh sách các chủ đề mà tôi nên học theo thứ tự giảm dần mức độ ưu tiên của chúng không?
Cho tôi biết tên của một số chủ đề mà tôi phải biết. Giống như Tìm kiếm, Sắp xếp, Đồ thị, Cây, v.v.?
Thật tốt khi bạn mong muốn mở rộng và cải thiện kỹ năng lập trình của mình. Tuy nhiên, điều quan trọng là không coi các thuật toán là một danh mục các thứ cần ghi nhớ. Điều bạn cần biết để trở thành một nhà phát triển giỏi (bằng Java hoặc bất cứ điều gì khác cho vấn đề đó) là hiểu phân tích thuật toán.
Bạn học được điều này bằng cách học một vài cấu trúc dữ liệu và thuật toán chọn lọc và học cách phân tích hiệu suất của chúng theo thời gian và không gian (bộ nhớ). Tìm kiếm, sắp xếp, đồ thị, cây, đống, ngăn xếp và tất cả những thứ tốt. Điều này cũng cần tuân theo một số điều cơ bản về lý thuyết tính toán và toán học rời rạc (ngay cả khi trong vương quốc Java, chúng ta không bao giờ thực sự sử dụng trực tiếp hai chủ đề đó - lợi ích của chúng là gián tiếp.)
Phân tách việc học ngôn ngữ lập trình (trong trường hợp Java của bạn) với việc học phân tích thuật toán (khác với "ghi nhớ" các thuật toán và cấu trúc dữ liệu.)
"Thuật toán trong một nốt nhạc" của George T. Heineman và Gary Selkow là một khởi đầu tốt. "Thuật toán" của Sanjoy Dasgupta, Christos Papadimitriou và Umesh Vazirani là một cuốn sách giáo khoa tốt nghiệp khác.
Suy nghĩ tốt nhất là học 9-12 khóa học tín dụng trong lập trình trước khi tham gia khóa học 3000 cấp độ dưới cấp về thuật toán. Chặn rằng, tự học với hai cuốn sách tôi đã đề cập có thể là một lựa chọn tốt (mặc dù vậy, tự học có thể không dành cho tất cả mọi người.)
Chúc may mắn!