Chia Sẻ Của Một Cô Gái Được Cả Facebook và Google Mời Phỏng Vấn

Chia Sẻ Của Một Cô Gái Được Cả Facebook và Google Mời Phỏng Vấn

116 12/03/2019

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, hđến chc là cng hc.
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 ;).

BÌNH LUẬN

Ảnh đại diện của bạn