Xin chào, có lẽ là rất nhiều bạn quan tâm đến câu hỏi này khi đang có kế hoạch muốn trở thành một Data Engineer. Đa phần những ai đặt câu hỏi này đều xuất phát từ nỗi ám ảnh mang tên: Cấu trúc dữ liệu và giải thuật (DSA - Data Structure & Algorithms) 🥴.
Xin chia buồn cùng với bạn câu trả lời cho chủ đề này là **Có**, khi phỏng vấn làm Data Engineer, các bạn cũng sẽ phải chuẩn bị cho mình những kiến thức về DSA cần thiết. Tuy nhiên, may mắn hơn cho mọi người, đa số sẽ không bị hỏi quá khó về DSA giống như các bạn làm Backend Engineer, đa số sẽ dừng ở mức “medium level” (Còn tất nhiên, công ty nào mà cố muốn hỏi khó thì mình cũng không cản được).
Vậy thì trong bài chia sẻ này, Huy cũng muốn cùng các bạn lượt qua một vài lý do mà Data Engineer cần biết DSA và các topic về DSA quan trọng mà một DE cần biết cũng như thường bị hỏi khi đi phỏng vấn ha. Let’s go.
Đầu tiên, tại sao các công ty cũng vẫn sẽ thường hỏi về DSA khi phỏng vấn cho vị trí Data Engineer?
- Xử lý dữ liệu hiệu quả: Data Engineer thường xuyên làm việc với khối lượng dữ liệu lớn, nơi các khái niệm DSA giúp họ viết các pipeline dữ liệu được tối ưu hóa vì kiến thức DSA giúp họ tối ưu hóa các thuật toán để lưu trữ, xử lý và truy xuất các tập dữ liệu lớn.
- Tối ưu hóa Pipeline Dữ liệu: Các khái niệm DSA có thể giúp Data Engineer phát triển các pipeline xử lý dữ liệu được tối ưu hóa. Ví dụ, các cấu trúc dữ liệu như hash table và binary search có thể giúp tối ưu hóa việc tìm kiếm và truy xuất dữ liệu.
- Kỹ năng giải quyết vấn đề: Các câu hỏi về DSA có thể được sử dụng để đánh giá kỹ năng giải quyết vấn đề của Data Engineer. Các công ty có thể sử dụng các bài toán DSA để đánh giá khả năng phát triển các thuật toán hiệu quả của ứng viên để giải quyết các vấn đề dữ liệu phức tạp.
- Tính toán phân tán: Trong môi trường tính toán phân tán, Data Engineer cần tối ưu hóa các thuật toán để sử dụng hiệu quả các tài nguyên tính toán. Các câu hỏi về DSA có thể giúp các công ty đánh giá khả năng phát triển các thuật toán song song của ứng viên cho môi trường tính toán phân tán.
Vậy những chủ đề nào về DSA là quan trọng với Data Engineer? Để đi chi tiết vào câu hỏi này, chúng ta sẽ tạm chia nhỏ ra làm 3 đầu mục chính:
1️⃣ Điều kiện tiên quyết
- Có khả năng làm việc được với một trong các ngôn ngữ: Python/Java/Scala/C/C++ vv - Hiểu về độ phức tạp của thuật toán Big O
2️⃣ Data Structures: Nên có 2 mức độ ưu tiên cho việc học về cấu trúc dữ liệu
a. Ưu tiên cao:
- Array - String - Stack - Queue - Linked List - Dynamic Programming
b. Ưu tiên vừa:
- Tree: In-order, Pre-order, and Post-order Traversals, Binary Search Tree - Graphs: DFS, BFS, different types of graphs, Graph Traversal - Heap: Min Heap, Max Heap
3️⃣ Algorithms: Có rất nhiều các thuật toán tuy nhiên với DE thì chúng ta cần ưu tiên nhất 3 thuật toán sau trước tiên
- Searching: Linear Search, Binary Search - Sorting: Quick Sort, Merge Sort, Heap Sort - Hashing
DSA vẫn rất là cần cho một Data Engineer, đặc biệt là khi phỏng vấn. Việc đòi hỏi phải trả lời được các câu hỏi quá khó về DSA có thể sẽ hơi không thực tế với một DE, tuy nhiên không phải vì thế mà các bạn không nắm trong tay các kiến thức DSA phổ biến và cần thiết. Hi vọng với một vài gạch đầu dòng nhanh chóng ở trên sẽ giúp cho bạn có sự chuẩn bị tốt hơn về DSA nếu sắp phải đi phỏng vấn hoặc phát triển hơn cho công việc của một Data Engineer hiện tại.
Xin cảm ơn, mình là Huy Đê Tê!