_Gia_Cat_Luong_
Senior Member
Bạn chia sẻ cách học LC để pv các cty top tier được ko?
Để apply vào các công ty top trong ngành thôi bác
đúng Quân Sư ơi, mục tiêu của em là làm chủ được phần interview thuật toán của các công ty lớn ở Việt Nam
Bác ơi sang nước ngoài chưa. Học Leetcode trâu bò vậy mà.
Nếu mục tiêu chỉ để phỏng vấn thì có thể follow theo roadmap của những ng đã từng thành công, trong thớt này cũng có nhiều bạn chia sẻ rồi.
Roadmap mình đề xuất:
1. (1-2 ngày) Big O notation: Cái này là cực kì quan trọng khi làm LC. Phải nắm rõ và có thói quen est đc độ phức tạp của mọi thứ mình làm trong 1 nốt nhạc. Kĩ năng này cần phải luyện tập nhiều nhưng cần dành thời gian tập luyện trước cho vững rồi củng cố dần dần.
2. (14-21 ngày) Cấu trúc dữ liệu căn bản: Học 1 lượt về các cấu trúc dữ liệu căn bản, các thao tác trên CTDL đó và độ phức tạp tương ứng. Hiểu được CTDL nào thì nên dùng lúc nào với bài toán nào. Mục tiêu là làm đc 3-4 bài level super easy cho mỗi CTDL. Có thể sử dụng LC Study Plan cho phần này (https://leetcode.com/study-plan/data-structure/). CTDL căn bản gồm:
- Mảng
- Hashtable / Hash Map / Hash Set
- Stack / queue
- Linked list
- Tree các thể loại
- Graph các thể loại
3. (7 - 14 ngày) Thuật toán căn bản: Học các thuật toán cơ bản thường dùng, và tập phân tích độ phức tạp của mỗi chi phí. Tương tự, mục tiêu là hoàn thành đc 3-4 bài mỗi topic mức độ easy. Bao gồm:
- Tìm kiếm nhị phân
- Tìm kiếm tuyến tính
- Sort: (Quick, merge, heap, count, radix)
- Prefix sum
- Đệ quy
- DFS / BFS
4. (14 - 21 ngày) Đào sâu vào các CTDL nâng cao theo chuyên đề. Vẫn là CTDL nhưng làm các bài medium (5-6 bài mỗi topic) và học thêm các CTDL nâng cao hơn như Trie, Segment Tree,...
5. (21 - 30 ngày) Tương tự nhưng đào sâu vào các thuật toán nâng cao, mỗi topic làm đc 4-5 bài medium. Giai đoạn này mới thực sự là bắt đầu grinding:
- Sliding window
- Two pointers
- Backtracking
- Monotonic stack / queue
- Math & Bitwise
- Geometry
- Graph algorithms
- Dynamic programming
6. (7 - 14 ngày) Làm ngẫu nhiên. Qua bước 5 thì thím đã khá vững vàng để chiến đấu rồi, bước tiếp theo là làm ngẫu nhiên các bài level medium (hoặc hard luôn) mà không biết trước chủ đề để tập vận dụng các kiến thức linh hoạt. Mỗi ngày làm 1-3 bài liên tục tầm 1-2 tuần là đc.
7. (Vô chừng) FAANG: Hết bước 6 chỉ cho các bác vào đc cái cty top tier ở VN thôi, để vào FAANG mình nghĩ là cần phải done được các bài hard trong khoản thời gian dưới 45p. Nó khó vkl và mình cũng k chắc là làm được nên k biết chỉ sao.
Cuối cùng, đừng dành hết thời gian vào để cày LC nếu chỉ vì muốn pass phỏng vấn, vì:
- Phỏng vấn còn rất nhiều phần khác, LC chỉ là cánh cửa đầu tiên. Nếu nói ra nó chiếm đc khoảng 30% kết quả phỏng vấn của các bác thôi.
- Dù là thuật toán, thì cái code / solution cũng chỉ chiếm được 40% trong cái 30% đó thôi, 60% còn lại là:
- Cách phát triển vấn đề, tư duy để tìm ra giải pháp
- Cách code, có gọn gàng sạch đẹp không, có suy nghĩ đc các edge case k, gặp vấn đề cách debug như thế nào
- Cách trình bày: Phải giải thích được code & ý tưởng của mình cho interviewer hiểu. Nếu không tất cả cũng vô nghĩa
- Cuối cùng, LC chả giúp gì nhiều trong công việc thực tế, nếu sau khi pass pv xong bạn fail probation thì cũng vậy cả.
Last edited: