Hôm nay rảnh rỗi, mình xin kể lại quá trình ứng tuyển vào công ty G. (ai chơi Dota cũ hoặc chơi Liên minh thì chắc hẳn sẽ biết G. này).
Như thường lệ, mình đọc được tin tuyển dụng của công ty G. trên trang facebook tuyển dụng của khoa CNTT, ĐH KHTN. Yêu cầu chung của công ty này khác hẳn những công ty thông thường. Đó là yêu cầu cao về giải thuật, không yêu cầu về công nghệ, ngoài ra còn cần một số kiến thức liên quan đến hệ điều hành, mạng, cơ sở dữ liệu… Cảm thấy có lẽ công ty chấp nhận sinh viên sắp ra trường hoặc mới tốt nghiệp nên mình ứng tuyển thử.
- Vòng 1 Paper test: mình làm một bài kiểm tra giấy, trong đó câu code quan trọng nhất là yêu cầu ghép 2 danh sách liên kết có thứ tự tăng dần thành 1 danh sách liên kết mới cũng thứ tự như vậy. Do đã được chị nhân sự phổ biến trước nên mình đã ôn kiến thức này và làm một số bài tập trên codefight.com. Ngoài câu hỏi code là những câu trắc nghiệm liên quan đến hệ điều hành, các giao thức mạng, viết câu SQL theo yêu cầu. Không câu nào là dễ ăn cả.
- Vài ngày sau khi đi test, mình nhận được điện thoại từ chị nhân sự, báo rằng em đã đậu với điểm 10/16, không cao nhưng vừa đủ. Thế là chị phổ biến những kiến thức cần chuẩn bị cho vòng sau. Về giải thuật, cần ôn lại Bảng băm, cây nhị phân, thuật toán sắp xếp (Quicksort, Merge sort)… Về hệ điều hành, ôn về thread, process, bộ nhớ ảo… Về mạng, tìm hiểu về TCP và UDP, các giao thức mạng (sau khi hỏi thằng bạn và tìm hiểu google thì biết được phần nào)… Về cơ sở dữ liệu, chỉ nghe là đánh index sao cho tối ưu (???).
- Vòng 2 Technical test: Mình được phỏng vấn với một anh kỹ thuật. Câu hỏi đầu tiên, anh ấy hỏi mình về khác nhau giữa TCP và UDP, HTTP. Mình trả lời cũng được nhưng chỉ ở mức quan niệm (concept), còn cơ chế hoạt động ra sao thì không rành. Sau đó thì anh ấy hỏi mình một số kiến thức JAVA do thấy mình có ghi trong CV, thế nhưng mình cũng không rành gì nhiều ngoài những kiến thức OOP căn bản. Sau đó thì anh bắt đầu kiểm tra giải thuật. Câu hỏi đầu tiên là “ttttbcccaa” -> “t4bc3a2”, hãy viết hàm compress và decompress để chuyển đổi qua lại 2 chuỗi trên. Sau một hồi suy nghĩ thì mình code được, nhưng vì tư duy code chạy được trước khi tối ưu nên code không được tối ưu (mình nghĩ nếu có thời gian nhìn lại code thì mình cũng sẽ tối ưu hoá thôi). Sau khi làm xong bài này, anh ấy ra một đề nữa, đó là viết hàm trừ 2 số BigInt (số dạng string). Khi ấy gần 4g chiều, mình code mà anh ấy hối mình gấp nên mình viết ra một đống code không ưu nhìn cho lắm và không chạy được. Anh ấy nói thôi rồi cho mình đi về. Lúc lấy xe ra về, mình mới nhận ra bài này tuy không khó nhưng có nhiều thứ cần xử lý, không phải gấp là làm được, dù mình đã từng làm bài này rồi. Thế nhưng mình chấp nhận và chờ phản hồi.
- Gần một tuần không thấy thông báo, mình liền chủ động chat skype hỏi chị nhân sự. Chị ấy thông báo mình rớt rồi do yêu cầu công ty cao hơn.
Qua dây, mình biết được rằng việc làm liên quan đến giải thuật dù hiếm nhưng không phải là không có, thậm chí là lương cao nữa. Đây đúng với định hướng của mình, nhưng tiếc là trình độ chưa đủ. Nghe nói nếu được nhận vào làm thì lương sẽ là 2000 (USD hay SGD không rõ). Hy vọng trong tương lai sẽ đạt được.