07/11/2019, 15:02

Chuyện mình được nhận vào Google

“Google chỉ thuê những đứa thực tập sinh từ những trường top như Ivy Leagues thôi, phải GPA cao tít tắp hay có CV cực đỉnh thì may ra.” “90% thực tập sinh của Google toàn trên năm hai đó cậu ơi, năm nhất như tụi mình làm gì có cửa…” ...

“Google chỉ thuê những đứa thực tập sinh từ những trường top như Ivy Leagues thôi, phải GPA cao tít tắp hay có CV cực đỉnh thì may ra.”

“90% thực tập sinh của Google toàn trên năm hai đó cậu ơi, năm nhất như tụi mình làm gì có cửa…”

“Năm ngoái anh xem thống kê thì trên toàn Canada họ chỉ cho vào có tầm 10-15 người cho mỗi kỳ thực tập à, chưa kể trung bình mỗi trường đại học họ chọn có 2 người là cao nhất…”

Thế là có con bé năm nhất lon ton chạy đi nộp đơn lmao.

Image result for googleMình thích thì mình nhích hoy

À trước khi kể chuyện thì giới thiệu qua xíu chứ nhỉ.

Xin chào, mình tên là Scarlet, 18 tuổi, hiện đang học tập tại University of British Columbia, Canada. Một vài người biết mình qua series [Học được gì qua 4 năm định cư ở Canada?] và hiện tại đây năm thứ 5 của mình trên đất nước lá phong này.

Mục đích của bài này là để document lại toàn bộ quá trình từ nộp đơn đến phỏng vấn của mình vào Google – chuyện không quá đặc biệt nhưng trong khoảng thời gian vừa rồi mình đã khám phá ra nhiều điều hay ho về công ty này phết.

Vòng 1: Resume / CV

Google bắt đầu mở đơn tuyển cho internship hằng năm vào giữa tháng 9, với lượng người nộp thường đông khủng khiếp. Theo những gì mình tìm hiểu được thì năm ngoái (2018) họ nhận tận hơn 125,000 hồ sơ từ khắp nơi trên thế giới, nhưng chỉ tầm tầm một phần ba trong số đó sẽ được chọn phỏng vấn và cuối cùng chỉ còn lại ~3,000 người nhận được offer thôi.

Năm nay con số này còn tăng mạnh hơn vì ngành Computer Science (CS) / Computer Engineering (CE) đang là một trong những ngành hot nhất với vô số công nghệ nổi lên được mọi người thường nhắc tới ở mọi nơi như deep learning, blockchain, quantum computing etc. Ngay cả ở khối năm nhất của mình, khi chưa ai được chọn chuyên ngành cả, thì hầu như đứa nào mình gặp cũng đang chăm chăm nhắm vào vùng đất đầy màu mỡ này. Bạn bè của mình đứa nào cũng hăng hái rải resume ở khắp nơi, trung bình đều nộp chắc phải tầm 50-70 công ty gì đấy, còn mình thì lười nên nộp có mỗi Google…

Nguồn: code.org 

Càng tìm hiểu, mình càng thấy quá trình thuê tuyển nhân sự trong những công ty lớn thật sự rất kỳ công. Ví dụ, để giải quyết vấn đề nhận được một số lượng lớn hồ sơ như thế hằng năm, họ phải dùng tới một hệ thống tự động hoá quá trình lọc resume/CV với một số keywords nhất định nhằm loại bỏ những resume rác hoặc những người không đủ tiêu chuẩn ngay từ vòng đầu.

Ngoài ra, một chương trình internship bên này thường dựa vào rolling-basis – chỉ những ai quan tâm đủ tới internship mới có động lực nộp sớm, được xét trước và có khả năng được nhận sớm hơn. Môi trường cạnh tranh khốc liệu khiến đa số những thành phần đến sau vừa nộp đơn xong, còn chưa kịp nhấc mông đi phỏng vấn thì đã bị báo hết chỗ. Ngoài ra, mặt bất lợi nhất đối với mình có lẽ vẫn là việc hồ sơ của những đứa năm 1 sẽ auto bị đẩy xuống chót của cái danh sách xét tuyển, nhường vị trí cao hơn cho những anh chị năm 2,3 và 4 (aka. những người có nhiều kinh nghiệm hơn hẳn). Google có thông báo thẳng trên job-posting là họ sẽ thậm chí không xét đơn của sinh viên năm nhất cho tới tận tháng 12 cơ mà.

Thế là mình còn mỗi cách cố gắng cải tiến resume bằng cách hỏi thăm một anh bạn lập trình viên bên Toronto góp ý giúp và nộp đơn sớm nhất có thể, tầm 3 ngày sau khi application mở (18/9), với tâm trạng phấn khích xen lẫn hồi hộp.

Đây là cái resume mình dùng để nộp nè

Lúc nộp mình nghĩ là resume của mình được ngó qua thôi là đã vinh dự lắm rồi, chắc kiểu sẽ phải chuẩn bị tâm lý đợi tới tháng 12 để nghe thông báo bị từ chối là vừa. Đâu ngờ 3 ngày sau, mình nhận được email từ một cô recruiter (người tuyển dụng) cực kỳ xinh đẹp nhắn nhủ là,

“Chúc mừng em được chọn cho buổi phỏng vấn! Em có 4 ngày nữa cho đến lúc đó.  Trước khi phỏng vấn thì ký cho cô tầm 10 trang tài liệu với cả vài cái đơn NDA này trong thời gian sớm nhất nhé. Chúc em may mắn.”

Uhmmm, what……?!

Tâm trạng của mình lúc đó rõ hỗn loạn. Vui cũng có, mà thú thật thì khoảng thời gian gấp gáp khiến mình nhanh chóng trở nên hốt hoảng thì đúng hơn. Bình thường người ta chuẩn bị cho một buổi phỏng vấn cũng phải nửa tới 1 tháng, với những công ty lớn thì có người phải dành ra tới vài tháng, thậm chí tính theo năm luôn.

Và mình thì có 4 ngày.

Chuyện bên lề: Interview Prep.

Technical interviews là loại interview phổ biến nhất trong giới lập trình, xoay quanh những câu hỏi nhằm đánh giá kiến thức và kỹ năng chuyên môn của bạn qua cách tiếp cận và giải quyết những vấn đề khó. Dựa vào trình độ của bạn, người phỏng vấn (thường là senior developers) sẽ đưa ra các câu hỏi có độ khó khác nhau,

và ứng cử viên sẽ phải code giải pháp lên một cái bảng trắng ngay tại chỗ – hoặc trong trường hợp của mình, vừa giải thích qua điện thoại vừa code trên một cái shared Google Docs.

Thế là có đứa lại lăng xăng chạy đi tìm cái để học…

cấu trúc dữ liệu

Các thuật toán về sorting

Tự dưng phát hiện ra, cơ bản là mình sẽ phải chạy đi “ôn” những thứ mình sẽ học trong 4 năm tới :> Mình còn tìm hiểu được Google còn là một trong những công ty coi trọng nhất về khả năng mở rộng (scalability) và độ tối ưu (efficiency) trong một hệ thống khiến những câu hỏi của họ nổi tiếng khó, đòi hỏi một phản ứng thật nhanh nhẹn với các thuật toán/phương trình được đưa ra và một người phải hiểu rõ độ phức tạp thời gian và không gian (time & space complexity) của đoạn code họ viết thế nào, rồi từ đó tối ưu hoá ra câu trả lời tốt nhất dựa trên bối cảnh.

Nhưng như thế vẫn chưa đủ. Ứng cử viên còn cần phải vừa tư duy vừa truyền đạt suy nghĩ của mình tới người phỏng vấn cùng một lúc, và đây có lẽ là yếu tố quan trọng nhất của một buổi phỏng vấn thành công: giao tiếp (communication). Thường những câu hỏi sẽ bị xáo trộn và thiếu mất nhiều mảnh thông tin quan trọng, và công việc của một ứng cử viên tốt là phải liên tục hỏi người phỏng vấn cho tới khi nào nắm thật rõ đề bài thì thôi. Các bước cơ bản thường sẽ nhìn như sau:

1. Giải thích câu hỏi lại một lần nữa theo ý bản thân hiểu

2. Hỏi những câu như “tôi nghĩ là abc xyz… có phải vậy không?”

3. Đưa ra những ví dụ cho giải pháp của vấn đề, thường thì nên cho một trường hợp bình thường (normal case) và ít nhất 2 trường hợp edge/corner/boundary cases -> hỏi người phỏng vấn lại một lần nữa nếu bạn đang đi đúng hướng

4. Quyết định cấu trúc dữ liệu (data structure) mà bạn sẽ dùng cho giải pháp

5. Bắt đầu code, và trong khi code thì nên vừa viết vừa liên tục giải thích cho người phỏng vấn biết bạn đang áp dụng thuật toán nào hay mạch tư duy của bạn ra sao etc.

Mình đã đâm đầu vào học gần như là ngày đêm cho sự kiện này với sự giúp đỡ của các platform quen thuộc về lập trình như LeetCode và HackerRank. Thậm chí mình còn nhờ vài người bạn giúp mình mô phỏng lại buổi phỏng vấn để mình quen hơn với kiểu vừa nói vừa động não liên tục. Nhớ những buổi ban đầu mình còn lắp bắp mãi không biết nói gì cơ, mặt mình lúc đấy nhìn ngu ngơ không chịu được làm đám bạn cứ trêu mãi sau này thôi haha.

Ngày phỏng vấn (1/10), mình có 2 buổi phỏng vấn trên điện thoại kéo dài 2 tiếng liên tục, mỗi buổi sẽ có một anh lập trình viên Google được chọn ngẫu nhiên từ khắp nơi trên nước Mỹ để phỏng vấn mình. Lúc đó đã có con bé lo lắng đến nỗi phải dành ra tận 30 phút trước khi phỏng vấn để tự hít thở sâu trấn an bản thân, tạm bỏ lại những cảm xúc vụn vặt sau lưng và tập trung hết sức vào những gì sẽ xảy ra sắp tới.

Cố lên, rồi mọi thứ rồi sẽ ổn thôi Scarlet. *tự vỗ vỗ vai*

Vòng 2: Interview

Pheww, may là hai anh lập trình viên phỏng vấn mình ai cũng dễ thương thân thiện hết làm tâm lý của mình được giải toả hơn siêu nhiều luôn.

Ở buổi phỏng vấn đầu tiên, mình được hỏi về công nghệ mà mình đang yêu thích nhất là gì nhằm mục đích “làm nóng người” và ngay sau đó là đi thẳng vào câu hỏi lập trình, không một chút câu nệ tiểu tiết. Đây là một câu hỏi mẫu được đăng trên sẵn trên Youtube:

Khi nhận được đề bài, việc mình làm đầu tiên là làm sáng tỏ đề bài bằng cách đặt thật nhiều câu hỏi và suy nghĩ thấu đáo những trường hợp cá biệt, để rồi tiếp cận vấn đề bằng cách giải nguyên thuỷ nhất (brute force approach) để thiết lập một điểm bắt đầu. Việc phải liên tục nói ra suy nghĩ của mình khiến 1 tiếng trôi qua nhanh chóng. Một yếu tố chiếm kha khá thời gian nữa là mình phải liên tục nghĩ cách nâng cấp code ở phiên bản hiện tại chạy nhanh hơn / tốn ít dữ liệu hơn. Đặc biệt là, mỗi khi mình gần hoàn thành đến nơi, anh phỏng vấn lại thêm vào “một vài vấn đề nhỏ” để tăng độ “thú vị” nên mình chỉ đành cười (khổ) và cố gắng giải tiếp. Tầm 5 phút cuổi buổi, mình đã được hỏi anh đủ thứ về Google và nghe anh kể vài câu chuyện thật hay ho khiến mình vui đến nỗi cười toe toét, đâu phải lúc nào cũng có vinh dự được nói chuyện với kỹ sư Google đâu chớ.

Buổi phỏng vấn thứ 2 cũng gần giống vậy, chỉ là lần này thay vì được luyên thuyên chém gió về công nghệ, anh phỏng vấn đưa ngay một đoạn code dài nhìn phát hoảng và hỏi mình,

“Đây là phần code reading. Em có biết khái niệm Promise trong lập trình không? Nếu không thoải mái thì anh có thể đổi câu hỏi.” 

“Dạ em không biết, mặt dù có nghe qua nhưng chưa dùng bao giờ. Nhưng mà em không ngại học cái mới, anh có thể giải thích sơ qua cho em khái niệm được không ạ? Em muốn thử sức.”

Khái niệm về Promise và Async trong JavaScript

Thế là tầm 3 phút tiếp theo mình phải học một kiến thức mới ngay tại chỗ và dùng nó để áp dụng cho đoạn code bên trên để viết ra kết quả là gì. Lần đầu tiên nhìn câu hỏi mình hoang mang kinh khủng, không biết đoạn code đang cố gắng làm gì cả nên thấy khó khăn vô cùng. May mà bình tĩnh lại được sau đó, ngẫm nghĩ tầm vài phút sau thì mình nhìn ra được cốt lõi vấn đề và viết ra đáp án đúng luôn. Anh phỏng vấn chắc bất ngờ nên thốt lên “Bingo!” và bật cười vui vẻ bảo không ngờ mình học nhanh thế ???? Sau đó thì quá trình giải câu hỏi xảy ra tương tự như buổi phỏng vấn đầu, chỉ khác là ở mức độ khó hơn nhiều nhưng may mắn là mình vẫn ra kết quả trong thời gian cho phép.

Kết thúc 2 cuộc phỏng vấn mình liền gục xuống bàn, còn tay chân thì bủn rủn hết cả luôn. Trải nghiệm kiểu này vui và căng hơn nhiều so với dự đoán ban đầu, nhưng chung quy lại thì nó vẫn vô cùng quý báu và có thể nói mình cảm thấy cực kỳ biết ơn khi một cơ hội hiếm hoi có thể đưa mình xa được đến mức này.

Vòng 3: Hiring Committee

Thật lòng mà nói, đây là khoảng thời gian dàaaaaaiiiiiiiiii nhấtttttttt trong đời mà mình từng trải qua. Tỉ lệ được chọn quá thấp khiến mình suốt ngày thấp thỏm không yên, càng không đành lòng nếu lỡ nhìn thấy thư từ chối mặc dù chưa bao giờ dám nghĩ bản thân có thể được nhận được offer. Thế là tự làm bản thân lâm vào tình trạng thường xuyên giữ điện thoại bên người nhưng lại chẳng dám kiểm tra email…

Theo những gì mình tìm hiểu được thì sau buổi phỏng vấn, người phỏng vấn sẽ phải điền vào một cái đơn feedback dài hơi và cực kỳ chi tiết về ứng cử viên và gửi lại cho recruiter sớm nhất có thể. Thường quá trình này sẽ mất từ 2-3 ngày, và một khi nhận được recruiter sẽ bắt đầu soạn thảo, sắp xếp lại tất cả thông tin của ứng cử viên vào một packet, bao gồm:

• Resume

• Câu hỏi dùng trong phỏng vấn và câu trả lời của ứng cử viên

• Thư giới thiệu (nếu có)

• Một vài ghi chú nhỏ của recruiter về ứng cử viên

và đưa nó xuống dưới cùng của danh sách ứng cử viên đang cần được duyệt. Ở Google, có nhiều hội đồng chuyên đưa ra quyết định thuê tuyển cho internship được gọi là Hiring Committee (HC), thường là những người nắm giữ chức vị cấp cao (senior roles) và đã có kinh nghiệm lâu năm trong việc tuyển chọn một bộ phận nhất định trong công ty. Mỗi tuần họ sẽ có một buổi họp (theo như mình stalk được thì thường vào buổi sáng thứ 3 hoặc 5) để xét duyệt một lô tầm 7-10 ứng cử viên cho tuần đó và quyết định có đi tới offer hay không.

Quá trình từ recruiter đến HC thường sẽ xảy ra như sau:

  • Trước cuộc họp 1-2 ngày, HR sẽ đăng tất cả tài liệu về lô ứng cử viên của tuần đó lên hệ thống và gửi email kèm link về hồ sơ của từng người tới mọi thành viên trong HC
  • Một khi nhận được email, mỗi thành viên HC sẽ phải cho một đánh giá chung chung (thuê / không thuê), mặc định một điểm số họ cho là phù hợp từ 1 đến 4
1 = Không nên thuê
2 = Tôi nghĩ là không nên thuê, nhưng chúng ta vẫn nên xem xét kỹ hơn
3= Tôi nghĩ đây là người phù hợp, nhưng chúng ta vẫn nên xem xét kỹ hơn
4 = Nên thuê

(btw thì để được nhận, ứng cử viên phải cần số điểm trung bình từ 3 trở lên)

và viết một nhận xét chi tiết về mỗi ứng cử viên.

=> Mọi thứ sẽ được thực hiện trên hệ thống một cách độc lập và ẩn danh trong khoảng thời gian này nhằm giảm thiểu thiên kiến từ đám đông lên một cá nhân

  • Tới ngày họp, recruiter sẽ chiếu packet của từng ứng cử viên lên một màn hình lớn, và lúc này tất cả các đánh giá/điểm/nhận xét độc lập của từng thành viên trong HC tự làm trước đó sẽ được công khai cùng với hồ sơ nguyên bản của ứng cử viên

=> Thường 2/3 trong số ứng cử viên sẽ nhận được số điểm tương đối gần nhau từ các thành viên HC (khi xem xét độc lập) nên trong buổi họp, HC sẽ có quyết định nhanh chóng (khi xem xét tập thể) nếu họ muốn nhận ứng cử viên này hay không. Nếu một ứng cử viên nhận được nhiều ý kiến trái chiều, HC sẽ dành nhiều thời gian hơn để phân tích và lắng nghe ý kiến từ mọi phía.

Có 4 mảng chính cần được đánh giá cho một ứng cử viên:

  1. Khả năng phân tích và giải quyết vấn đề (qua buổi phỏng vấn)
  2. Kinh nghiệm làm việc:
    – Viết code sạch và đẹp, hiệu quả cao, không quá chậm, etc. (code sample từ buổi phỏng vấn)
    – Kinh nghiệm trong quá khứ (resume)
3. Khả năng lãnh đạo: tự biết phải làm gì khi không có nhiều chỉ dẫn từ cấp trên
4. Googliness: tính cách có phù hợp với văn hoá của Google hay không (qua cách nói chuyện trong lúc phỏng vấn và trao đổi email với HR)

Trong trường hợp HC vẫn không quyết định được sau khi họp, sẽ có 2 hướng xảy ra:

1. Xếp thêm một buổi phỏng vấn thứ 3 để có cái nhìn toàn diện hơn về ứng cử viên

2. Từ chối thẳng

Trường hợp 2 sẽ phổ biến hơn vì Google có một văn hoá nặng về “false positive” – có nghĩ thà lỡ người giỏi còn hơn thuê nhầm người tệ. Điều đó khiến HC quan niệm việc đang phân vân đồng nghĩ với “không nên thuê”. Thêm vào đó, việc đặt lịch interview thường khá mất thời gian của mọi người nên trường hợp đầu thường được tránh nhất có thể.

  • Sau buổi họp sẽ có kết quả ngay lập tức, và lúc đó recruiter sẽ bắt đầu gọi/email thông báo cho ứng cử viên về quyết định của HC

=> Dù được nhận hay từ chối thì ứng cử viên vẫn sẽ nhận được một cuộc gọi

Kết quả

22/10 – Đúng 3 tuần sau ngày mình phỏng vấn, mình lỡ cú điện thoại từ cô recruiter khi đang gật gù trong lớp Sinh Học. Sau đó khi phát hiện ra cuộc gọi nhỡ từ Google trên điện thoại, mình tá hoả chạy như bay ra khỏi lớp và tìm chỗ nào có wifi tốt nhất để nhắn lại hỏi cô có thể gọi lại mình không. 10 phút đợi sau đó mình cứ cầm điện thoại vừa run thật run, không biết chuyện gì sẽ xảy đến đây nên cứ nhắm mắt cầu nguyện cái đã. Vì đời người ai cũng cần một chút may mắn…
“Em chào cô ạ”
“Chào buổi sáng, em cảm thấy thế nào?”
“Dạ tốt, cô thì sao?”
“Ừ cô vẫn khoẻ…. Well, cô có tin tốt là,
CHÚC MỪNG EM ĐÃ ĐƯỢC NHẬN VÀO INTERNSHIP CỦA GOOGLE! 
Em có thể dành ra 10-15 phút sắp tới để nghe về thông tin công việc cho hè năm sau không?”

Lúc đó mình không tin được vào tai mình nên đứng đờ ra một lúc luôn, mọi chuyện như là một giấc mơ vậy ????

Thế là có con bé cứ ngoan ngoãn dạ dạ vâng vâng, mặt mày ngu ngơ suốt nửa tiếng sau đấy lol.

Trời ạ, quyền lợi của Google dành cho sinh viên thật tốt quá sức tưởng tượng. Cô recruiter bảo mình sẽ được trả lương, tiền nhà và ăn sẽ được bao hết bởi công ty (đồ ăn trong Google nghe bảo chất lượng cao và ngon cực), và tuần đầu tiên sẽ được qua New York cho một tuần orientation với chỗ ở và vé máy bay sẽ được cung cấp đầy đủ luôn. Ngoài ra ở Google, những thứ như gym, hồ bơi, dịch vụ mát xa hoặc xe đạp/xe hơi sẽ miễn phí hết cho nhân viên nữa.

Đây sẽ là toà nhà, nơi làm việc của mình hè năm sau

Họ còn có một đội chuyên đi thiết kế trải nghiệm cho internship để đảm bảo thực tập sinh sẽ có những trải nghiệm tuyệt nhất trong mùa hè như đi xem phim, đấu bóng rổ, hoặc đi ăn cùng nhóm thực tập. Cô recruiter còn bảo mình sẽ có nhiều cơ hội gặp gỡ và học hỏi từ những kỹ sư lâu năm trong ngành qua những bài giảng và workshops dành riêng cho thực tập sinh vào hè năm sau nữa, nghe mà mà mình cười tít cả mắt lại luôn.

Vòng 4: Host Matching

Sau khi ký hợp đồng xong hết thì mình hiện đang ở giai đoạn chờ phỏng vấn các đội ở Google để chọn dự án làm việc cho 3 tháng hè năm tới. Cơ bản là chờ tiếp thôi, khi có cập nhật gì mới hơn mình sẽ bổ sung vào phần này sau.

Kết

Cũng lâu rồi chưa viết bài nên nếu câu chữ có hơi lộn xộn thì mọi người thông cảm cho mình nhé, nếu ức chế quá thì cứ comment đi, mình sẽ cố gắng hoàn thiện bài tốt hơn!

Trải nghiệm nộp đơn cho Google của mình chỉ vỏn vẹn hơn 1 tháng thôi nhưng đã có rất nhiều chuyện xảy ra, mình cũng đã học được rất nhiều thứ trong thời gian này. Nó cũng phần nào chứng minh được không cần phải học trường quá cao siêu hay là thiên tài mới được nhận, vì những người biết mình từ trước thì sẽ rõ mình là một đứa cực kỳ bình thường, học hành cũng chẳng giỏi tới mức top hay thông minh xuất chúng gì cả. Thành công lần này do một phần nộp sớm và chuẩn bị kỹ, một phần kinh nghiệm làm việc mình có trước đó, và chắc chắn không thể thiếu một phần may mắn. Mình không rõ yếu tố may mắn chiếm bao nhiêu, nhưng có một điều mình chắc chắn là: nếu như mình sợ lúc đầu và tự ti rụt lại thì sẽ không có bài này ở đây cho mọi người đọc đâu ????

Hiện tại mình đang tập trung để kiểm tra trong trường nhưng sự háo hức dành cho mùa hè năm sau khi chưa bao giờ giảm. Có khi đến lúc đấy lại viết thêm phần 2 cho series trải nghiệm Google nhỉ, hmm có thể nếu mình có hứng haha. Nếu đủ thời gian thì mình cũng mong là được về thăm VN được năm sau trước kỳ thực tập vì một phần muốn được gặp vài anh chị mình cực kỳ mến trên Spiderum nữaaaa.

TechTalk via Spiderum
0