Hướng dẫn cho học sinh · Mùa thu đến mùa đông của năm học áp chót
Phỏng vấn thực tập ngành kỹ thuật phần mềm
Hầu hết các buổi phỏng vấn thực tập ngành kỹ thuật phần mềm gồm một bài đánh giá lập trình trực tuyến, sau đó là một hoặc hai buổi phỏng vấn lập trình trực tiếp. Mỗi buổi thường có một hoặc hai bài toán kèm câu hỏi tiếp theo, cùng một số câu hỏi về kinh nghiệm trước đây của bạn. Người phỏng vấn xem xét cách bạn hiểu bài toán, tìm ra lời giải chạy được, giải thích độ phức tạp về thời gian và bộ nhớ, cũng như kiểm thử lời giải. Họ cũng dự kiến sẽ đưa ra gợi ý.
Các vòng tuyển dụng
Nhiều công ty lớn bắt đầu bằng bài đánh giá trực tuyến, tức bài kiểm tra lập trình có giới hạn thời gian mà bạn làm tại nhà. Ví dụ, Amazon cho biết bài đánh giá trực tuyến dành cho thực tập sinh kéo dài khoảng 90 phút và đánh giá kỹ năng lập trình, giải quyết vấn đề kỹ thuật và các Leadership Principles của hãng; phần lập trình kéo dài khoảng 70 phút. Tiếp theo là các buổi phỏng vấn trực tiếp qua video, trong đó bạn giải bài toán khi một kỹ sư theo dõi và đặt câu hỏi.
Hướng dẫn phỏng vấn thực tập của Meta, cập nhật lần cuối vào năm 2022, mô tả hai vòng: phỏng vấn sàng lọc qua điện thoại rồi đến các buổi phỏng vấn tiếp theo. Cả hai vòng đều có cùng kỳ vọng, và mỗi buổi phỏng vấn dành khoảng 30 đến 35 phút để viết mã giải một hoặc hai câu hỏi. Google cho biết ứng viên có thể được yêu cầu hoàn thành một bài tập lập trình, mọi ứng viên đều được đánh giá theo các tiêu chí rõ ràng và không có câu đố mẹo. Chi tiết có thể thay đổi, vì vậy hãy đọc trang thông tin của chính công ty khi bạn được mời phỏng vấn.
Người phỏng vấn chấm điểm điều gì
Phần lớn là cách bạn tìm ra câu trả lời. Google cho biết người phỏng vấn quan tâm đến quá trình suy nghĩ của bạn không kém gì đáp án và sẽ đặt câu hỏi tiếp theo. Hướng dẫn của Meta yêu cầu bạn bàn về độ phức tạp big-O của các cách tiếp cận, đặt câu hỏi để làm rõ, đồng thời nói rằng có mã chạy được nhưng chưa tối ưu vẫn tốt hơn là chỉ có ý tưởng. Hướng dẫn cũng nói rằng nếu bạn bị bí, hãy bắt đầu với lời giải vét cạn rồi cải thiện nó; việc người phỏng vấn đưa ra gợi ý không phải là điều xấu.
Trên thực tế, điều đó có nghĩa là làm năm việc: hiểu bài toán (diễn đạt lại, hỏi về các trường hợp biên và kích thước đầu vào), tìm lời giải đúng, giải thích độ phức tạp về thời gian và bộ nhớ, cải thiện lời giải nếu có thể, rồi kiểm thử bằng cách lần lượt xem qua một ví dụ và các trường hợp biên bằng tay. Giao tiếp là yếu tố xuyên suốt cả năm việc, vì người phỏng vấn chỉ có thể chấm điểm những gì bạn nói.
Ví dụ có lời giải: tổng của hai số
Cho một danh sách số và một số đích, hãy trả về vị trí của hai số có tổng bằng số đích. Hãy bắt đầu bằng cách đặt câu hỏi: có thể có nhiều hơn một đáp án không, có thể dùng cùng một số hai lần không, danh sách đã được sắp xếp chưa, danh sách có thể dài bao nhiêu? Sau đó nói thành tiếng cách vét cạn: kiểm tra từng cặp. Cách này đúng nhưng tốn thời gian tỷ lệ với n bình phương đối với danh sách gồm n số.
Sau đó cải thiện cách giải. Khi duyệt danh sách, hãy lưu một bảng băm ánh xạ mỗi số đã gặp tới vị trí của nó, rồi với mỗi số mới, kiểm tra xem số đích trừ đi số đó đã có trong bảng chưa. Cách này tìm ra cặp số chỉ qua một lượt duyệt, với thời gian tỷ lệ với n, nhưng cần thêm bộ nhớ tỷ lệ với n. Cuối cùng, hãy kiểm thử thành tiếng trên một ví dụ nhỏ, một danh sách không có đáp án và một danh sách có số lặp lại; đồng thời nói bạn sẽ thay đổi cách làm thế nào nếu danh sách đã được sắp xếp (dùng hai con trỏ từ hai đầu, không cần thêm bộ nhớ).
Các chủ đề cần biết và ngôn ngữ lập trình nên dùng
Câu hỏi phỏng vấn thực tập chủ yếu sử dụng kiến thức trong khóa học đầu tiên về cấu trúc dữ liệu và thuật toán: mảng và chuỗi, bảng băm và tập hợp, ngăn xếp và hàng đợi, danh sách liên kết, cây và đồ thị với tìm kiếm theo chiều rộng và chiều sâu, sắp xếp và tìm kiếm nhị phân, đệ quy và quy hoạch động cơ bản. Biết độ phức tạp về thời gian và bộ nhớ của từng thao tác cũng quan trọng không kém việc hiểu cấu trúc dữ liệu.
Hãy dùng ngôn ngữ lập trình bạn biết rõ nhất. Hướng dẫn thực tập của Meta khuyên bạn dùng ngôn ngữ mà bạn thấy thành thạo nhất, còn lời khuyên của Amazon cho bài đánh giá là ôn tập và luyện dùng ngôn ngữ bạn dự định sử dụng. Python phổ biến vì ngắn gọn, nhưng sự thành thạo quan trọng hơn việc bạn chọn ngôn ngữ nào.
Vừa suy nghĩ vừa nói thành tiếng và AI trong buổi phỏng vấn
Hãy nói ra suy nghĩ của bạn, kể cả khi đó là “Tôi vẫn chưa chắc”, vì im lặng khiến người phỏng vấn không có gì để chấm điểm và cũng không thể giúp bạn. Khi nhận được gợi ý, hãy tiếp nhận rồi giải thích nó làm thay đổi cách tiếp cận của bạn thế nào. Luyện tập như vậy một mình có thể thấy kỳ lạ, nên luyện với bạn bè hoặc tự ghi âm khi giải bài toán và nói thành tiếng sẽ rất hữu ích.
Quy định của các công ty về AI khác nhau, vì vậy hãy kiểm tra trước ngày phỏng vấn. Google cho biết không được phép dùng công cụ AI trong các buổi phỏng vấn, trong khi Meta cho biết nhiều buổi phỏng vấn hiện có trợ lý AI được tích hợp trong môi trường phỏng vấn và ứng viên được yêu cầu sử dụng. Nếu không được phép dùng AI mà bạn vẫn dùng thì đó là gian lận; nếu AI là một phần của buổi phỏng vấn, cách bạn kiểm tra và sửa lại nội dung AI đưa ra cũng là một phần được đánh giá.
Câu hỏi về cách ứng xử
Hầu hết các buổi phỏng vấn chuyên môn đều có một số câu hỏi về quá khứ của bạn: một dự án bạn tự hào, một lỗi khó xử lý, một lần bạn bất đồng ý kiến với đồng đội. Amazon đánh giá ứng viên dựa trên Leadership Principles của hãng, bắt đầu với tinh thần đặt khách hàng lên hàng đầu: quan điểm cho rằng các nhà lãnh đạo bắt đầu từ khách hàng rồi suy ngược lại. Vì vậy, hãy đọc các nguyên tắc này và chuẩn bị một ví dụ cho những nguyên tắc chính.
Khi có tài khoản, tính năng Chuẩn bị phỏng vấn của cookie sẽ tổ chức một buổi phỏng vấn thử cho công việc bạn nêu với người phỏng vấn AI. Tính năng này đặt từng câu hỏi một, hỏi tiếp dựa trên câu trả lời của bạn như người phỏng vấn thật và viết báo cáo về từng câu trả lời ở cuối buổi. Tính năng này dùng tín dụng và hiển thị ước tính trước.
Nơi kiểm tra
- Meta: cách vượt qua buổi phỏng vấn thực tập ngành kỹ thuật phần mềm
- Meta: chuẩn bị cho buổi phỏng vấn kỹ thuật phần mềm
- Meta: quy trình tuyển dụng
- Google: quy trình tuyển dụng của chúng tôi
- Google: mẹo phỏng vấn
- Amazon: bài đánh giá trực tuyến SDE dành cho sinh viên
- Amazon: Leadership Principles
Đã kiểm tra theo các trang này vào . Quy định thay đổi theo từng năm, vì vậy hãy tin các trang ở trên nếu thông tin ở đây có gì khác.
Câu hỏi thường gặp
Bài đánh giá trực tuyến là gì?
Một bài kiểm tra lập trình có giới hạn thời gian mà bạn làm tại nhà. Nhiều công ty dùng bài này trước các buổi phỏng vấn trực tiếp. Amazon cho biết bài đánh giá dành cho thực tập sinh kéo dài khoảng 90 phút, phần lớn là lập trình.
Tôi nên dùng ngôn ngữ nào trong buổi phỏng vấn lập trình?
Ngôn ngữ bạn biết rõ nhất. Meta khuyên dùng ngôn ngữ bạn thành thạo nhất, còn Amazon khuyên luyện tập với ngôn ngữ bạn dự định sử dụng. Vì vậy, sự thành thạo quan trọng hơn việc chọn ngôn ngữ nào.
Các câu hỏi lập trình khi phỏng vấn thực tập khó đến mức nào?
Thường dựa trên kiến thức năm đầu về cấu trúc dữ liệu và thuật toán: mảng, bảng băm, cây, đồ thị, sắp xếp và đệ quy, cùng các câu hỏi tiếp theo yêu cầu bạn cải thiện hoặc mở rộng lời giải.
Nếu bị bí trong buổi phỏng vấn lập trình thì sao?
Hãy nói rõ bạn đang mắc ở đâu, thử lời giải vét cạn trước rồi cải thiện nó, và tiếp nhận mọi gợi ý bạn được đưa ra. Hướng dẫn của Meta nói rằng nhận gợi ý từ người phỏng vấn không phải là điều xấu.
Tôi có thể dùng AI trong buổi phỏng vấn lập trình không?
Còn tùy công ty. Google cho biết không được phép dùng công cụ AI trong các buổi phỏng vấn; Meta cho biết nhiều buổi phỏng vấn có trợ lý AI tích hợp và ứng viên được yêu cầu sử dụng.