Làm thế nào để chuẩn bị cho một cuộc phỏng vấn tại Google và thất bại. Hai lần

Làm thế nào để chuẩn bị cho một cuộc phỏng vấn tại Google và thất bại. Hai lần

Tiêu đề bài viết nghe có vẻ thất bại hoành tráng nhưng thực tế mọi chuyện không đơn giản như vậy. Và nhìn chung, câu chuyện này đã kết thúc rất tích cực, mặc dù không có trên Google. Nhưng đây là một chủ đề cho một bài viết khác. Cũng trong bài viết này, tôi sẽ nói về ba điều: quá trình chuẩn bị của tôi diễn ra như thế nào, các cuộc phỏng vấn tại Google diễn ra như thế nào và tại sao, theo ý kiến ​​​​của tôi, mọi thứ lại không rõ ràng như vẻ ngoài của nó.

Làm thế nào nó tất cả bắt đầu

Một buổi tối mùa đông lạnh giá ở Síp, tôi chợt nảy ra ý nghĩ rằng kiến ​​thức về Khoa học Máy tính cổ điển của tôi còn rất xa so với mức trung bình và cần phải làm gì đó để giải quyết vấn đề đó. Nhân tiện, nếu ai đó chưa đọc tại sao buổi tối ở Síp và lạnh lẽo, thì bạn có thể tìm hiểu về nó đây. Sau một hồi suy nghĩ, nó quyết định bắt đầu bằng việc tham gia một khóa học trực tuyến về thuật toán và cấu trúc dữ liệu. Từ một trong những đồng nghiệp cũ của tôi, tôi đã nghe nói về khóa học của Robert Sedgewick trên Coursera. Khóa học bao gồm hai phần (Phần 1 и Phần 2). Nếu đột nhiên các liên kết thay đổi, bạn luôn có thể Google tên tác giả. Mỗi phần kéo dài 6 tuần. Đầu tuần giảng bài, trong tuần vẫn phải làm bài tập. Phần đầu tiên của khóa học bao gồm các cấu trúc dữ liệu cơ bản, các kiểu sắp xếp cơ bản và độ phức tạp của thuật toán. Phần thứ hai đã nâng cao hơn, bắt đầu bằng đồ thị và kết thúc bằng những thứ như Lập trình tuyến tính và Tính hấp dẫn. Sau khi suy nghĩ về tất cả những điều trên, tôi đi đến kết luận rằng đây chính xác là thứ tôi cần. Nhân tiện, một độc giả tò mò có thể hỏi, Google phải làm gì với nó? Và thực sự, cho đến thời điểm này anh ấy không liên quan gì đến nó cả. Nhưng tôi cần một mục tiêu, vì việc học buổi tối trong 12 tuần mà không có mục tiêu là điều hơi khó khăn. Mục đích của việc tiếp thu kiến ​​thức mới là gì? Tất nhiên, ứng dụng của họ trong thực tế. Trong cuộc sống hàng ngày, điều này khá rắc rối, nhưng trong cuộc phỏng vấn với một công ty lớn thì điều đó lại dễ dàng. Google nhanh chóng cho thấy rằng Google (tha thứ cho sự trùng lặp) là một trong những công ty lớn nhất ở Châu Âu (và tôi đang xem xét cụ thể ở Châu Âu) thực hiện các cuộc phỏng vấn như vậy. Cụ thể, văn phòng của họ đặt tại Zurich, Thụy Sĩ. Vậy là đã quyết định - hãy cùng nghiên cứu và phỏng vấn tại Google.

Chuẩn bị cho cách tiếp cận đầu tiên

12 tuần trôi qua nhanh chóng và tôi đã hoàn thành cả hai khóa học. Ấn tượng của tôi về các khóa học còn hơn cả tích cực và tôi có thể giới thiệu chúng cho bất kỳ ai quan tâm. Tôi thích các khóa học vì những lý do sau:

  • Giảng viên nói tiếng Anh khá rõ ràng
  • Vật liệu có cấu trúc tốt
  • Các bài thuyết trình tuyệt đẹp hiển thị nội dung bên trong của từng thuật toán
  • Lựa chọn vật liệu có thẩm quyền
  • Bài tập thú vị
  • Các bài tập được tự động kiểm tra trên trang web, sau đó báo cáo được tạo

Công việc của tôi trong các khóa học thường diễn ra như thế này. Tôi đã nghe bài giảng trong 1-2 ngày. Sau đó, họ làm một bài kiểm tra nhanh về kiến ​​thức của mình về tài liệu. Phần còn lại của tuần tôi thực hiện bài tập này nhiều lần. Sau lần đầu tiên tôi đạt được 30-70%, những lần tiếp theo mang lại kết quả lên 97-100%. Bài tập thường liên quan đến việc thực hiện một số thuật toán, ví dụ: Khắc đường may hoặc bzip.

Sau khi hoàn thành khóa học, tôi nhận ra rằng kiến ​​thức nhiều thì đi kèm với đó là nỗi buồn. Nếu trước đây tôi chỉ biết rằng tôi không biết gì cả thì bây giờ tôi bắt đầu nhận ra rằng chính tôi mới là người không biết.

Vì mới chỉ là tháng XNUMX và tôi đã lên lịch phỏng vấn vào mùa thu nên tôi quyết định tiếp tục việc học của mình. Sau khi xem xét các yêu cầu cho vị trí tuyển dụng, người ta quyết định đi song song hai hướng: tiếp tục nghiên cứu các thuật toán và tham gia một khóa học cơ bản về học máy. Đối với mục tiêu đầu tiên, tôi quyết định chuyển từ các khóa học sang một cuốn sách và chọn tác phẩm hoành tráng “Thuật toán”. Sổ tay thiết kế thuật toán. Không hoành tráng như của Knut, nhưng vẫn vậy. Với mục tiêu thứ hai, tôi quay lại Coursera và đăng ký khóa học của Andrew Ng. Machine Learning.

3 tháng nữa trôi qua và tôi đã hoàn thành khóa học và cuốn sách.

Hãy bắt đầu với cuốn sách. Việc đọc hóa ra khá thú vị, mặc dù không dễ dàng. Về nguyên tắc, tôi muốn giới thiệu cuốn sách này, nhưng không phải ngay lập tức. Nhìn chung, cuốn sách cung cấp cái nhìn sâu hơn về những gì tôi đã học được trong khóa học. Thêm vào đó, tôi đã khám phá ra (từ quan điểm chính thức) những thứ như phương pháp phỏng đoán và lập trình động. Đương nhiên là tôi đã từng sử dụng chúng trước đây nhưng tôi không biết chúng được gọi là gì. Cuốn sách còn chứa đựng một số câu chuyện về cuộc đời tác giả (War Story), điều này phần nào làm loãng tính chất hàn lâm của cách trình bày. Nhân tiện, nửa sau của cuốn sách có thể được bỏ qua, thay vào đó nó mô tả các vấn đề hiện có và phương pháp giải quyết chúng. Nó rất hữu ích nếu nó được sử dụng thường xuyên trong thực tế, nếu không nó sẽ bị lãng quên ngay lập tức.

Tôi hài lòng hơn với khóa học. Tác giả biết rõ nội dung của mình và nói chuyện một cách thú vị. Cộng thêm một lượng kiến ​​thức khá lớn, cụ thể là đại số tuyến tính và kiến ​​thức cơ bản về mạng lưới thần kinh, tôi đã nhớ từ thời đại học nên không gặp bất kỳ khó khăn cụ thể nào. Cấu trúc của khóa học khá chuẩn. Khóa học được chia thành nhiều tuần. Hàng tuần có các bài giảng xen kẽ với các bài kiểm tra ngắn. Sau bài giảng, bạn được giao một bài tập cần làm, nộp và nó sẽ tự động được kiểm tra. Tóm lại, danh sách những điều được dạy trong khóa học như sau:
- chức năng ước lượng
- hồi quy tuyến tính
- xuống dốc
- chia tỷ lệ tính năng
- phương trình bình thường
- hồi quy logistic
- phân loại nhiều lớp (một so với tất cả)
- mạng lưới thần kinh
- Lan truyền ngược
- chính quy
- độ lệch/phương sai
- đường cong học tập
- số liệu lỗi (độ chính xác, thu hồi, F1)
- Hỗ trợ Máy Vector (phân loại lề lớn)
— K-nghĩa
-Phân tích thành phần chính
- phát hiện bất thường
- lọc cộng tác (hệ thống đề xuất)
- giảm dần độ dốc ngẫu nhiên, theo đợt nhỏ, theo đợt
- học trực tuyến
- giảm bản đồ
- phân tích trần
Sau khi hoàn thành khóa học, tôi đã hiểu rõ về tất cả các chủ đề này. Sau 2 năm, gần như mọi thứ đều bị lãng quên một cách tự nhiên. Tôi giới thiệu nó cho những người chưa quen với học máy và muốn hiểu rõ về những điều cơ bản để tiếp tục.

Lần chạy đầu tiên

Bây giờ đã là tháng XNUMX và đã đến lúc nghĩ đến việc phỏng vấn. Vì việc đăng ký qua trang này khá tai hại nên tôi bắt đầu tìm kiếm những người bạn làm việc tại Google. Sự lựa chọn rơi vào nhân viên dữ liệu, vì anh ấy là người duy nhất tôi biết trực tiếp (ngay cả khi không phải về mặt cá nhân). Anh ấy đồng ý chuyển tiếp sơ yếu lý lịch của tôi và ngay sau đó tôi nhận được thư từ nhà tuyển dụng đề nghị dành một chỗ trên lịch của anh ấy cho cuộc trò chuyện đầu tiên. Chúng tôi đã thử liên lạc qua Hangouts nhưng chất lượng kém nên chúng tôi chuyển sang dùng điện thoại. Đầu tiên, chúng tôi thảo luận nhanh về tiêu chuẩn như thế nào, tại sao và tại sao, sau đó chuyển sang sàng lọc kỹ thuật. Nó bao gồm hàng chục câu hỏi với tinh thần “việc chèn vào bản đồ băm có khó khăn gì không”, “bạn biết những cây cân bằng nào”. Sẽ không khó nếu bạn có kiến ​​thức cơ bản về những điều này. Buổi sàng lọc diễn ra tốt đẹp và dựa trên kết quả, họ quyết định tổ chức buổi phỏng vấn đầu tiên sau một tuần.

Cuộc phỏng vấn cũng diễn ra qua Hangouts. Đầu tiên họ nói về tôi khoảng 5 phút, sau đó chuyển sang vấn đề. Vấn đề là ở đồ thị. Tôi nhanh chóng nhận ra những gì cần phải làm, nhưng tôi đã chọn sai thuật toán. Khi tôi bắt đầu viết mã, tôi nhận ra điều này và chuyển sang một tùy chọn khác và tôi đã hoàn thành. Người phỏng vấn đã hỏi một số câu hỏi về độ phức tạp của thuật toán và hỏi liệu nó có thể được thực hiện nhanh hơn không. Bằng cách nào đó tôi đã trở nên buồn tẻ và không thể làm được. Lúc này, thời gian đã hết và chúng tôi nói lời tạm biệt. Sau đó, sau khoảng 10 phút, tôi nhận ra rằng thay vì thuật toán Dijkstra mà tôi đã sử dụng, trong vấn đề cụ thể này, tôi có thể sử dụng tìm kiếm theo chiều rộng và nó sẽ nhanh hơn. Sau một thời gian, nhà tuyển dụng gọi điện và nói rằng cuộc phỏng vấn nhìn chung diễn ra tốt đẹp và nên tổ chức một cuộc phỏng vấn khác. Chúng tôi đã đồng ý vào một tuần nữa.

Lần này mọi chuyện trở nên tồi tệ hơn. Nếu lần đầu người phỏng vấn tỏ ra thân thiện, hòa đồng thì lần này anh có phần u ám. Tôi không thể tìm ra vấn đề ngay lập tức, mặc dù về nguyên tắc, những ý tưởng mà tôi nghĩ ra có thể dẫn đến giải pháp cho nó. Cuối cùng, sau nhiều lần gợi ý của người phỏng vấn, giải pháp đã đến với tôi. Lần này hóa ra lại là tìm kiếm theo chiều rộng, chỉ từ một số điểm. Tôi đã viết các giải pháp, đáp ứng chúng đúng thời hạn nhưng lại quên mất những trường hợp khó khăn. Một lúc sau, nhà tuyển dụng gọi điện và nói rằng lần này người phỏng vấn không hài lòng, vì theo ý kiến ​​của anh ấy, tôi cần quá nhiều gợi ý (3 hoặc 4 đoạn) và tôi liên tục thay đổi mã khi viết. Dựa trên kết quả của hai cuộc phỏng vấn, tôi quyết định không tiến xa hơn mà sẽ hoãn cuộc phỏng vấn tiếp theo trong một năm, nếu tôi muốn. Đó là lý do tại sao chúng tôi nói lời tạm biệt.

Và từ câu chuyện này tôi đã đưa ra một số kết luận:

  • Lý thuyết là tốt, nhưng bạn cần nhanh chóng điều hướng nó
  • Lý thuyết mà không thực hành sẽ không giúp ích được gì. Chúng ta cần giải quyết vấn đề và đưa việc mã hóa trở nên tự động.
  • Rất nhiều điều phụ thuộc vào người phỏng vấn. Và không có gì có thể được thực hiện về nó.

Chuẩn bị cho lần chạy thứ hai

Sau khi suy nghĩ về tình hình, tôi quyết định thử lại sau một năm nữa. Và chỉnh sửa một chút mục tiêu. Nếu như trước kia mục tiêu chính là học tập, phỏng vấn ở Google như củ cà rốt xa xôi thì bây giờ đậu phỏng vấn là mục tiêu, học tập là phương tiện.
Vì vậy, một kế hoạch mới đã được phát triển, bao gồm các điểm sau:

  • Продолжать изучать теорию путем чтения книжек и статей.
  • Giải các bài toán thuật toán với số lượng 500-1000 miếng.
  • Tiếp tục học lý thuyết bằng cách xem video.
  • Tiếp tục học lý thuyết qua các khóa học.
  • Nghiên cứu trải nghiệm của người khác qua các cuộc phỏng vấn tại Google.

Tôi đã hoàn thành kế hoạch trong vòng một năm. Tiếp theo tôi sẽ mô tả chính xác những gì tôi đã làm cho từng điểm.

Sách và bài báo

Tôi thậm chí còn không nhớ mình đã đọc bao nhiêu bài báo, tôi đọc cả bằng tiếng Nga và tiếng Anh. Có lẽ là trang web hữu ích nhất đây. Tại đây bạn có thể tìm thấy mô tả về một số lượng lớn các thuật toán thú vị kèm theo các ví dụ về mã.

Tôi đã đọc 5 cuốn sách: Thuật toán, ấn bản thứ 4 (Sedgewick, Wayne), Giới thiệu về thuật toán ấn bản thứ 3 (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview ấn bản thứ 4 (Gayle Laakmann), Lập trình phỏng vấn tiếp xúc ấn bản thứ 2 (Mongan, Suojanen , Giguere), Các yếu tố của phỏng vấn lập trình (Aziz, Lee, Prakash). Chúng có thể được chia thành 2 loại. Đầu tiên bao gồm sách của Sedgwick và Corman. Đây là một lý thuyết. Phần còn lại là chuẩn bị cho cuộc phỏng vấn. Sedgwick kể về điều tương tự trong cuốn sách cũng như trong các khóa học của mình. Chỉ bằng văn bản. Sẽ không có ích gì nếu bạn đọc kỹ nó nếu bạn đã tham gia khóa học, nhưng dù sao thì nó cũng đáng để đọc lướt. Nếu bạn chưa xem khóa học, bạn nên đọc nó. Cormen có vẻ quá nhàm chán với tôi. Thành thật mà nói, tôi đã gặp khó khăn trong việc làm chủ nó. Tôi vừa lấy nó ra khỏi đó định lý chủvà một số cấu trúc dữ liệu hiếm khi được sử dụng (đống Fibonacci, cây van Emde Boas, vùng cơ số).

Bạn nên đọc ít nhất một cuốn sách để chuẩn bị cho cuộc phỏng vấn. Tất cả chúng đều được xây dựng trên cùng một nguyên tắc. Họ mô tả quá trình phỏng vấn ở các công ty công nghệ lớn, đưa ra những điều cơ bản về Khoa học Máy tính, các bài toán cho những điều cơ bản này, giải pháp cho vấn đề và phân tích giải pháp. Trong số ba phần trên, tôi có thể khuyên bạn nên sử dụng Cracking the Coding Interview là phần chính và phần còn lại là tùy chọn.

Các vấn đề về thuật toán

Đây có lẽ là điểm chuẩn bị thú vị nhất. Tất nhiên, bạn có thể ngồi xuống và giải quyết vấn đề một cách ngu ngốc. Có rất nhiều trang web khác nhau cho việc này. Tôi chủ yếu sử dụng ba: Hackerrank, CodeChef и LeetCode. Trên CodeChef, các vấn đề được chia theo độ khó chứ không phải theo chủ đề. Trên Hackerrank cả theo độ phức tạp và theo chủ đề.

Nhưng ngay lập tức tôi phát hiện ra rằng có một cách thú vị hơn. Và đây là những cuộc thi (thử thách lập trình hoặc cuộc thi lập trình). Tất cả ba trang web đều cung cấp chúng. Đúng, có vấn đề với LeetCode - múi giờ bất tiện. Đó là lý do tại sao tôi không tham gia vào trang này. Hackerrank và CodeChef cung cấp số lượng khá lớn các cuộc thi khác nhau, kéo dài từ 1 giờ đến 10 ngày. Các định dạng khác nhau có các quy tắc khác nhau, nhưng chúng ta có thể nói về điều đó trong thời gian dài. Điểm chính tại sao các cuộc thi lại tốt là việc đưa yếu tố cạnh tranh (và lặp lại) vào quá trình học tập.

Tổng cộng tôi đã tham gia 37 cuộc thi trên Hackerrank. Trong số này, 32 là xếp hạng và 5 là được tài trợ (tôi thậm chí còn nhận được 25 đô la trong một trong số đó) hoặc để giải trí. Trong bảng xếp hạng, tôi nằm trong top 10% 4 lần, nằm trong top 11% 12 lần và nằm trong top 5% 25 lần. Kết quả tốt nhất là 27/1459 trong 3 giờ và 22/9721 trong tuần.

Tôi chuyển sang CodeChef khi Hackerrank bắt đầu tổ chức các cuộc thi ít thường xuyên hơn. Tổng cộng tôi đã tham gia được 5 cuộc thi. Điểm số tốt nhất là 426/5019 trong cuộc thi kéo dài XNUMX ngày.

Tổng cộng, tại các cuộc thi và chỉ như vậy, tôi đã giải được hơn 1000 bài toán một chút, phù hợp với kế hoạch. Thật không may, bây giờ không có thời gian rảnh để tiếp tục các hoạt động cạnh tranh, cũng như không có mục tiêu nào có thể xóa bỏ thời gian rảnh rỗi. Nhưng nó là niềm vui. Tôi khuyên những người quan tâm đến điều này nên tìm những người cùng chí hướng. Cùng nhau hoặc trong một nhóm sẽ thú vị hơn nhiều. Tôi đã rất vui với điều này với một người bạn, vì vậy có lẽ nó đã diễn ra tốt đẹp.

Xem video

Sau khi đọc cuốn sách của Skiena, tôi bắt đầu quan tâm đến những gì anh ấy đang làm. Giống như Sedgwick, ông là giáo sư đại học. Về vấn đề này, bạn có thể tìm thấy video về các khóa học của anh ấy trên mạng. Tôi quyết định xem lại khóa học COMP300E - Thử thách lập trình - 2009 HKUST. Tôi không thể nói rằng tôi rất thích nó. Trước hết, chất lượng video không được tốt lắm. Thứ hai, tôi đã không cố gắng tự mình giải quyết các vấn đề được thảo luận trong khóa học. Vì thế mức độ tương tác không cao.
Ngoài ra, trong khi giải quyết vấn đề, cố gắng tìm ra thuật toán phù hợp, tôi đã xem qua video của Tushar Roy. Anh ấy đã làm việc tại Amazon và hiện đang làm việc tại Apple. Sau này tôi mới phát hiện ra rằng anh ấy có Kênh Youtube, nơi anh ấy đăng bài phân tích về các thuật toán khác nhau. Tại thời điểm viết bài, kênh chứa 103 video. Và tôi phải nói rằng phân tích của anh ấy đã được thực hiện rất tốt. Tôi đã cố gắng xem các tác giả khác, nhưng không hiểu sao nó không có tác dụng. Vì vậy, tôi chắc chắn có thể giới thiệu kênh này để xem.

Tham gia các khóa học

Tôi không làm điều gì đặc biệt ở đây. Đã xem video từ Nanodegree dành cho nhà phát triển Android của Google và tham gia khóa học từ ITMO Làm thế nào để chiến thắng các cuộc thi viết mã: Bí mật của nhà vô địch. Nanodegree khá tốt, mặc dù tôi đương nhiên không học được điều gì mới từ nó. Khóa học của ITMO hơi sai lệch một chút về mặt lý thuyết, nhưng các vấn đề rất thú vị. Tôi không khuyên bạn nên bắt đầu với nó, nhưng về nguyên tắc, đó là thời gian được sử dụng hiệu quả.

Học hỏi kinh nghiệm của người khác

Tất nhiên, rất nhiều người đã cố gắng vào Google. Một số đã vào được, một số thì không. Một số đã viết bài về điều này. Trong số những điều thú vị có lẽ tôi sẽ đề cập đến cái này и cái này. Trong trường hợp đầu tiên, người đó đã chuẩn bị cho mình một danh sách những điều mình cần học để trở thành Kỹ sư phần mềm và vào Google. Cuối cùng nó đã xuất hiện ở Amazon, nhưng điều đó không còn quan trọng nữa. Sách hướng dẫn thứ hai được viết bởi kỹ sư của Google, Larisa Aggarkova (larrr). Ngoài tài liệu này, bạn cũng có thể đọc blog của cô ấy.

Thật ý nghĩa khi đọc các bài đánh giá về các cuộc phỏng vấn trên Glassdoor. Tất cả chúng đều ít nhiều giống nhau, nhưng bạn có thể nhận được một số thông tin hữu ích.

Tôi sẽ không cung cấp liên kết đến các bài viết nhỏ khác; bạn có thể dễ dàng tìm thấy chúng trên Google.

Lần chạy thứ hai

Và bây giờ một năm đã trôi qua. Hóa ra nó rất căng thẳng về mặt nghiên cứu. Nhưng tôi đã bước vào mùa thu mới với kiến ​​thức lý thuyết sâu sắc hơn và phát triển được kỹ năng thực hành. Vẫn còn vài tuần nữa là đến cuối năm để tôi chuẩn bị thì đột nhiên có một lá thư từ một nhà tuyển dụng từ Google được gửi đến, trong đó anh ấy hỏi tôi liệu tôi có còn mong muốn làm việc tại Google không và sẽ Tôi ngại nói chuyện với anh ấy. Đương nhiên, tôi không bận tâm. Chúng tôi đồng ý gọi trong một tuần. Họ cũng yêu cầu tôi cung cấp một bản lý lịch cập nhật, trong đó tôi đã thêm mô tả ngắn gọn về những gì tôi đã làm trong năm tại nơi làm việc và nói chung.

Sau khi giao tiếp suốt đời, chúng tôi quyết định rằng trong một tuần nữa sẽ có một cuộc phỏng vấn trên Hangout, giống như năm ngoái. Một tuần trôi qua, đã đến giờ phỏng vấn nhưng người phỏng vấn vẫn không đến. 10 phút trôi qua, tôi đang bắt đầu lo lắng thì đột nhiên có người xông vào trò chuyện. Hóa ra một lát sau, người phỏng vấn của tôi vì lý do nào đó không thể xuất hiện và người thay thế anh ta đã được khẩn cấp tìm. Người này có phần chưa chuẩn bị cả về cách cài đặt máy tính lẫn cách thực hiện cuộc phỏng vấn. Nhưng sau đó mọi thứ đều diễn ra tốt đẹp. Tôi đã giải quyết vấn đề một cách nhanh chóng, mô tả những cạm bẫy có thể xảy ra và cách tránh chúng. Chúng tôi đã thảo luận về một số phiên bản khác nhau của vấn đề và độ phức tạp của thuật toán. Sau đó, chúng tôi nói chuyện thêm 5 phút nữa, người kỹ sư kể cho chúng tôi nghe ấn tượng của anh ấy khi làm việc ở Munich (dường như họ không tìm được người thay thế khẩn cấp ở Zurich), rồi chúng tôi chia tay.

Cùng ngày, nhà tuyển dụng liên lạc với tôi và nói rằng cuộc phỏng vấn diễn ra tốt đẹp và họ sẵn sàng mời tôi đến phỏng vấn tại văn phòng. Ngày hôm sau, chúng tôi gọi điện qua Hangouts và thảo luận chi tiết. Vì tôi cần nộp đơn xin thị thực nên chúng tôi quyết định lên lịch phỏng vấn sau một tháng.

Trong khi chuẩn bị hồ sơ, tôi đồng thời thảo luận về buổi phỏng vấn sắp tới với nhà tuyển dụng. Một cuộc phỏng vấn tiêu chuẩn tại Google bao gồm 4 cuộc phỏng vấn về thuật toán và một cuộc phỏng vấn về Thiết kế Hệ thống. Tuy nhiên, vì tôi đang nộp đơn xin việc với tư cách là nhà phát triển Android nên tôi được thông báo rằng một phần của cuộc phỏng vấn sẽ dành riêng cho Android. Tôi không thể nói cho nhà tuyển dụng biết chính xác những gì và chi tiết cụ thể sẽ là gì. Theo tôi hiểu thì điều này mới được giới thiệu tương đối gần đây và bản thân anh ấy cũng chưa nắm rõ lắm. Tôi cũng đã đăng ký hai buổi đào tạo: cách vượt qua cuộc phỏng vấn về thuật toán và cách vượt qua cuộc phỏng vấn Thiết kế Hệ thống. Các buổi học đều có ích ở mức trung bình. Ở đó cũng vậy, không ai có thể cho tôi biết họ hỏi các nhà phát triển Android những gì. Vì vậy, sự chuẩn bị của tôi cho tháng này được tóm tắt như sau:

  • Mua một bảng đánh dấu và viết 2-3 tá thuật toán phổ biến nhất lên đó từ bộ nhớ. 3-5 miếng mỗi ngày. Tổng cộng, mỗi bài đã được viết nhiều lần.
  • Làm mới bộ nhớ của bạn về nhiều thông tin khác nhau trên Android mà bạn không sử dụng hàng ngày
  • Xem một số video về Quy mô lớn và những thứ tương tự

Như tôi đã nói, đồng thời tôi đang chuẩn bị hồ sơ cho chuyến đi. Đầu tiên, họ hỏi tôi thông tin để làm thư mời. Sau đó, tôi đã cố gắng tìm hiểu xem ai ở Síp cấp thị thực cho Thụy Sĩ trong một thời gian dài, vì đại sứ quán Thụy Sĩ không giải quyết vấn đề này. Hóa ra, lãnh sự quán Áo đang làm việc này. Tôi đã gọi và đặt lịch hẹn. Họ yêu cầu rất nhiều tài liệu, nhưng không có gì đặc biệt thú vị. Ảnh, hộ chiếu, giấy phép cư trú, một loạt các chứng chỉ khác nhau và tất nhiên là cả thư mời. Trong khi đó lá thư vẫn chưa đến. Cuối cùng, tôi đã sử dụng bản in thông thường và nó hoạt động khá tốt. Lá thư được gửi đến 3 ngày sau đó và FedEx của người Síp không thể tìm thấy địa chỉ của tôi và tôi phải tự đi lấy. Cùng lúc đó, tôi nhận được một bưu kiện từ cùng một FedEx, họ cũng không thể giao cho tôi vì họ không tìm thấy địa chỉ và đã nằm ở đó từ tháng 5 (XNUMX tháng, Karl). Vì tôi không biết về nó nên đương nhiên tôi không cho rằng họ có nó. Tôi đã nhận được thị thực đúng hạn, sau đó họ đặt cho tôi một khách sạn và đưa ra cho tôi các lựa chọn chuyến bay. Tôi đã điều chỉnh các tùy chọn để thuận tiện hơn. Không còn chuyến bay thẳng nữa nên cuối cùng tôi bay tới đó qua Athens và quay lại qua Vienna.

Sau khi mọi thủ tục của chuyến đi đã được giải quyết xong, vài ngày nữa trôi qua và tôi thực sự đã bay tới Zurich. Đến đó mà không có sự cố. Từ sân bay vào thành phố tôi đi tàu - nhanh chóng và thuận tiện. Sau khi lang thang quanh thành phố một chút, tôi tìm được một khách sạn và nhận phòng. Vì khách sạn đã đặt mà không có đồ ăn nên tôi ăn tối ở nhà bên rồi đi ngủ, vì sáng mai có chuyến bay và tôi đã muốn ngủ rồi. Ngày hôm sau tôi ăn sáng tại khách sạn (để có thêm tiền) và đến văn phòng Google. Google có một số văn phòng ở Zurich. Cuộc phỏng vấn của tôi không phải là cuộc phỏng vấn trung tâm. Và nhìn chung, văn phòng trông khá bình thường, vì vậy tôi không có cơ hội ngắm nhìn tất cả những điều thú vị của một văn phòng Google “bình thường”. Tôi đã đăng ký với quản trị viên và ngồi đợi. Một lúc sau, nhà tuyển dụng bước ra và cho tôi biết kế hoạch trong ngày, sau đó anh ấy đưa tôi đến phòng nơi sẽ diễn ra cuộc phỏng vấn. Thật ra kế hoạch bao gồm 3 buổi phỏng vấn, ăn trưa và 2 buổi phỏng vấn nữa.

Cuộc phỏng vấn số một

Cuộc phỏng vấn đầu tiên chỉ diễn ra trên Android. Và nó không liên quan gì đến thuật toán cả. Tuy nhiên, thật ngạc nhiên. Được rồi, nó thậm chí còn phổ biến hơn theo cách này. Chúng tôi được yêu cầu tạo một thành phần giao diện người dùng nhất định. Đầu tiên chúng tôi thảo luận về cái gì và như thế nào. Anh ấy đề nghị đưa ra một giải pháp bằng RxJava, mô tả chính xác những gì anh ấy sẽ làm và tại sao. Họ nói rằng điều này chắc chắn là tốt, nhưng hãy thực hiện nó bằng khung Android. Và đồng thời chúng ta sẽ viết mã lên bảng. Và không chỉ một thành phần mà là toàn bộ Hoạt động sử dụng thành phần này. Đây là điều tôi chưa sẵn sàng. Viết thuật toán 30-50 dòng lên bảng là một chuyện, còn viết mã Android là một chuyện khác, thậm chí có cả chữ viết tắt và nhận xét với tinh thần “chà, tôi sẽ không viết điều đó, vì nó đã quá rõ ràng rồi”. Kết quả là một loại dầu giấm cho 3 tấm ván. Những thứ kia. Tôi đã giải quyết được vấn đề nhưng nó có vẻ ngớ ngẩn.

Cuộc phỏng vấn số hai

Lần này cuộc phỏng vấn là về thuật toán. Và có hai người phỏng vấn. Một người là người phỏng vấn thực tế, và người thứ hai là một padawan trẻ tuổi (người phỏng vấn bóng tối). Cần phải đưa ra một cấu trúc dữ liệu với các thuộc tính nhất định. Đầu tiên, chúng tôi thảo luận vấn đề như thường lệ. Tôi hỏi những câu hỏi khác nhau, người phỏng vấn trả lời. Sau một thời gian, họ được yêu cầu viết một số phương pháp của cấu trúc được phát minh lên bảng. Lần này tôi ít nhiều thành công, tuy mắc một số lỗi nhỏ nhưng tôi đã sửa theo sự nhắc nhở của người phỏng vấn.

Cuộc phỏng vấn số ba

Lần này Thiết kế hệ thống, đột nhiên cũng là Android. Cần phải phát triển một ứng dụng với chức năng nhất định. Chúng tôi đã thảo luận về các yêu cầu đối với ứng dụng, máy chủ và giao thức truyền thông. Tiếp theo, tôi bắt đầu mô tả những thành phần hoặc thư viện nào tôi sẽ sử dụng khi xây dựng ứng dụng. Và sau đó, khi nhắc tới Job Scheduler, đã có một số nhầm lẫn. Vấn đề là tôi chưa bao giờ sử dụng nó trong thực tế, vì tại thời điểm phát hành, tôi mới chuyển sang các ứng dụng hỗ trợ không có nhiệm vụ sử dụng nó. Điều tương tự cũng xảy ra khi phát triển những cái tiếp theo. Tức là về lý thuyết thì tôi biết thứ này là gì, nó được sử dụng khi nào và như thế nào, nhưng tôi chưa có kinh nghiệm sử dụng nó. Và người phỏng vấn có vẻ không thích điều đó lắm. Sau đó, họ yêu cầu tôi viết một số mã. Có, khi phát triển một ứng dụng bạn cần viết mã ngay lập tức. Một lần nữa mã Android trên bảng. Hóa ra lại đáng sợ nữa.

Bưa trưa

Lẽ ra một người khác sẽ đến nhưng anh ta lại không đến. Và Google mắc sai lầm. Kết quả là tôi đã đi ăn trưa với người phỏng vấn trước, đồng nghiệp của cô ấy và một lát sau người phỏng vấn tiếp theo cũng tham gia. Bữa trưa khá tươm tất. Một lần nữa, vì đây không phải là văn phòng chính ở Zurich nên phòng ăn trông khá bình thường, mặc dù rất đẹp.

Cuộc phỏng vấn số XNUMX

Cuối cùng, các thuật toán ở dạng thuần túy nhất. Tôi đã giải quyết vấn đề đầu tiên khá nhanh chóng và hiệu quả ngay lập tức, mặc dù tôi đã bỏ lỡ một trường hợp khó khăn, nhưng theo lời nhắc của người phỏng vấn (anh ấy đưa ra trường hợp rất khó khăn này), tôi đã tìm ra vấn đề và sửa nó. Tất nhiên, tôi phải viết mã lên bảng. Sau đó, một nhiệm vụ tương tự được giao, nhưng khó khăn hơn. Đối với nó, tôi đã tìm ra một số giải pháp không tối ưu và gần như đã tìm ra giải pháp tối ưu, 5-10 phút là không đủ để suy nghĩ xong. Chà, tôi không có thời gian để viết mã cho nó.

Cuộc phỏng vấn số XNUMX

Và một lần nữa phỏng vấn Android. Tôi tự hỏi tại sao tôi lại học thuật toán cả năm?
Lúc đầu có một vài câu hỏi đơn giản. Sau đó, người phỏng vấn viết mã lên bảng và yêu cầu tìm vấn đề trong đó. Tìm thấy nó, giải thích nó, sửa nó. Thảo luận. Và sau đó một số câu hỏi bất ngờ bắt đầu với tinh thần “phương thức Y làm gì trong lớp X”, “bên trong phương thức Y là gì”, “lớp Z làm gì”. Tất nhiên, tôi đã trả lời điều gì đó, nhưng sau đó tôi nói rằng gần đây tôi chưa gặp phải điều này trong công việc của mình và đương nhiên là tôi không nhớ chi tiết ai đang làm gì và như thế nào. Sau đó, người phỏng vấn hỏi tôi hiện đang làm gì. Và các câu hỏi đã đi về chủ đề này. Tôi đã trả lời tốt hơn nhiều ở đây.

Sau khi kết thúc cuộc phỏng vấn cuối cùng, họ đã lấy thẻ của tôi, chúc tôi may mắn và gửi tôi lên đường. Tôi đi dạo quanh thành phố một chút, ăn tối và về khách sạn, nơi tôi đi ngủ vì chuyến bay lại bắt đầu vào sáng sớm. Ngày hôm sau tôi đến Síp an toàn. Theo yêu cầu của nhà tuyển dụng, tôi đã viết phản hồi về cuộc phỏng vấn và điền vào biểu mẫu trong một dịch vụ đặc biệt để trả lại số tiền đã chi. Trong tất cả các chi phí, Google chỉ thanh toán trực tiếp tiền vé. Khách sạn, ăn uống và đi lại do ứng viên chi trả. Sau đó, chúng tôi điền vào biểu mẫu, đính kèm biên lai và gửi đến một văn phòng đặc biệt. Họ xử lý việc này và chuyển tiền vào tài khoản khá nhanh chóng.

Phải mất một tuần rưỡi để xử lý kết quả phỏng vấn. Sau đó tôi được thông báo rằng tôi đã “ở dưới mức chuẩn một chút”. Tức là tôi hơi hụt hẫng một chút. Cụ thể hơn, 2 cuộc phỏng vấn diễn ra tốt đẹp, 2 cuộc phỏng vấn hơi không tốt lắm và Thiết kế hệ thống không được tốt lắm. Bây giờ nếu ít nhất 3 người thành công thì chúng ta đã có thể cạnh tranh, nếu không thì không còn cơ hội. Họ đề nghị quay lại vào năm sau.

Tất nhiên, lúc đầu, tôi rất buồn vì đã phải tốn rất nhiều công sức cho việc chuẩn bị và đến thời điểm phỏng vấn, tôi đã nghĩ đến việc rời Síp. Gia nhập Google và chuyển đến Thụy Sĩ có vẻ là một lựa chọn tuyệt vời.

Kết luận

Và ở đây chúng ta đến phần cuối cùng của bài viết. Có, tôi đã thất bại trong cuộc phỏng vấn của Google hai lần. Thật là buồn. Có lẽ sẽ rất thú vị khi làm việc ở đó. Tuy nhiên, bạn có thể nhìn vấn đề từ phía bên kia.

  • Trong một năm rưỡi, tôi đã học được rất nhiều thứ liên quan đến phát triển phần mềm.
  • Tôi đã có rất nhiều niềm vui khi tham gia các cuộc thi lập trình.
  • Tôi đã đến Zurich vài ngày. Khi nào tôi sẽ đến đó lần nữa?
  • Tôi đã có trải nghiệm phỏng vấn thú vị tại một trong những công ty CNTT lớn nhất thế giới.

Vì vậy, mọi thứ xảy ra trong một năm rưỡi này có thể đơn giản được coi là đào tạo hoặc đào tạo. Và kết quả của quá trình đào tạo này khiến họ cảm nhận được. Ý tưởng rời Síp của tôi đã chín muồi (do một số hoàn cảnh gia đình), tôi đã vượt qua thành công một số cuộc phỏng vấn với một công ty nổi tiếng khác và chuyển đi sau 8 tháng. Nhưng đó là một câu chuyện hoàn toàn khác. Tuy nhiên, tôi nghĩ rằng tôi vẫn nên cảm ơn Google trong suốt một năm rưỡi tôi đã tự mình làm việc và 2 ngày thú vị ở Zurich.

Cuối cùng tôi có thể nói gì đây? Nếu bạn làm việc trong lĩnh vực CNTT, hãy chuẩn bị tinh thần cho các cuộc phỏng vấn tại Google (Amazon, Microsoft, Apple, v.v.). Có lẽ một ngày nào đó bạn sẽ đến đó để đạt được điều đó. Ngay cả khi bạn không muốn, hãy tin tôi, sự chuẩn bị như vậy sẽ không khiến bạn tệ hơn chút nào. Thời điểm bạn nhận ra rằng mình có thể (dù chỉ nhờ may mắn) có được một cuộc phỏng vấn với một trong những công ty này, nhiều con đường khác sẽ mở ra cho bạn so với trước khi bạn bắt đầu chuẩn bị. Và tất cả những gì bạn cần trên đường đi là mục đích, sự kiên trì và thời gian. Chúc các bạn thành công :)

Nguồn: www.habr.com

Thêm một lời nhận xét