Review: phỏng vấn vào vị trí SDE của Amazon
Mình vừa kết thúc job interview với Amazon vào tuần trước và đang chờ kết quả. Trong quá trình chờ đợi này, mình quyết định viết 1 cái note để kể về quá trình phỏng vấn, giúp cho anh chị em bạn bè nào muốn apply vào công ty này có thể mạnh dạn hơn. Mình không đợi có kết quả rồi mới viết vì sợ lúc đó chả có hứng nữa..
Vì mình ký vào bản cam kết NDA của Amazon, nên sẽ không tiết lộ bất cứ câu hỏi phỏng vấn hay tài liệu Amazon cung cấp nào trong bài viết này. Mình chỉ mô tả các bước tuyển dụng, độ khó dễ và feeling của cá nhân thôi. Ví trí mình phỏng vấn đợt này là SDE (Software Development Engineer), làm việc tại Vancouver, Canada. Có lẽ mình nên bắt đầu câu chuyện bằng lý do tại sao mình lại apply vào đây. Bên Amazon người ta đi khắp các nước để tổ chức Hiring Event, và Việt Nam là 1 trong số các điểm đến.
Hiring Event ở VN được ấn định vào 18-20/4/2017. Do vậy, trước đó 3, 4 tháng, các recruiters của Amazon lùng sục khắp cộng đồng LinkedIn ở VN để tìm ứng viên. Và may mắn thay, profile của mình lọt vào tầm ngắm của họ, và vào ngày 25/2 họ gửi mail mời mình join hiring process này, đúng 1 tháng sau khi mình nghỉ việc ở Zalo. Lúc đó mình đang cày IELTS điên cuồng và không định apply vì… sợ mất thời gian (trước đó có myth là phỏng vấn vào mấy công ty to như thế này rất khó và phải chuẩn bị cả năm trời mới okay). Sau cùng nhờ sự động viên của 1 vài người anh em, mình quyết định nộp CV cho người ta.
Vì người ta đã chọn mình trước nên đương nhiên vòng CV mình sẽ pass. Nhưng với nhiều bạn, vòng CV có thể là 1 vòng khó, nếu bạn không biết trau chuốt và nêu các thế mạnh của mình ra. Do vậy các bạn nên nghiên cứu kỹ, ví dụ link này Sau khi nhận được CV của mình, recruiter lập tức move forward sang bước thứ 2 là coding challenge. Mình được cho 1 cái link, mở ra là 1 IDE online, đi kèm với đề bài, kiểu như trang hackerrank vậy. Mình phải giải quyết 2 problems trong vòng 90 phút. Problems không quá khó, khá cơ bản, nếu bạn nào từng thi Google Code Jam thì còn thấy mấy bài này dễ hơn.
Chủ yếu mấy bài này test kiến thức Data Structure và Basic Algorithm thôi. Các bạn có thể dễ dàng search các đề bài kiểu này trên internet. Nếu các bạn thiếu tự tin thì có thể lên trang hackerrank để luyện tập. Mình thì hôm đó nhảy vào làm luôn vì lười luyện (lúc này vẫn đang tập trung cày IELTS. 1 tuần sau Coding Challenge, mình nhận được kết quả là đã pass và move forward tới vòng Phone Interview. Ở vòng này, người ta bảo rõ với mình là sẽ hỏi về DS (Array, List, Tree, Graph, HashTable…), Algorithm (BFS, DFS, Tree Traversal, Recursive function…) và quan trọng là hỏi về 1 vài example của mình trong công việc. Câu hỏi đó thường là “tell mReview: phỏng vấn vào vị trí SDE của Amazone about a situation in which you ….”.
Các câu hỏi kiểu này cũng dễ tìm thấy trên mạng nên mình ko nêu ra ở đây. Chỉ lưu ý các bạn là phải chuẩn bị trước kỹ càng cho các câu hỏi này, vì nó đóng vai trò rất quan trọng trong việc đánh giá của người ta. Phone Interview chỉ kéo dài 30 mins thôi nên đừng lo lắng quá. Cố gắng tập luyện để nói cho trôi chảy và hiểu được câu hỏi của recruiter cộng với review lại kiến thức để trả lời cho chắc chắn.
Hơn 1 tuần sau vòng Phone Interview, mình nhận được kết quả báo đã pass và được join hiring event. Hiring Event sẽ là face-to-face interview theo dạng loop. Có nghĩa là trong 1 buổi, kéo dài 4 tiếng, mình sẽ có 4 cuộc interview nhỏ với 4 nhóm Interviewers khác nhau. Hiring Event được tổ chức tại khách sạn Pullman, Ho Chi Minh City, và toàn bộ interviewers lẫn coordinators sẽ bay từ Canada sang Việt Nam để tổ chức. Từ lúc nhận tin đến lúc phỏng vấn thì mình chỉ có gần 20 ngày để chuẩn bị. Recruiters rất chu đáo khi gửi mình đầy đủ toàn bộ topic lẫn document cần phải nghiên cứu để chuẩn bị cho phỏng vấn.
Chỉ mỗi tội là khối lượng là khá nhiều nên khó để mà chuẩn bị được chu đáo trong 20 ngày. Nếu vượt qua được vòng này thì mình sẽ nhận được offer của Amazon, nên mình quyết tâm tạm dừng cày Ielts để dấn thân vào ôn luyện. 4 interviews sẽ có format tương tự nhau. Mỗi interview kéo dài 50 mins. 25-30 mins đầu dành cho việc hỏi các example (câu hỏi kiểu “tell me about a situation…” mà mình đề cập ở trên).
Người ta xoáy khá sâu vào các câu trả lời của mình, hỏi tường tận từng gốc rễ. Các example mà mình đưa ra vì vậy cần phải trung thực, bịa là biết liền. Quan trọng nhất là các example đó phải align với leadership principles của Amazon. Với phân nửa thời gian dùng để hỏi mấy cái này nên mình nhận thức được nó quan trọng như thế nào và cũng chuẩn bị khá kỹ, mặc dù vậy, có 1 vài câu hỏi vẫn không nghĩ ra được example ngay, phải xin họ 1 phút để ngồi ngẫm. Phần thời gian còn lại của interview là dành cho coding exercise (khoảng 20-25 mins).
Đề bài khá đa dạng, và toàn bộ code của mình phải viết trên bảng trắng (white board), chứ không phải bằng keyboard (cái này sinh viên BKHN chắc master luôn vì toàn phải thi lập trình trên giấy). Loop 1 mình được cho 1 đoạn code dài 1 trang A4 và yêu cầu viết lại cho dễ maintain và develop về sau. Key để solve được bài này là phải hiểu và vận dụng được cái Abstract Factory để thay cho 1 đoạn check if else quá dài. Do vậy, kinh nghiệm là phải nắm rõ được các Design Pattern cơ bản để giải. Loop 2 là 1 bài dạng Tree, áp dụng đệ quy linh hoạt chút là giải okay.
Loop 3 là 1 bài dạng graph, cũng không phức tạp lắm. Khó nhất là loop 4, là 1 bài Object Oriented System Design. Đề bài là 1 tình huống trong đời thực và mình phải vận dụng các kỹ năng thiết kế hướng đối tượng để mô hình hóa thành các class, viết các phương thức giao tiếp chính giữa các class. Mình vận dụng hết aggregation với inheritance, Queue, Timer, EventListener… để giải bài này.
Tuy không được hoàn chỉnh nhưng interviewer cũng accept cách làm của mình. Trong lúc giải các bài coding, mình contact liên tục với interviewers, hỏi họ bất cứ thứ gì mà mình thấy confuse, thỉnh thoảng họ cũng đưa ra gợi ý hoặc hỏi thêm mình 1 số câu hỏi. Điều đó giúp cho mình giải quyết các vấn đề nhanh hơn và tối ưu hơn. Mình coi các interviewers như những người đồng nghiệp đang trao đổi về bài toán với mình, chứ ko phải examiners trong 1 cuộc thi. Đây cũng là cách mình học hỏi qua cuốn Crack the Coding Interview. Các bạn quan tâm có thể đọc cuốn này, rất bổ ích. Cuối mỗi interview, các interviewers sẽ cho mình thời gian khoảng 5 phút để đặt câu hỏi cho họ.
Ban đầu mình chỉ chuẩn bị có 2,3 câu, hỏi 1 lần là hết, nên sau đó vào giờ nghỉ giải lao, phải vắt óc nghĩ xem nên hỏi người ta câu gì cho hay, cho ý nghĩa Nếu có lần sau chắc chuẩn bị hẳn chục câu từ ở nhà luôn. Mình vẫn đang đợi kết quả cuối cùng từ Amazon, nếu fail thì đây là bài viết duy nhất của mình nói về Hiring Process của Amazon.
Còn nếu pass thì mình sẽ có 1 số bài viết cụ thể hơn để nói về cách mình vượt qua từng vòng, từng vòng. Dù sao thì việc được tham gia phỏng vấn cũng là 1 trải nghiệm thú vị và đáng nhớ đối với mình Do vậy mình ko hề tiếc vì đã tiêu tốn thời gian cho sự kiện này. Cảm ơn các bạn đã bớt chút thời gian để đọc À một điều may mắn đối với mình là Amazon lại liên hệ đúng lúc mình đang nghỉ Zalo để học Ielts, nên trình nói tiếng Anh đang lên, và cũng có nhiều thời gian để chuẩn bị. Chứ nếu vừa đi làm vừa chuẩn bị thì chắc fail từ vòng gửi xe Update mới nhất 11h20pm ngày 26/04/2017: recruiter gọi điện cho mình báo pass interview. Chờ deal lương và làm thủ tục
Nguồn: Ken Nguyễn
- G Giải Quyết Bài Toán Kinh Doanh Bằng Big Data và AI
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước