Trong năm ngày từ 24 đến 28 tháng 7 năm 2017, tôi đã phỏng vấn tại LinkedIn, Salesforce Einstein, Google, Airbnb và Facebook và tôi nhận được tất cả năm lời mời làm việc.
Đó là một trải nghiệm vô cùng tuyệt vời và tôi cảm thấy may mắn vì những nỗ lực của mình đã được đền đáp, vì vậy tôi quyết định sẽ viết một cái gì đó về nó. Tôi sẽ thảo luận về cách mà tôi đã chuẩn bị, review về quá trình phỏng vấn và chia sẻ ấn tượng của tôi về năm công ty.
1. Làm thế nào để bắt đầu
Tôi đã ở Groupon gần ba năm. Đó là công việc đầu tiên của tôi và tôi đã làm việc với một team thật sự tuyệt vời với những dự án tuyệt vời. Chúng tôi đã tạo nên ảnh hưởng trong công ty, và được xuất bản những bài báo về những điều đó. Nhưng dần theo thời gian, tôi thấy mình không học hỏi được gì nhiều, và tâm trí của tôi thì khao khát nhiều hơn như thế. Cũng là một kỹ sư phần mềm ở Chicago, có rất nhiều công ty tuyệt vời thu hút tôi ở Bay Area.
Cuộc sống ngắn ngủi, và nhưng việc sống một cuộc sống chuyên nghiệp vẫn ngắn hơn. Sau khi nói chuyện với vợ và nhận được sự hỗ trợ từ cô ấy, tôi quyết định hành động để thay đổi sự nghiệp đầu tiên.
2. Sự chuẩn bị
Mặc dù tôi quan tâm đến vị trí liên quan đến Machine Learning, nhưng các vị trí tại năm công ty lại có chút khác nhau về chức danh và quy trình phỏng vấn. Ba nơi là kỹ sư Machine Learning (LinkedIn, Google, Facebook), một là kỹ sư dữ liệu (Salesforce) và một là kỹ sư phần mềm (Airbnb). Do đó tôi cần chuẩn bị cho ba lĩnh vực khác nhau: coding, Machine Learning và thiết kế hệ thống.
Và vì công việc lúc đó của tôi là full time, nên tôi phải mất tổng cộng 2 tháng 3 để chuẩn bị.
Đây là cách tôi chuẩn bị cho ba lĩnh vực.
2.1. Coding
Mặc dù tôi đồng ý rằng các cuộc phỏng vấn liên quan đến coding có thể không phải là cách tốt nhất để đánh giá tất cả các kỹ năng của bạn với tư cách là một nhà phát triển, nhưng nếu bạn là một kỹ sư giỏi thì không cần lo lắng. Và IMO là cái cần thiết để có được công việc đó.
Tôi chủ yếu sử dụng Leetcode và Geekforgeek để luyện tập, nhưng Hackerrank và Lintcode cũng là tốt. Tôi đã dành vài tuần để xem qua các cấu trúc dữ liệu và thuật toán phổ biến, sau đó tập trung vào các lĩnh vực mà tôi không quá quen thuộc và cuối cùng là thực hiện một số vấn đề thường thấy. Do sự hạn chế về mặt thời gian của tôi, tôi chỉ thường giải quyết 2 vấn đề/ngày.
Kinh nghiệm:
• Tập luyện nhiều. Không có cách nào khác.
• Nhưng thay vì thực hiện tất cả 600 vấn đề trên Leetcode, hãy xem qua tất cả các loại trước và dành thời gian tìm hiểu kỹ từng vấn đề. Tôi đã làm khoảng 70 vấn đề và cảm thấy đó là đủ cho tôi. Tôi nghĩ rằng nếu bạn thấy 70 vấn đề này không hữu ích với bạn thì bạn không đúng rồi vì nếu như vậy thì 700 cũng thế cả thôi.
• Làm những phần khó khăn nhất trước. Sau đó tất cả phần còn lại sẽ trở nên dễ dàng.
• Nếu bị mắc kẹt trên một vấn đề trong hơn hai giờ, hãy kiểm tra các giải pháp. Nhiều thời gian hơn là không đáng.
• Sau khi giải quyết một vấn đề, hãy kiểm tra các giải pháp. Tôi thường ngạc nhiên về một số giải pháp thông minh, đặc biệt là liên quan đến việc viết Python trên một dòng.
• Sử dụng một ngôn ngữ mà bạn quen thuộc nhất và nó phải đủ phổ biến để dễ dàng giải thích cho người phỏng vấn của bạn.
2.2. Thiết kế hệ thống
Việc này có mối liên quan chặt chẽ với kinh nghiệm làm việc trên thực tế. Nhiều câu hỏi có thể được đặt ra trong các cuộc phỏng vấn thiết kế hệ thống, nó không giới hạn ở kiến trúc hệ thống, mà còn thiết kế hướng đối tượng, thiết kế lược đồ cơ sở dữ liệu, thiết kế hệ thống phân tán, khả năng mở rộng,…
Có rất nhiều tài nguyên trực tuyến có thể giúp bạn chuẩn bị. Phần lớn tôi đọc các bài báo về phỏng vấn thiết kế hệ thống, kiến trúc của các hệ thống quy mô lớn và nghiên cứu trường hợp.
Dưới đây là một số tài nguyên mà tôi thấy thực sự hữu ích:
http://tutorials.jenkov.com/software-arch architecture / index.html
Mặc dù các cuộc phỏng vấn thiết kế hệ thống có thể bao gồm rất nhiều chủ đề, nhưng có một số hướng dẫn chung về cách tiếp cận các vấn đề như sau:
• Hiểu các yêu cầu trước, sau đó đưa ra thiết kế bậc cao và cuối cùng đi sâu vào chi tiết thực hiện. Đừng nhảy vào những chi tiết ngay lập tức mà không tìm ra yêu cầu là gì.
• Không có một thiết kế hệ thống nào là hoàn hảo. Hãy biết đánh đổi cho những gì cần thiết.
Với tất cả những gì tôi đã nói, cách tốt nhất để thực hành cho các cuộc phỏng vấn thiết kế hệ thống là hãy thực sự ngồi xuống và thiết kế một hệ thống, làm nó như công việc hàng ngày của bạn. Thay vì thực hiện một hoạt động tối thiểu, hãy đi sâu hơn vào các công cụ, khung và thư viện bạn sử dụng. VD: nếu bạn sử dụng HBase, thay vì chỉ đơn giản là sử dụng máy khách để chạy một số DDL và thực hiện một số lần tìm nạp, hãy cố gắng hiểu kiến trúc tổng thể của nó, chẳng hạn như luồng đọc/ghi, làm thế nào HBase đảm bảo tính nhất quán mạnh mẽ, các phép tính phụ/chính làm gì và tìm ra cách bộ đệm LRU và Bộ lọc Bloom được sử dụng trong hệ thống. Bạn thậm chí có thể so sánh HBase với Cassandra để thấy sự tương đồng và khác biệt trong thiết kế của chúng. Và vì vậy, khi bạn được yêu cầu thiết kế một hệ thống tập tin phân tán, bạn cũng sẽ không cảm thấy bị bất ngờ. Nhiều blog cũng là một nguồn kiến thức tuyệt vời, chẳng hạn như Hacker Noon và blog kỹ thuật của một số công ty, cũng như những nguồn tài liệu chính thức của các dự án nguồn mở.
Điều quan trọng nhất là hãy giữ sự tò mò và khiêm tốn của bạn. Hãy giống như một miếng bọt biển biết hấp thụ tất cả mọi thứ khi mà nó chìm vào.
2.3. Machine Learning
Phỏng vấn Machine Learning có thể được chia thành hai khía cạnh, lý thuyết và thiết kế sản phẩm.
Trừ khi bạn có kinh nghiệm về nghiên cứu Machine Learning hoặc đã làm rất tốt trong khóa học ML của mình. Những thứ sách cổ điển như Elements of Statistical Learning và Pattern Recognition and Machine Learning là những lựa chọn tuyệt vời, và nếu bạn quan tâm đến các lĩnh vực cụ thể, bạn có thể đọc thêm về những điều đó.
Hãy chắc chắn rằng bạn hiểu các khái niệm cơ bản như đánh đổi thiên vị và phương sai, ovefitting, thuật toán tối ưu, Định lý Bayes,... Hãy làm quen với những thứ phổ biến như Định lý Bayes và đạo hàm của các mô hình phổ biến như hồi quy logistic và SVM. Cố gắng thực hiện các mô hình đơn giản như cây quyết định và thuật toán K-means. Nếu có thể, hãy trình bày thành tựu của bạn vào CV, và hãy chắc chắn rằng bạn hiểu nó một cách kỹ lưỡng và có thể nhận xét về ưu và nhược điểm của nó.
Đối với việc thiết kế sản phẩm ML, hiểu quy trình chung về cách xây dựng 1 sản phẩm ML. Đây là những gì tôi đã cố gắng làm:
• Tìm ra mục tiêu là gì: dự đoán, khuyến nghị,..
• Chọn thuật toán phù hợp: được giám sát so với không giám sát, phân loại so với hồi quy, mô hình tuyến tính tổng quát/cây quyết định/... Nêu lý do vì sao lựa chọn nó.
• Chọn các tính năng có liên quan dựa trên dữ liệu có sẵn.
• Chọn số liệu cho hiệu suất mô hình.
• Nhận xét về cách tối ưu hóa mô hình cho sản xuất.
Ở đây tôi muốn nhấn mạnh một lần nữa về tầm quan trọng của việc tìm tòi và học hỏi liên tục. Hãy cố gắng không chỉ sử dụng API cho Spark MLlib hoặc XGBoost, vì không phải chỉ thế là xong, nhưng hãy cố gắng tìm hiểu tại sao Stochastic Gradient Descent (SGD) lại thích hợp cho đào tạo phân tán, hoặc tìm hiểu XGBoost khác với GBDT truyền thống như thế nào, hay như tìm hiểu xem có điều gì đặc biệt về hàm mất mát của nó, tại sao nó lại cần phải tính đạo hàm bậc hai,..
3. Quá trình phỏng vấn
Tôi bắt đầu bằng cách trả lời tin nhắn của HR trên LinkedIn và yêu cầu giới thiệu. Sau một start up thất bại trước đây (tôi sẽ nói sau), tôi đã chuẩn bị kỹ lưỡng trong vài tháng và với sự giúp đỡ từ các nhà tuyển dụng, tôi đã lên lịch cho một tuần ở Bay Area. Tôi bay vào Chủ nhật, có năm ngày phỏng vấn với khoảng 30 người tại một số công ty công nghệ tốt nhất trên thế giới, và rất may mắn, tôi đã nhận được lời mời làm việc từ cả năm công ty.
4. Phone screening
Tất cả các màn hình điện thoại nên là dạng tiêu chuẩn. Sự khác biệt duy nhất trong các cuộc phòng vấn là về thời lượng: LinkedIn là một giờ, Facebook và Airbnb là 45 phút.
Thành thạo là chìa khóa mở cửa ở đây, vì bạn đang ở dưới một nhát súng thời gian và bạn chỉ có một cơ hội mà thôi. Bạn sẽ phải rất nhanh chóng nhận ra loại vấn đề và đưa ra giải pháp. Hãy chắc chắn nói chuyện với người phỏng vấn về những suy nghĩ và ý định của bạn. Nó có thể làm bạn chậm lại một chút khi bắt đầu, nhưng giao tiếp quan trọng hơn bất cứ điều gì và nó chỉ giúp ích cho cuộc phỏng vấn. Đừng có hành động như đang đọc thuộc lòng giải pháp vì người phỏng vấn gần như chắc chắn sẽ biết đó.
Đối với các vị trí về Machine Learning, một số công ty sẽ đặt câu hỏi về ML. Nếu bạn đang phỏng vấn cho vị trí này, hãy chắc chắn rằng bạn phải cải thiện kỹ năng ML của mình.
Để tận dụng tốt hơn thời gian của mình, tôi đã lên lịch ba cuộc phỏng vấn qua điện thoại vào cùng một buổi chiều, cách nhau một giờ. Ưu điểm là bạn có thể được hưởng lợi từ những cuộc phỏng vấn nóng hổi, nhưng nhược điểm là những cái sau có thể bị ảnh hưởng nếu cái đầu tiên không tốt, vì vậy tôi không mọi người như thế.
Một điều tốt nữa khi phỏng vấn với nhiều công ty cùng một lúc là nó mang lại cho bạn những lợi thế nhất định. Tôi đã có thể bỏ qua hai cuộc phỏng vấn vòng 2 với Airbnb và Salesforce vì tôi đã nhận được onsite tại LinkedIn và Facebook chỉ sau 1 lần phỏng vấn điện thoại.
Đáng ngạc nhiên hơn, Google thậm chí còn không cần phỏng vấn qua điện thoại sau khi biết tôi có lịch phỏng vấn với 4 nơi còn lại vào tuần tới. Tôi biết là khá mệt, nhưng mà này, không ai có thể từ chối lời mời tại Google cả!
5. Onsite
5.1. LinkedIn
Đây là chỗ đầu tiên và tôi đã phỏng vấn tại địa điểm Sunnyvale. Văn phòng rất gọn gàng và mọi người trông rất chuyên nghiệp.
Các phiên phỏng vấn cách nhau là một giờ. Câu hỏi mã hóa là tiêu chuẩn, nhưng câu hỏi ML có thể hơi khó nhằn. Tuy nhiên trước đó, tôi đã nhận được một email từ HR có chứa tài liệu chuẩn bị rất hữu ích và nên tôi không mấy ngạc nhiên. Tôi nghe tin đồn rằng LinkedIn có những bữa ăn ngon nhất ở Thung lũng Silicon và nó cũng không khác xa sự thật là mấy.
Việc mua lại bởi Microsoft dường như đã dỡ bỏ gánh nặng tài chính từ LinkedIn và giúp họ để làm nên những điều thực sự tuyệt vời. Các tính năng mới như video và quảng cáo chuyên nghiệp rất thú vị. Là một công ty tập trung vào phát triển chuyên nghiệp, LinkedIn ưu tiên sự phát triển của chính nhân viên của mình. Rất nhiều nhóm được lập ra như mức độ liên quan của quảng cáo và xếp hạng nguồn cấp dữ liệu đang mở rộng, vì vậy hãy hành động nhanh chóng nếu bạn muốn tham gia.
5.2. Salesforce Einstein
Rock star project by rock star team. Đội ngũ này khá mới và tôi cảm thấy rất giống một người khởi nghiệp. Sản phẩm được xây dựng trên Scala, vì vậy khá là an toàn! Tôi có một cuộc nói chuyện tuyệt vời về thư viện Optimus Prime của Matthew Tovbin tại Scala Days Chicago 2017 và Leah McGuire tại Spark Summit West 2017.
Tôi đã phỏng vấn tại văn phòng Palo Alto của họ. Đội ngũ có một nền văn hóa gắn kết, và cân bằng cuộc sống công việc, đây là một điều tuyệt vời ở đó. Mọi người đều đam mê những gì họ đang làm và họ thực sự thích nó. Nơi này nó ngắn hơn so với các cuộc phỏng vấn tại chỗ khác, nhưng tôi ước tôi có thể ở lại lâu hơn. Sau cuộc phỏng vấn, Matthew thậm chí còn đưa tôi đi bộ đến nhà để xe của HP.
5.3. Google
Hoàn toàn là người đầu ngành, ai cũng biết điều đó. Nhưng nó rất lớn. Thực sự, thực sự rất lớn. Tôi mất 20 phút để đi xe đạp để gặp bạn bè của tôi ở đó. Nhưng thật là một nơi tuyệt vời cho các nhà phát triển.
Tôi đã phỏng vấn tại một trong nhiều tòa nhà trong khuôn viên Mountain View và tôi không biết đó là tòa nhà nào vì nó LỚN quá.
Những người phỏng vấn tôi trông đều rất thông minh, và một khi họ bắt đầu nói, họ thậm chí còn tỏ ra thông minh hơn cả. Sẽ rất thú vị khi làm việc với những người này.
Một điều mà tôi cảm thấy đặc biệt về các cuộc phỏng vấn của Google là việc phân tích độ phức tạp thuật toán thực sự quan trọng. Hãy chắc chắn rằng bạn thực sự hiểu ký hiệu Big O có nghĩa là gì!
5.4. Airbnb
Một Unicorn startup – với một văn phòng đẹp nhất ở Thung lũng Silicon. Các sản phẩm mới như trải nghiệm và đặt chỗ nhà hàng, thị trường ngách cao cấp và mở rộng sang Trung Quốc đều đang có một triển vọng tích cực. Sự lựa chọn hoàn hảo nếu bạn chấp nhận rủi ro và muốn trải nghiệm dòng tiền IPO tăng trưởng nhanh.
Cuộc phỏng vấn coding của Airbnb có một chút kỳ lạ bởi vì bạn sẽ phải code trong IDE thay vì bảng trắng thông thường, vì vậy mã của bạn cần phải được biên dịch và đưa ra câu trả lời đúng. Một số vấn đề có thể thực sự khó khăn trong quá trình code.
Và tôi đã có một cuộc phỏng vấn chức năng chéo có một không hai. Điều này lý giải tại sao Airbnb có một mặt kỹ thuật xuất sắc, để loại bỏ những người không đủ điều kiện làm việc.Đối với tôi hai chức năng chéo thực sự thú vị. Tôi đã có những cuộc trò chuyện ngẫu nhiên với những người phỏng vấn và tất cả chúng tôi đều cảm thấy hạnh phúc vào cuối buổi.
Nhìn chung, tôi nghĩ rằng Airbnb là khó khăn nhất do có khá là nhiều vấn đề khó khăn như thời gian dài hơn và các cuộc phỏng vấn đa chức năng độc đáo. Nếu bạn quan tâm, hãy chắc chắn hiểu văn hóa và giá trị cốt lõi của họ.
5.5. Facebook
Một người khổng lồ vẫn đang trên đà phát triển nhanh, nhỏ hơn và nhưng lại nhịp độ nhanh hơn so với Google. Với các dòng sản phẩm, Facebook thống trị thị trường mạng xã hội và các khoản đầu tư lớn vào AI và VR, tôi chỉ có thể thấy nhiều tiềm năng tăng trưởng hơn cho Facebook trong tương lai. Với những ngôi sao như Yann LeCun and Yangqing Jia, đó là nơi hoàn hảo nếu bạn quan tâm đến Machine Learning.
Tôi đã phỏng vấn tại Tòa nhà 20, một trong những khu vườn trên sân thượng và view biển, đây cũng là nơi đặt văn phòng của Zuckerberg. Tôi không chắc người phỏng vấn có hướng dẫn hay không, nhưng tôi không nhận ra được dấu hiệu rõ ràng nào cho rằng các giải pháp của mình đúng hay sai, mặc dù tôi tin rằng chúng là như vậy.
Đến trưa buổi phỏng vấn, tôi bắt đầu phải trả giá, tôi bị đau đầu. Tôi đã kiên trì suốt buổi chiều nhưng cảm thấy mình không làm tốt chút nào. Và tôi khá là ngạc nhiên khi tôi cũng nhận được một lời đề nghị từ họ.
Nói chung, tôi cảm thấy mọi người ở đó tin vào tầm nhìn của công ty và họ tự hào về những gì họ đang xây dựng. Là một công ty có nửa nghìn tỷ vốn hóa thị trường và đang phát triển, Facebook đúng là một nơi hoàn hảo để phát triển sự nghiệp của bạn.
6. Đàm phán
Đây là một chủ đề lớn mà tôi sẽ không đề cập đến trong bài viết này, nhưng tôi thấy bài viết này rất hữu ích. Một số điều mà tôi nghĩ là quan trọng:
• Hãy chuyên nghiệp.
• Hãy biết tận dụng lợi thế của mình.
• Hãy thực sự quan tâm đến các team và các dự án.
• Giữ vũng sự kiên nhẫn và tự tin.
• Hãy quyết tâm nhưng phải lịch sự.
• Không bao giờ nói dối.
7. Cuộc phỏng vấn thất bại của tôi với Databricks
Tất cả các thành công bắt đầu với thất bại, bao gồm các cuộc phỏng vấn. Trước khi tôi bắt đầu phỏng vấn cho các công ty này, tôi đã thất bại trong cuộc phỏng vấn tại Databricks vào tháng Năm.
Trở lại vào tháng Tư, Xiangrui liên lạc với tôi qua LinkedIn hỏi tôi có quan tâm đến vị trí trong nhóm Spark MLlib không. Tôi đã vô cùng hồi hộp vì:
• Tôi sử dụng Spark và tôi yêu Scala
• Các kỹ sư của Databricks là đỉnh cao
• Spark đang cách mạng hóa toàn bộ thế giới dữ liệu.
Đó là một cơ hội tôi không thể bỏ lỡ, vì vậy tôi đã bắt đầu phỏng vấn sau một vài ngày.
Tiêu chuẩn rất cao và một quá trình khá dài, bao gồm một phỏng vấn câu hỏi sàng lọc trước, phỏng vấn qua điện thoại, một nhiệm vụ coding và một tại chỗ onsite.
Tôi nhận được lời mời onsite, và tôiđến thăm văn phòng của họ ở trung tâm thành phố San Francisco, nơi có thể nhìn thấy Đảo Treasure.
Người phỏng vấn của tôi cực kỳ thông minh nhưng cũng không kém phần khiêm tốn. Trong các cuộc phỏng vấn tôi thường cảm thấy bị đẩy đến giới hạn. Mọi chuyện vẫn ổn cho đến khi thảm họa bắt đầu, tôi hoàn toàn bị rối tung vì không đủ kỹ năng và sự chuẩn bị, và nó đã thất bại. Xiangrui rất tốt bụng và đưa tôi đến nơi tôi muốn đến sau khi cuộc phỏng vấn kết thúc, và tôi thực sự rất thích nói chuyện với anh ấy.
Tôi nhận được lời từ chối vài ngày sau đó. Mặc dù đã biết trước nhưng tôi vẫn cảm thấy thất vọng trong vài ngày. Mặc dù tôi đã bỏ lỡ cơ hội làm việc ở đó, tôi hoàn toàn mong muốn họ sẽ tiếp tục tạo ra những thành tựu lớn hơn trong tương lai.
8. Ngẫm lại
• Cuộc sống rất ngắn ngủi. Có một cuộc sống chuyên nghiệp lại càng ngắn hơn. Hãy di chuyển vào đúng thời điểm.
• Phỏng vấn không chỉ là phỏng vấn. Phỏng vấn là một cách hoàn hảo để kết nối và kết bạn.
• Luôn tò mò và học hỏi.
• Đàm phán vô cùng quan trọng cho sự hài lòng công việc.
• Nhận được lời mời làm việc chỉ có nghĩa là bạn đáp ứng các yêu cầu tối thiểu. Không có yêu cầu tối đa. Hãy tiếp tục tốt hơn
Từ cuộc phỏng vấn đầu tiên vào tháng 5 đến cuối cùng khi được chấp nhận lời mời làm việc vào cuối tháng 9, sự thay đổi nghề nghiệp đầu tiên của tôi thực sự rất dài và không dễ dàng gì.
Thật khó cho tôi để chuẩn bị bởi vì tôi cần tiếp tục làm tốt công việc hiện tại của mình. Trong vài tuần, tôi đã có một lịch trình thường xuyên để chuẩn bị cho cuộc phỏng vấn đến 1 giờ sáng, thức dậy lúc 8:30 sáng ngày hôm sau và dành trọn vẹn cho một ngày khác làm việc.
Phỏng vấn tại năm công ty trong năm ngày cũng rất căng thẳng và rủi ro, và tôi không khuyên bạn nên làm điều đó trừ khi bạn có một lịch trình dày đặc. Nhưng nó mang lại cho bạn một lợi thế khá tốt trong quá trình đàm phán và nhận được nhiều ưu đãi hơn.
Tôi muốn gửi lời cảm ơn đến tất cả các nhà tuyển dụng đã kiên nhẫn hướng dẫn tôi trong suốt quá trình vừa qua, những người dành thời gian quý báu của họ để nói chuyện với tôi và tất cả các công ty đã cho tôi cơ hội này.
Cuối cùng nhưng quan trọng nhất, tôi muốn cảm ơn gia đình vì tình yêu và sự ủng hộ của họ - bố mẹ tôi đã theo dõi tôi từ bước đầu tiên và ở từng bước, tôi luôn có người vợ thân yêu ở bên cạnh – cảm ơn cô ấy vì tất cả những gì cô ấy đã làm cho tôi và con gái tôi.
Cảm ơn đã đọc qua bài viết siêu dài này.
Credit: Tran Vu
link. medium. com/VzC4fNHmA2
1. Làm thế nào để bắt đầu
Tôi đã ở Groupon gần ba năm. Đó là công việc đầu tiên của tôi và tôi đã làm việc với một team thật sự tuyệt vời với những dự án tuyệt vời. Chúng tôi đã tạo nên ảnh hưởng trong công ty, và được xuất bản những bài báo về những điều đó. Nhưng dần theo thời gian, tôi thấy mình không học hỏi được gì nhiều, và tâm trí của tôi thì khao khát nhiều hơn như thế. Cũng là một kỹ sư phần mềm ở Chicago, có rất nhiều công ty tuyệt vời thu hút tôi ở Bay Area.
Cuộc sống ngắn ngủi, và nhưng việc sống một cuộc sống chuyên nghiệp vẫn ngắn hơn. Sau khi nói chuyện với vợ và nhận được sự hỗ trợ từ cô ấy, tôi quyết định hành động để thay đổi sự nghiệp đầu tiên.
2. Sự chuẩn bị
Mặc dù tôi quan tâm đến vị trí liên quan đến Machine Learning, nhưng các vị trí tại năm công ty lại có chút khác nhau về chức danh và quy trình phỏng vấn. Ba nơi là kỹ sư Machine Learning (LinkedIn, Google, Facebook), một là kỹ sư dữ liệu (Salesforce) và một là kỹ sư phần mềm (Airbnb). Do đó tôi cần chuẩn bị cho ba lĩnh vực khác nhau: coding, Machine Learning và thiết kế hệ thống.
Và vì công việc lúc đó của tôi là full time, nên tôi phải mất tổng cộng 2 tháng 3 để chuẩn bị.
Đây là cách tôi chuẩn bị cho ba lĩnh vực.
2.1. Coding
Mặc dù tôi đồng ý rằng các cuộc phỏng vấn liên quan đến coding có thể không phải là cách tốt nhất để đánh giá tất cả các kỹ năng của bạn với tư cách là một nhà phát triển, nhưng nếu bạn là một kỹ sư giỏi thì không cần lo lắng. Và IMO là cái cần thiết để có được công việc đó.
Tôi chủ yếu sử dụng Leetcode và Geekforgeek để luyện tập, nhưng Hackerrank và Lintcode cũng là tốt. Tôi đã dành vài tuần để xem qua các cấu trúc dữ liệu và thuật toán phổ biến, sau đó tập trung vào các lĩnh vực mà tôi không quá quen thuộc và cuối cùng là thực hiện một số vấn đề thường thấy. Do sự hạn chế về mặt thời gian của tôi, tôi chỉ thường giải quyết 2 vấn đề/ngày.
Kinh nghiệm:
• Tập luyện nhiều. Không có cách nào khác.
• Nhưng thay vì thực hiện tất cả 600 vấn đề trên Leetcode, hãy xem qua tất cả các loại trước và dành thời gian tìm hiểu kỹ từng vấn đề. Tôi đã làm khoảng 70 vấn đề và cảm thấy đó là đủ cho tôi. Tôi nghĩ rằng nếu bạn thấy 70 vấn đề này không hữu ích với bạn thì bạn không đúng rồi vì nếu như vậy thì 700 cũng thế cả thôi.
• Làm những phần khó khăn nhất trước. Sau đó tất cả phần còn lại sẽ trở nên dễ dàng.
• Nếu bị mắc kẹt trên một vấn đề trong hơn hai giờ, hãy kiểm tra các giải pháp. Nhiều thời gian hơn là không đáng.
• Sau khi giải quyết một vấn đề, hãy kiểm tra các giải pháp. Tôi thường ngạc nhiên về một số giải pháp thông minh, đặc biệt là liên quan đến việc viết Python trên một dòng.
• Sử dụng một ngôn ngữ mà bạn quen thuộc nhất và nó phải đủ phổ biến để dễ dàng giải thích cho người phỏng vấn của bạn.
2.2. Thiết kế hệ thống
Việc này có mối liên quan chặt chẽ với kinh nghiệm làm việc trên thực tế. Nhiều câu hỏi có thể được đặt ra trong các cuộc phỏng vấn thiết kế hệ thống, nó không giới hạn ở kiến trúc hệ thống, mà còn thiết kế hướng đối tượng, thiết kế lược đồ cơ sở dữ liệu, thiết kế hệ thống phân tán, khả năng mở rộng,…
Có rất nhiều tài nguyên trực tuyến có thể giúp bạn chuẩn bị. Phần lớn tôi đọc các bài báo về phỏng vấn thiết kế hệ thống, kiến trúc của các hệ thống quy mô lớn và nghiên cứu trường hợp.
Dưới đây là một số tài nguyên mà tôi thấy thực sự hữu ích:
Gainlo - Coding Interview Tips & Hacks
Weekly practical coding interview tips and hacks
blog.gainlo.co
Pragmatic Programming Techniques
horicky.blogspot.com
Le Cloud Blog
Sebastian Kreutzberger, founder & CEO stealth startup. Co-founder / CEO / CTO at VC-backed startups...
www.lecloud.net
High Scalability -
highscalability.com
Mặc dù các cuộc phỏng vấn thiết kế hệ thống có thể bao gồm rất nhiều chủ đề, nhưng có một số hướng dẫn chung về cách tiếp cận các vấn đề như sau:
• Hiểu các yêu cầu trước, sau đó đưa ra thiết kế bậc cao và cuối cùng đi sâu vào chi tiết thực hiện. Đừng nhảy vào những chi tiết ngay lập tức mà không tìm ra yêu cầu là gì.
• Không có một thiết kế hệ thống nào là hoàn hảo. Hãy biết đánh đổi cho những gì cần thiết.
Với tất cả những gì tôi đã nói, cách tốt nhất để thực hành cho các cuộc phỏng vấn thiết kế hệ thống là hãy thực sự ngồi xuống và thiết kế một hệ thống, làm nó như công việc hàng ngày của bạn. Thay vì thực hiện một hoạt động tối thiểu, hãy đi sâu hơn vào các công cụ, khung và thư viện bạn sử dụng. VD: nếu bạn sử dụng HBase, thay vì chỉ đơn giản là sử dụng máy khách để chạy một số DDL và thực hiện một số lần tìm nạp, hãy cố gắng hiểu kiến trúc tổng thể của nó, chẳng hạn như luồng đọc/ghi, làm thế nào HBase đảm bảo tính nhất quán mạnh mẽ, các phép tính phụ/chính làm gì và tìm ra cách bộ đệm LRU và Bộ lọc Bloom được sử dụng trong hệ thống. Bạn thậm chí có thể so sánh HBase với Cassandra để thấy sự tương đồng và khác biệt trong thiết kế của chúng. Và vì vậy, khi bạn được yêu cầu thiết kế một hệ thống tập tin phân tán, bạn cũng sẽ không cảm thấy bị bất ngờ. Nhiều blog cũng là một nguồn kiến thức tuyệt vời, chẳng hạn như Hacker Noon và blog kỹ thuật của một số công ty, cũng như những nguồn tài liệu chính thức của các dự án nguồn mở.
Điều quan trọng nhất là hãy giữ sự tò mò và khiêm tốn của bạn. Hãy giống như một miếng bọt biển biết hấp thụ tất cả mọi thứ khi mà nó chìm vào.
2.3. Machine Learning
Phỏng vấn Machine Learning có thể được chia thành hai khía cạnh, lý thuyết và thiết kế sản phẩm.
Trừ khi bạn có kinh nghiệm về nghiên cứu Machine Learning hoặc đã làm rất tốt trong khóa học ML của mình. Những thứ sách cổ điển như Elements of Statistical Learning và Pattern Recognition and Machine Learning là những lựa chọn tuyệt vời, và nếu bạn quan tâm đến các lĩnh vực cụ thể, bạn có thể đọc thêm về những điều đó.
Hãy chắc chắn rằng bạn hiểu các khái niệm cơ bản như đánh đổi thiên vị và phương sai, ovefitting, thuật toán tối ưu, Định lý Bayes,... Hãy làm quen với những thứ phổ biến như Định lý Bayes và đạo hàm của các mô hình phổ biến như hồi quy logistic và SVM. Cố gắng thực hiện các mô hình đơn giản như cây quyết định và thuật toán K-means. Nếu có thể, hãy trình bày thành tựu của bạn vào CV, và hãy chắc chắn rằng bạn hiểu nó một cách kỹ lưỡng và có thể nhận xét về ưu và nhược điểm của nó.
Đối với việc thiết kế sản phẩm ML, hiểu quy trình chung về cách xây dựng 1 sản phẩm ML. Đây là những gì tôi đã cố gắng làm:
• Tìm ra mục tiêu là gì: dự đoán, khuyến nghị,..
• Chọn thuật toán phù hợp: được giám sát so với không giám sát, phân loại so với hồi quy, mô hình tuyến tính tổng quát/cây quyết định/... Nêu lý do vì sao lựa chọn nó.
• Chọn các tính năng có liên quan dựa trên dữ liệu có sẵn.
• Chọn số liệu cho hiệu suất mô hình.
• Nhận xét về cách tối ưu hóa mô hình cho sản xuất.
Ở đây tôi muốn nhấn mạnh một lần nữa về tầm quan trọng của việc tìm tòi và học hỏi liên tục. Hãy cố gắng không chỉ sử dụng API cho Spark MLlib hoặc XGBoost, vì không phải chỉ thế là xong, nhưng hãy cố gắng tìm hiểu tại sao Stochastic Gradient Descent (SGD) lại thích hợp cho đào tạo phân tán, hoặc tìm hiểu XGBoost khác với GBDT truyền thống như thế nào, hay như tìm hiểu xem có điều gì đặc biệt về hàm mất mát của nó, tại sao nó lại cần phải tính đạo hàm bậc hai,..
3. Quá trình phỏng vấn
Tôi bắt đầu bằng cách trả lời tin nhắn của HR trên LinkedIn và yêu cầu giới thiệu. Sau một start up thất bại trước đây (tôi sẽ nói sau), tôi đã chuẩn bị kỹ lưỡng trong vài tháng và với sự giúp đỡ từ các nhà tuyển dụng, tôi đã lên lịch cho một tuần ở Bay Area. Tôi bay vào Chủ nhật, có năm ngày phỏng vấn với khoảng 30 người tại một số công ty công nghệ tốt nhất trên thế giới, và rất may mắn, tôi đã nhận được lời mời làm việc từ cả năm công ty.
4. Phone screening
Tất cả các màn hình điện thoại nên là dạng tiêu chuẩn. Sự khác biệt duy nhất trong các cuộc phòng vấn là về thời lượng: LinkedIn là một giờ, Facebook và Airbnb là 45 phút.
Thành thạo là chìa khóa mở cửa ở đây, vì bạn đang ở dưới một nhát súng thời gian và bạn chỉ có một cơ hội mà thôi. Bạn sẽ phải rất nhanh chóng nhận ra loại vấn đề và đưa ra giải pháp. Hãy chắc chắn nói chuyện với người phỏng vấn về những suy nghĩ và ý định của bạn. Nó có thể làm bạn chậm lại một chút khi bắt đầu, nhưng giao tiếp quan trọng hơn bất cứ điều gì và nó chỉ giúp ích cho cuộc phỏng vấn. Đừng có hành động như đang đọc thuộc lòng giải pháp vì người phỏng vấn gần như chắc chắn sẽ biết đó.
Đối với các vị trí về Machine Learning, một số công ty sẽ đặt câu hỏi về ML. Nếu bạn đang phỏng vấn cho vị trí này, hãy chắc chắn rằng bạn phải cải thiện kỹ năng ML của mình.
Để tận dụng tốt hơn thời gian của mình, tôi đã lên lịch ba cuộc phỏng vấn qua điện thoại vào cùng một buổi chiều, cách nhau một giờ. Ưu điểm là bạn có thể được hưởng lợi từ những cuộc phỏng vấn nóng hổi, nhưng nhược điểm là những cái sau có thể bị ảnh hưởng nếu cái đầu tiên không tốt, vì vậy tôi không mọi người như thế.
Một điều tốt nữa khi phỏng vấn với nhiều công ty cùng một lúc là nó mang lại cho bạn những lợi thế nhất định. Tôi đã có thể bỏ qua hai cuộc phỏng vấn vòng 2 với Airbnb và Salesforce vì tôi đã nhận được onsite tại LinkedIn và Facebook chỉ sau 1 lần phỏng vấn điện thoại.
Đáng ngạc nhiên hơn, Google thậm chí còn không cần phỏng vấn qua điện thoại sau khi biết tôi có lịch phỏng vấn với 4 nơi còn lại vào tuần tới. Tôi biết là khá mệt, nhưng mà này, không ai có thể từ chối lời mời tại Google cả!
5. Onsite
5.1. LinkedIn
Đây là chỗ đầu tiên và tôi đã phỏng vấn tại địa điểm Sunnyvale. Văn phòng rất gọn gàng và mọi người trông rất chuyên nghiệp.
Các phiên phỏng vấn cách nhau là một giờ. Câu hỏi mã hóa là tiêu chuẩn, nhưng câu hỏi ML có thể hơi khó nhằn. Tuy nhiên trước đó, tôi đã nhận được một email từ HR có chứa tài liệu chuẩn bị rất hữu ích và nên tôi không mấy ngạc nhiên. Tôi nghe tin đồn rằng LinkedIn có những bữa ăn ngon nhất ở Thung lũng Silicon và nó cũng không khác xa sự thật là mấy.
Việc mua lại bởi Microsoft dường như đã dỡ bỏ gánh nặng tài chính từ LinkedIn và giúp họ để làm nên những điều thực sự tuyệt vời. Các tính năng mới như video và quảng cáo chuyên nghiệp rất thú vị. Là một công ty tập trung vào phát triển chuyên nghiệp, LinkedIn ưu tiên sự phát triển của chính nhân viên của mình. Rất nhiều nhóm được lập ra như mức độ liên quan của quảng cáo và xếp hạng nguồn cấp dữ liệu đang mở rộng, vì vậy hãy hành động nhanh chóng nếu bạn muốn tham gia.
5.2. Salesforce Einstein
Rock star project by rock star team. Đội ngũ này khá mới và tôi cảm thấy rất giống một người khởi nghiệp. Sản phẩm được xây dựng trên Scala, vì vậy khá là an toàn! Tôi có một cuộc nói chuyện tuyệt vời về thư viện Optimus Prime của Matthew Tovbin tại Scala Days Chicago 2017 và Leah McGuire tại Spark Summit West 2017.
Tôi đã phỏng vấn tại văn phòng Palo Alto của họ. Đội ngũ có một nền văn hóa gắn kết, và cân bằng cuộc sống công việc, đây là một điều tuyệt vời ở đó. Mọi người đều đam mê những gì họ đang làm và họ thực sự thích nó. Nơi này nó ngắn hơn so với các cuộc phỏng vấn tại chỗ khác, nhưng tôi ước tôi có thể ở lại lâu hơn. Sau cuộc phỏng vấn, Matthew thậm chí còn đưa tôi đi bộ đến nhà để xe của HP.
5.3. Google
Hoàn toàn là người đầu ngành, ai cũng biết điều đó. Nhưng nó rất lớn. Thực sự, thực sự rất lớn. Tôi mất 20 phút để đi xe đạp để gặp bạn bè của tôi ở đó. Nhưng thật là một nơi tuyệt vời cho các nhà phát triển.
Tôi đã phỏng vấn tại một trong nhiều tòa nhà trong khuôn viên Mountain View và tôi không biết đó là tòa nhà nào vì nó LỚN quá.
Những người phỏng vấn tôi trông đều rất thông minh, và một khi họ bắt đầu nói, họ thậm chí còn tỏ ra thông minh hơn cả. Sẽ rất thú vị khi làm việc với những người này.
Một điều mà tôi cảm thấy đặc biệt về các cuộc phỏng vấn của Google là việc phân tích độ phức tạp thuật toán thực sự quan trọng. Hãy chắc chắn rằng bạn thực sự hiểu ký hiệu Big O có nghĩa là gì!
5.4. Airbnb
Một Unicorn startup – với một văn phòng đẹp nhất ở Thung lũng Silicon. Các sản phẩm mới như trải nghiệm và đặt chỗ nhà hàng, thị trường ngách cao cấp và mở rộng sang Trung Quốc đều đang có một triển vọng tích cực. Sự lựa chọn hoàn hảo nếu bạn chấp nhận rủi ro và muốn trải nghiệm dòng tiền IPO tăng trưởng nhanh.
Cuộc phỏng vấn coding của Airbnb có một chút kỳ lạ bởi vì bạn sẽ phải code trong IDE thay vì bảng trắng thông thường, vì vậy mã của bạn cần phải được biên dịch và đưa ra câu trả lời đúng. Một số vấn đề có thể thực sự khó khăn trong quá trình code.
Và tôi đã có một cuộc phỏng vấn chức năng chéo có một không hai. Điều này lý giải tại sao Airbnb có một mặt kỹ thuật xuất sắc, để loại bỏ những người không đủ điều kiện làm việc.Đối với tôi hai chức năng chéo thực sự thú vị. Tôi đã có những cuộc trò chuyện ngẫu nhiên với những người phỏng vấn và tất cả chúng tôi đều cảm thấy hạnh phúc vào cuối buổi.
Nhìn chung, tôi nghĩ rằng Airbnb là khó khăn nhất do có khá là nhiều vấn đề khó khăn như thời gian dài hơn và các cuộc phỏng vấn đa chức năng độc đáo. Nếu bạn quan tâm, hãy chắc chắn hiểu văn hóa và giá trị cốt lõi của họ.
5.5. Facebook
Một người khổng lồ vẫn đang trên đà phát triển nhanh, nhỏ hơn và nhưng lại nhịp độ nhanh hơn so với Google. Với các dòng sản phẩm, Facebook thống trị thị trường mạng xã hội và các khoản đầu tư lớn vào AI và VR, tôi chỉ có thể thấy nhiều tiềm năng tăng trưởng hơn cho Facebook trong tương lai. Với những ngôi sao như Yann LeCun and Yangqing Jia, đó là nơi hoàn hảo nếu bạn quan tâm đến Machine Learning.
Tôi đã phỏng vấn tại Tòa nhà 20, một trong những khu vườn trên sân thượng và view biển, đây cũng là nơi đặt văn phòng của Zuckerberg. Tôi không chắc người phỏng vấn có hướng dẫn hay không, nhưng tôi không nhận ra được dấu hiệu rõ ràng nào cho rằng các giải pháp của mình đúng hay sai, mặc dù tôi tin rằng chúng là như vậy.
Đến trưa buổi phỏng vấn, tôi bắt đầu phải trả giá, tôi bị đau đầu. Tôi đã kiên trì suốt buổi chiều nhưng cảm thấy mình không làm tốt chút nào. Và tôi khá là ngạc nhiên khi tôi cũng nhận được một lời đề nghị từ họ.
Nói chung, tôi cảm thấy mọi người ở đó tin vào tầm nhìn của công ty và họ tự hào về những gì họ đang xây dựng. Là một công ty có nửa nghìn tỷ vốn hóa thị trường và đang phát triển, Facebook đúng là một nơi hoàn hảo để phát triển sự nghiệp của bạn.
6. Đàm phán
Đây là một chủ đề lớn mà tôi sẽ không đề cập đến trong bài viết này, nhưng tôi thấy bài viết này rất hữu ích. Một số điều mà tôi nghĩ là quan trọng:
• Hãy chuyên nghiệp.
• Hãy biết tận dụng lợi thế của mình.
• Hãy thực sự quan tâm đến các team và các dự án.
• Giữ vũng sự kiên nhẫn và tự tin.
• Hãy quyết tâm nhưng phải lịch sự.
• Không bao giờ nói dối.
7. Cuộc phỏng vấn thất bại của tôi với Databricks
Tất cả các thành công bắt đầu với thất bại, bao gồm các cuộc phỏng vấn. Trước khi tôi bắt đầu phỏng vấn cho các công ty này, tôi đã thất bại trong cuộc phỏng vấn tại Databricks vào tháng Năm.
Trở lại vào tháng Tư, Xiangrui liên lạc với tôi qua LinkedIn hỏi tôi có quan tâm đến vị trí trong nhóm Spark MLlib không. Tôi đã vô cùng hồi hộp vì:
• Tôi sử dụng Spark và tôi yêu Scala
• Các kỹ sư của Databricks là đỉnh cao
• Spark đang cách mạng hóa toàn bộ thế giới dữ liệu.
Đó là một cơ hội tôi không thể bỏ lỡ, vì vậy tôi đã bắt đầu phỏng vấn sau một vài ngày.
Tiêu chuẩn rất cao và một quá trình khá dài, bao gồm một phỏng vấn câu hỏi sàng lọc trước, phỏng vấn qua điện thoại, một nhiệm vụ coding và một tại chỗ onsite.
Tôi nhận được lời mời onsite, và tôiđến thăm văn phòng của họ ở trung tâm thành phố San Francisco, nơi có thể nhìn thấy Đảo Treasure.
Người phỏng vấn của tôi cực kỳ thông minh nhưng cũng không kém phần khiêm tốn. Trong các cuộc phỏng vấn tôi thường cảm thấy bị đẩy đến giới hạn. Mọi chuyện vẫn ổn cho đến khi thảm họa bắt đầu, tôi hoàn toàn bị rối tung vì không đủ kỹ năng và sự chuẩn bị, và nó đã thất bại. Xiangrui rất tốt bụng và đưa tôi đến nơi tôi muốn đến sau khi cuộc phỏng vấn kết thúc, và tôi thực sự rất thích nói chuyện với anh ấy.
Tôi nhận được lời từ chối vài ngày sau đó. Mặc dù đã biết trước nhưng tôi vẫn cảm thấy thất vọng trong vài ngày. Mặc dù tôi đã bỏ lỡ cơ hội làm việc ở đó, tôi hoàn toàn mong muốn họ sẽ tiếp tục tạo ra những thành tựu lớn hơn trong tương lai.
8. Ngẫm lại
• Cuộc sống rất ngắn ngủi. Có một cuộc sống chuyên nghiệp lại càng ngắn hơn. Hãy di chuyển vào đúng thời điểm.
• Phỏng vấn không chỉ là phỏng vấn. Phỏng vấn là một cách hoàn hảo để kết nối và kết bạn.
• Luôn tò mò và học hỏi.
• Đàm phán vô cùng quan trọng cho sự hài lòng công việc.
• Nhận được lời mời làm việc chỉ có nghĩa là bạn đáp ứng các yêu cầu tối thiểu. Không có yêu cầu tối đa. Hãy tiếp tục tốt hơn
Từ cuộc phỏng vấn đầu tiên vào tháng 5 đến cuối cùng khi được chấp nhận lời mời làm việc vào cuối tháng 9, sự thay đổi nghề nghiệp đầu tiên của tôi thực sự rất dài và không dễ dàng gì.
Thật khó cho tôi để chuẩn bị bởi vì tôi cần tiếp tục làm tốt công việc hiện tại của mình. Trong vài tuần, tôi đã có một lịch trình thường xuyên để chuẩn bị cho cuộc phỏng vấn đến 1 giờ sáng, thức dậy lúc 8:30 sáng ngày hôm sau và dành trọn vẹn cho một ngày khác làm việc.
Phỏng vấn tại năm công ty trong năm ngày cũng rất căng thẳng và rủi ro, và tôi không khuyên bạn nên làm điều đó trừ khi bạn có một lịch trình dày đặc. Nhưng nó mang lại cho bạn một lợi thế khá tốt trong quá trình đàm phán và nhận được nhiều ưu đãi hơn.
Tôi muốn gửi lời cảm ơn đến tất cả các nhà tuyển dụng đã kiên nhẫn hướng dẫn tôi trong suốt quá trình vừa qua, những người dành thời gian quý báu của họ để nói chuyện với tôi và tất cả các công ty đã cho tôi cơ hội này.
Cuối cùng nhưng quan trọng nhất, tôi muốn cảm ơn gia đình vì tình yêu và sự ủng hộ của họ - bố mẹ tôi đã theo dõi tôi từ bước đầu tiên và ở từng bước, tôi luôn có người vợ thân yêu ở bên cạnh – cảm ơn cô ấy vì tất cả những gì cô ấy đã làm cho tôi và con gái tôi.
Cảm ơn đã đọc qua bài viết siêu dài này.
Credit: Tran Vu
link. medium. com/VzC4fNHmA2
BÀI MỚI ĐANG THẢO LUẬN