[Youth Confessions] Chia Sẻ Của Một Cô Gái Được Cả Facebook và Google Mời Phỏng Vấn
Làm thế nào để được mời phỏng vấn?
Câu hỏi này nhận được khá nhiều sự quan tâm của các bạn mình. Mình nhận
được invitation thông qua một người anh mình .. không biết. Đợt đó, mình
có lang thang trên các diễn đàn Tech và chợt thấy một bài post của một engineer
về việc giới thiệu CV để phỏng vấn Facebook. Lúc đó thật sự mình cũng không
quan tâm lắm. Mình chỉ nghĩ gửi CV cho ảnh để thử vận may, chứ không tự tin vào
CV của mình có thể vượt qua vòng scan của ảnh. (Ảnh là người review CV, nếu
thấy ổn thì sẽ approve và pass qua vòng scan CV).
Lúc đó là tháng 8, bẵng đi một tháng sau đó, mình nhận được invitation letter
của Facebook cho vị trí Data Engineer. Mình khá tiếc, vì nếu chú tâm ngay từ
tháng 8 thì đã bắt đầu vào ôn tập lâu rồi.
2. Qui trình phỏng vấn
Tiếp theo letter, mình nhận được email của recruiter. Cô ấy đặt lịch hẹn
vào một tuần sau khi mình nhận được email này. Nội dung email này đại khái say
hello, giới thiệu một chút về cô ấy là ai, cảm ơn vì mình đã quan tâm vị trí
này, introduce sơ sơ về bản thân mình, và setup lịch. Mình đọc và đinh ninh chỉ
có thế (ai ngờ là một cái trap to đùng, cay phết, nhưng để phần dưới mình nói
rõ hơn).
Vòng tiếp theo sẽ là coding online. Vì mình phỏng vấn cho vị trí Data Engineer,
nên sẽ test thuật toán và SQL. Thuật toán thì bạn có thể tự do chọn ngôn ngữ
(chỗ này cũng mình có phần ngu học, để nói ở dưới) mà bạn quen thuộc.
Next, sẽ là vòng phỏng vấn về System Design.
Finally, nếu vượt qua, bạn sẽ được mời sang phỏng vấn online tại Headquater của
Facebook.
Mình có hỏi tổng thời gian nếu có thể pass hết các round và nhận offer letter
là khoảng 2 tháng.
3. Các vòng phỏng vấn
Bắt đầu với câu chuyện với recruiter. Có một điều thú vị nho nhỏ, hơi
Creepy một tí. Đó là giọng của cô recruiter này .. y hệt giọng robot. Cao
độ, nhịp độ, cách đọc đều đều như nhau, và nghe giọng thì cứ tưởng là mình đang
bộ phim có robot nói chuyện. Nói chung là hơi creepy .
Thông thường thì mình phỏng vấn với recruiter ở nước ngoài đa số dùng skype.
Nhưng cô recruiter này gọi điện trực tiếp vào mobile. Gọi theo ngôn ngữ phỏng
vấn là vòng Phone Screen.
Cái ngu của mình bắt đầu xuất hiện ở đây. Do mình không đọc kĩ review của các
bạn phỏng vấn trước, nên cứ nghĩ phone screen đơn giản là trao đổi một vài
thông tin nho nhỏ trước khi vào phỏng vấn technical thật sự.
Té ra phone screen nó bao gồm cả phỏng vấn kĩ thuật, đại loại là scanning ứng
viên không đáp ứng điều kiện cơ bản ngay từ đầu.
Nên đến lúc màn dạo đầu kết thúc, mình tưởng cổ sẽ nói see you in … Ai dè
cổ nói một câu, mình mém bật ngửa:
“Ok, so now I have a little technical question for you, it’s take about
15 minutes. Try to answer shortly. Are you ok with that?”
No, I’m not OK.
Mình định bụng trả lời vậy, mình ngu, nhưng không đến nỗi trả lời not OK để rớt
ngay từ vòng giữ xe. Nhưng lúc đó thực sự là hơi choáng. Vì mình chưa chuẩn bị
được gì hết. Kiến thức về data structure — algorithms chỉ nhớ chút ít, hỏi đến chắc là cứng học.
Nhưng mà lỡ phóng lao rồi, thì phải theo thôi. “I’m ready”. Mình said cứng rắn,
nhưng thực chất là run vãi.
Câu thứ nhất:
1. … of median? (what the hell, what is median?). Nghe xong câu đầu tiên
là toát hết mồ hôi. Không nghe được phần đầu câu hỏi, mà ngay cả nghe ra chữ
“median” thì cũng không biết nó là cái gì.
“Sorry, I don’t know this”. Mình said. Lòng thầm mong recruiter suggest cho
mình chút chút, nhưng cổ move qua next question luôn.
2. How to traverse node data in binary tree?.
Tiêu tập 2. Câu này nghe quen vãi, nhưng mà không nhớ được. Xem nào, ok binary
tree biết rồi, hình dung ra trong đầu xem làm sao để traversed cái tree đó? May
thay là mình nhớ ra, có 2 cách để làm, một là dùng BFS (Breadth First
Traversal), hai là DFS (Depth First Traversal). Cổ hỏi tiếp, giải thích
overview về hai thuật toán đó. Ừ thì đại loại là một cái traverse theo chiều
rộng, một cái traverse theo chiều sâu, đi vào các node một.
3. Cô recruiter ầm ờ, rồi next question.
“How to measure a algorithms?”. Lúc đầu mình không nghe ra chữ measure, phải
hỏi repeat lại 3 lần. Ban đầu tưởng là how to write. Sau khi nghe được key
measure thì mình bắn phát ra ngay: Big O Notation.
Câu này thì chắc đúng rồi, vì recruiter hỏi tiếp:
“So how many metrics to measure?”. Time complexity và Space complexity. Không
cần phải suy nghĩ, tại vì mới ôn lại tuần trước đó. hehe.
4. “Which tree structure has ordered, no node
in the tree stores the key associated with that node?”. Câu này cứng họng
khoảng 30s. Ok, bình tĩnh. Liệt kê các kiểu cấu trúc tree xem nào. Binary tree,
balance, red-back tree. Mình nhớ mang máng là có một vài tree sắp sẵn order thì
phải. Trong đó Trie và một tree gì nữa. Mà không nhớ được, mình trả lời Trie
luôn. Ai dè đúng (mình check google sau khi phỏng vấn).
5. “If have one of table has an index on the
join columns, only the one table that doesn’t have the index will need to be
sorted before the merge step can happen?” Câu này làm mình hơi xoắn. Thú thực
là chưa bao giờ đo độ phức tạp của các thuật toán trong SQL. Mình trả lời dựa
trên cách hiểu sơ lược của mình là O(N log N). Search kết quả thì bị sai, mình
làm chỉ đúng 1 phần, thiếu một tham số khác N (vì đây là Join, nên phải có tham
số thứ 2).
Kết thúc phần phone screen. Mình hơi hoang mang vì chỉ trả lời chắc ăn được
2 câu, 2 câu kia thì cũng có kiến thức để trả lời, nhưng hỏi khó quá nên mình
cũng chỉ đưa ra nhận định chủ quan. Chả biết có pass vòng này không?
Recruiter nói là sẽ cho biết kết quả ngay trong tuần.
1 tuần sau mình có kết quả. Hồi hộp vãi. Kết quả … mình nhận được
feedback của recruiter :P. Đại thể là after discuss with hiring manager,
mặc dù không trả lời hoàn hảo lắm, nhưng đủ để đến vòng kế tiếp. Lúc đó đang
làm ở công ty mà muốn đứng lên đấm mặt thằng bạn mấy cái. Quá sức là hào hứng.
Kèo theo email là bộ tài liệu chuẩn bị cho next round. Viết coding thuật
toán và SQL. Ở trên mình có nói mình bị ngu vụ chọn ngôn ngữ. Mình nói với họ
là mình code được Python. Vì mình nghĩ là Data Engineer thì chọn Python cho chắc ăn. Python
lúc đó mình không biết chữ nào hết, cứ nghĩ là biết Ruby thì switch qua Python
dễ thôi. Ừ thì cũng đúng, nhưng mà có những detail trong đó nếu mình không làm
quen Python thì không biết. Hệ quả là biết làm thế nào bên Ruby, nhưng code bên
Python đếch biết syntax phải viết thế nào. Và mình bị dính chưởng ngay trong
lúc phỏng vấn vì vụ này.
Đến ngày phỏng vấn, mình join vào platform codepad.io (platform chuyên dùng
để live coding, cả mình và người interview đều biết mình làm gì, gõ cái gì
trong đó và trao đổi trong lúc phỏng vấn). Đến vòng này thì họ bắt mình kí NDA.
NDA đại khái là một hợp đồng bảo mật thông tin, nếu đã kí nghĩa là bạn không
được tiết lộ nội dung các câu hỏi phỏng vấn cho người khác. Nên mình xin phép
không nói ra câu hỏi ở đây.
Sơ sơ thì phỏng vấn 8 câu hỏi, 4 thuật toán và 4 câu query SQL.
Về phần SQL thì mình nghĩ là đơn giản. Mà thực chất đơn giản chỉ khi bạn ôn
luyện thật kĩ SQL. Nếu recruiter không cho mình biết chủ đề có SQL, thì thú
thật là mình không biết query kiểu gì để ra được kết quả. Các câu SQL khá phức
tạp, đòi hỏi bạn phải áp dụng nhiều skills trong SQL, mà những skills này trong
công việc hằng ngày của mình trước đó thì không đến mức độ complex như vậy. Nên
nếu chủ quan là thọt ngay. May là mình chuẩn bị kĩ nên cũng ngon lành phần SQL.
Đến phần viết code Python thì thực sự là ác mộng. Mình chỉ có thể thốt một câu
là khó kinh dị. Khó từ cách chọn cấu trúc dữ liệu phù hợp, đến cách giải quyết
vấn đề để đạt độ phức tạp nhỏ nhất. Mình chỉ giải được 1 câu đầu tiên (mà thực
sự cũng xoắn não mãi mới ra), còn câu 2–3 phải nhờ đến suggest liên tục của
người phỏng vấn. Còn câu 4 thì hoàn toàn bó tay.
Mình không phải dân chuyên thuật toán, cày từ đại học, nên gặp thuật toán là
xoắn tới não. Sau đợt phỏng vấn hôm đó mình nhức đầu phải ngủ cả nửa ngày =.=.
Có một điểm mình cảm thấy rất vui là người phỏng của mình cực kì, cực kì nice.
Khi mình gặp stuck ở một đoạn nào đó, họ cho mình thời suy nghĩ, nếu thấy bế
tắc quá thì họ sẽ discuss với mình. Đang stuck chỗ nào, suy nghĩ thử xem chỗ
này biến đổi một chút được không, … Mặc dù không nói ra solution, nhưng họ
suggest cực kì tích cực. Mình có cảm giác, họ thực sự muốn mình có thể pass
được các câu hỏi này, muốn mình có thể đậu vào FB vậy. Chưa bao giờ mình gặp
người phỏng vấn nice đến vậy luôn. Dường như đây chỉ là một cuộc trao đổi, giúp
đỡ nhau tiến bộ hơn thôi chứ chẳng phải buổi phỏng vấn nào cả.
Họ hẹn tối thiểu 2 tuần sẽ có kết quả. Mình đến round này cảm thấy là quá
tầm rồi, chắc là không vượt qua được. Cảm thấy cũng hơi nản, chỉ là hơi thôi.
Cũng không thèm ôn tập nữa. Ai dè đâu nhận được mail là setup lịch để phỏng vấn
system design. Ôi thề, lúc đó mình mừng hết lớn. Cảm giác như chết đi sống lại
vậy. Tan hoang như vậy mà vẫn được phỏng vấn tiếp. Mình thầm cảm ơn nếu ông
phỏng vấn kia ở Vietnam mình sẽ khao ổng quẩy nát cái Sài Gòn, không có ổng
chắc mình fail luôn. Haha!
Thế rồi lại một khoảng thời gian ngắn, cho tới buổi phỏng vấn. Vòng này cực
kì khó nhằn, vì nó không chỉ đòi hỏi kiến thức, mà còn đòi hỏi kinh nghiệm của
bạn. Vì chỉ có làm trên hệ thống thật và to, thì mới đủ khả năng để design một
hệ thống chuẩn. Mình đi làm chỉ mới có 1.5 năm, mà quá nửa chỉ làm về lập trình
cơ bản, họa may chỉ là tí kiến thức về system ở Momo e-wallet. Nên vòng này
mình xác định tâm lí là .. chém gió hết mình.
Và thật sự là như vậy. Người phỏng vấn đưa ra độc nhất 1 câu hỏi. Design
cái hệ thống X đi. Đơn giản vậy thôi. Mình thiết nghĩ, đến vòng này ngoài
technical skills, thì cái quan trọng hơn là communicate với interviewer như thế
nào. Vì system design thì cần clear hết tất những ý tưởng, và thành phần cũng
như yêu cầu về mức độ trong đó. Nếu bạn không hỏi kĩ, thì sẽ rất khó chính bản
thân bạn trả lời. Mình đưa ra answer của mình sau khi communicate với ổng. Và
sau đây, là màn “vả vỡ mặt” của interview. Bắt đầu chặt từng components trong
design của mình. Hỏi đến đâu là vỡ mồm đến đó. Một là mình không hiểu rõ
components, thứ hai là mình không biết dùng gì ngoài component đó, nên ..
chém đại. Tựu chung thì chỉ có vài chữ là: fail hoàn toàn.
Họ cũng hẹn sẽ có kết quả. Nhưng lần này thì thực sự là quá tầm với mình
rồi. Không đỡ nổi nhát nào cả. Khoảng 1 tuần sau thì mình nhận được mail.
Họ tổng hợp feedback của các interviewer, và cuối cùng là kết quả.
Hi Giang Trinh,
Thanks for your interest in joining us at
Facebook as we work to bring the world closer together. Unfortunately, we have
decided not to move forward with your candidacy.
We value the time you have taken to find out
more about careers within Facebook. You will be contacted if we find that your
qualifications match any additional roles. Until then, we’d encourage you to
continue checking back on our careers page for future opportunities.
All the best.
Vậy là hành trình Facebook của mình kết thúc ở đây. Một giấc mơ lớn thứ hai
vụn vỡ.
4. Cảm nhận
Dù đã biết trước kết quả, nhưng vẫn có đôi chút buồn, nhưng mình không thất
vọng. Khoảng thời gian này mình có dịp nhìn lại cuộc hành trình Big Big Dream
của mình.
Thực ra, nếu nhìn lại thời điểm hơn đầu năm 2017, mình đã có tiến bộ vượt bậc
so với bản thân mình kì vọng. Và gặt hái được một số thành quả nho nhỏ. Rớt
Google, hay Facebook thực sự nó không có gì quá nghiêm trọng. Mình cũng chỉ mới
mơ giấc mơ đó chưa được 1 năm. Mình có cảm giác mình đang sống nhanh, đôi lúc
nhanh đến nỗi trượt ngã đôi lần, nhưng vậy đứng dậy, và chạy đua với thời gian.
Move fast, đương nhiên tốt. Nó giúp bạn đi nhanh hơn, đạt thành công sớm hơn,
nhưng vô tình tự tạo áp lực cho chính bản thân. Hơn một năm qua, mình liên tục
đẩy bản thân đến những giới hạn mới bằng cách chạy thật nhanh. Và mình mệt mỏi,
lần đầu tiên cảm nhận mệt mỏi đến vậy.
Trùng hợp là ngày mình nhận kết quả, đồng thời mình nhận được một email khác.
Một invitation từ khác Google.
Mình hơi bị choáng, vì chưa hết buồn thì một cơ hội “cũ” lại tới. It’s Google,
again. Mình mang cảm xúc khá hỗn loạn.
Mình dành một vài ngày nghỉ ngơi rồi tính sau. Và vài ngày sau đó, mình quyết
định không accept invitation này. Mình cần một khoảng thời gian break, nghỉ
ngơi trước khi lên kế hoạch cho con đường tương lai. Mặc dù khá tiếc nuối,
nhưng nếu cố đấm ăn xôi thì có khi lại ăn thêm vài cú đấm nữa.
Lời cuối, mình muốn chia sẻ rằng, chẳng giấc mơ
nào là viễn vông. Nhưng đôi lúc, chúng ta cần dừng và nhìn lại, trước khi chạy
thật về phía trước.
Tạm biệt giấc mơ to bự FaceOole. Tạm biệt không có nghĩa là dừng lại, tạm biệt
nghĩa là Strider sẽ trở lại ;).
--------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------
Hợp Tác Cùng YBOX.VN Truyền Thông Miễn Phí - Trả Phí Theo Yêu Cầu tại http://bit.ly/YBOX-Partnership
1,189 lượt xem