Kinh nghiệm thi tuyển Data Scientist tại Google (Hyderabad)
Chinh phục kỳ phỏng vấn Data Scientist tại Google (Hyderabad) là một hành trình đáng nhớ. Nó không chỉ thử thách khả năng giải thuật mà còn kiểm tra khả năng phân tích hệ thống và giao tiếp. Dù không chủ động tìm kiếm công việc mới, lời mời từ một nhà tuyển dụng của Google trên LinkedIn cho vị trí Machine Learning Engineer (L4) đã thúc đẩy tôi thử sức, xem đây như một cơ hội để đánh giá lại bản thân.
Quy trình phỏng vấn
Quá trình phỏng vấn bao gồm 5 vòng, từ vòng sơ loại qua điện thoại đến các vòng trực tiếp.
- Tổng số vòng: 5 (bao gồm vòng sơ loại qua điện thoại và các vòng onsite)
- Thời gian chuẩn bị: Khoảng một tháng, tập trung vào việc luyện tập với khoảng 250 bài toán Leetcode ở mức độ trung bình và khó, đồng thời ôn lại lý thuyết về Machine Learning (ML).
Chi tiết các vòng phỏng vấn
Dưới đây là mô tả chi tiết từng vòng:
Vòng 1: Phone Screen (DSA)
Độ khó: 7/10
Thời gian: 45 phút
Mục tiêu: Đánh giá tư duy giải thuật và khả năng viết code sạch.
Bài toán: Nhóm các chuỗi có thể xoay vòng thành nhau.
Input: ['abc', 'bca', 'cab', 'xyz']
Output: [['abc', 'bca', 'cab'], ['xyz']]
Cách giải: Sử dụng phương pháp brute-force kết hợp với dictionary để lưu trữ các chuỗi sau khi đã được "chuẩn hóa" bằng cách xoay vòng, sau đó nhóm các chuỗi tương ứng.
Kết quả: Đạt yêu cầu, với giải thích rõ ràng về độ phức tạp về thời gian (time complexity) và xử lý các trường hợp đặc biệt (edge cases).
Góp ý: Cần chú trọng hơn đến các trường hợp đặc biệt trong tương lai.
Kết quả: Đạt | Đánh giá: "Hire"
Vòng 2: DSA 1
Độ khó: 8.5/10
Thời gian: 60 phút
Đề tài: Topological Sort nâng cao
Bài toán: Xóa các phần của hệ thống lưu trữ theo thứ tự hợp lệ.
Input:
A : [B, C]
B : [C]
C
D
Output: [D, C, B, A] hoặc [C, D, B, A]
Cách giải: Triển khai thuật toán topological sort bằng DFS, sau đó, nếu có nhiều phần có thể xóa cùng lúc, tiến hành nhóm chúng bằng BFS và queue theo level.
Phản hồi: "Very impressive"
Kết quả: Đạt | Đánh giá: "Strong Hire"
Vòng 3: DSA 2
Độ khó: 9/10
Thời gian: 60 phút
Bài toán: Di chuyển qua các quốc gia bằng teleporter. Một số teleporters bị hỏng, cần sửa trong một ngày. Tìm đường đi tối ưu từ A đến B với chi phí thấp nhất.
Cách giải: Sử dụng adjacency list có trọng số (0 hoặc 1 nếu teleporter bị hỏng) và thuật toán Dijkstra để tính toán chi phí.
Kết quả: Đạt, với giải thích chi tiết về độ phức tạp về thời gian, không gian và code được comment rõ ràng.
Kết quả: Đạt | Đánh giá: "Strong Hire"
Vòng 4: Googlyness & Leadership
Độ khó: 7/10
Thời gian: 45 phút
Mục tiêu: Phỏng vấn về hành vi và kỹ năng lãnh đạo.
Câu hỏi:
- Khi nào bạn đưa ra feedback khó nghe nhưng giúp người khác phát triển?
- Bạn từng đạt được kết quả vượt mong đợi nào trong công việc?
- Dự định học gì trong năm tới?
Kết quả: Đạt | Đánh giá: "Strong Hire"
Vòng 5: ML Domain & System Design
Độ khó: 9.5/10
Thời gian: 60 phút
Mục tiêu: Phỏng vấn chuyên sâu về ML và thiết kế hệ thống.
Bài toán: Tìm kiếm email liên quan tới truy vấn và cá nhân hóa theo hồ sơ người dùng.
Cách giải: Thảo luận về thiết kế dual embedder model với transformer, tạo embedding cho email và truy vấn, sử dụng cosine similarity để xếp hạng.
Hạn chế: Gặp khó khăn khi triển khai một phần code, cho thấy sự phụ thuộc vào các công cụ hỗ trợ.