T0 Công ty lớn Baidu
Baidu AI Infra (2)
Câu hỏi phỏng vấn AI Infra tại Baidu thật, gồm tối ưu toán tử
Tối ưu toán tử
Vòng một
Lý thuyết
- Mô tả phân cấp bộ nhớ GPU và quan hệ chia sẻ giữa các cấp.
- Trong OpenMP, khai báo vùng song song thế nào? Cho cách dùng cơ bản.
- Trong môi trường song song, chạy
for(int i=0;i<100;i++){sum++;}có khớp tuần tự không? Làm sao bảo đảm đúng. - Ánh xạ Cache chia mấy loại? Đặc điểm mỗi loại?
- Trình bày các loại smart pointer C++ và kịch bản dùng.
- Đa hình C++ là gì? Có những cách triển khai nào?
- Dynamic linking và dynamic binding là gì? Khác nhau thế nào?
Đào sâu dự án
- Giới thiệu dự án và bài báo trên CV, thảo luận chi tiết kỹ thuật liên quan.
- Hướng tính toán hiệu năng cao chủ yếu nghiên cứu gì? Có kinh nghiệm hệ tính toán quy mô lớn không?
Vòng hai
Lý thuyết
- Cấu trúc dữ liệu tầng dưới của C++ STL map là gì? Nguyên lý cơ bản thế nào?
- AVL và red-black tree khác nhau ở chiến lược cân bằng thế nào? Đặc điểm hiệu năng mỗi cái?
- Nguyên lý triển khai tầng dưới của unordered_map?
- Cách xử lý xung đột hash phổ biến?
- Giới thiệu phân cấp lưu trữ máy tính.
- Trong CPU, register lập trình viên ứng dụng thấy được chia loại nào? Program counter (PC) làm gì?
- Liệt kê lệnh hệ điều hành dùng hàng ngày khá thường xuyên.
Đào sâu dự án
- Giới thiệu kinh nghiệm dự án trên CV và công việc nghiên cứu.
Vòng ba
Lý thuyết
- Chạy một hàm tùy chỉnh trước khi main chạy thế nào?
- Khi debug, đặt conditional breakpoint thế nào?
- Theo dõi call stack thế nào?
- Chương trình bố trí phân đoạn trong bộ nhớ thế nào?
- Cơ chế triển khai nội bộ của STL deque?
- Register hay Cache truy cập nhanh hơn? Cache và main memory mỗi cái dùng kỹ thuật gì? Giống và khác gì?
- CUDA có những phân loại bộ nhớ nào?
- CUDA Kernel là gì?
__global__làm gì? - Lấy số thread tối đa GPU hỗ trợ thế nào?
- So sánh tư tưởng và kịch bản phù hợp của greedy và dynamic programming.
- Các thuật toán tìm kiếm trên đồ thị phổ biến?