fbpx
Hàng triệu nội dung hữu ích dành riêng cho bạn đã sẵn sàng. Tìm hiểu thêm
Góc nhìn

Tôi vừa trở thành Dev tại Facebook. Dưới đây là cách tôi đã chuẩn bị cho cuộc phỏng vấn.

Anh Đức Phạm Level 5
.
18 min read

Tôi vừa hoàn thành bảy cuộc phỏng vấn tại công ty công nghệ Silicon Valley. Cuối cùng tôi đã chấp nhận lời đề nghị cho một công việc kỹ sư phần mềm từ Facebook.

Đây là cách tôi chuẩn bị cho những cuộc phỏng vấn này, và những gì tôi đã học được trên đường đi.

Hành trình nhiều năm của tôi hướng tới Thung lũng Silicon

Khi tôi học ngành Khoa học Máy tính tại trường đại học ở Úc, tôi luôn hình dung tương lai của mình là kỹ sư phần mềm ở Thung lũng Silicon.

Tôi thích ý tưởng là trung tâm của sự đổi mới của ngành công nghiệp công nghệ cao – cũng như những sai lầm của nó. Mục tiêu này giúp tôi có động lực. Nó giữ tôi tập trung.

Tôi rời khỏi vị trí của mình với tư cách là kỹ sư iOS hàng đầu tại một công ty tuyệt vời ở Melbourne và quay trở lại thành phố quê hương của tôi ở Perth để học tập. Ở đó tôi sẽ chuẩn bị cho quá trình phỏng vấn trước tôi ở Thung lũng Silicon. Tôi biết sẽ vô cùng khó khăn và gian nan.

Nếu bạn đề cập đến quá trình phỏng vấn công nghệ đến một phòng kỹ sư phần mềm, nhiều người sẽ nói ra chống lại các thực hành phỏng vấn phổ biến. Rất nhiều lập luận đến từ lý do giải quyết các thuật toán trên một bảng trắng không thực sự đại diện, hoặc dịch cho các công việc hàng ngày của một kỹ sư phần mềm.

Vì lợi ích của bài viết này, tôi sẽ không đi vào cuộc trò chuyện đó. Thay vào đó, tôi sẽ khám phá những loại thực hành phỏng vấn khác nhau từ quan điểm của ứng cử viên, tôi cũng sẽ tập trung vào những gì tôi đã học được từ quá trình này.

Phỏng vấn là một kỹ năng

Trong quá trình chuẩn bị, tôi luôn biết rằng việc phỏng vấn sẽ rất khó khăn. Nhưng tôi thành thật không biết nó sẽ khó đến mức nào khi tôi đi sâu vào cuộc phỏng vấn đầu tiên của mình.

Trong các cuộc phỏng vấn, tôi đã sử dụng cả dịch vụ trả tiền và miễn phí, mô phỏng các cuộc phỏng vấn mã hóa và bảng trắng qua điện thoại với những người có kinh nghiệm phỏng vấn các ứng viên trong ngành. Những cuộc phỏng vấn thực hành đó là rất cần thiết để giúp tôi áp lực. Nhưng như sau này tôi nhận ra, họ chỉ chiếm một phần nhỏ trong những gì mà một cuộc phỏng vấn thực sự bao gồm.

Tôi khuyên bạn không nên phỏng vấn trong công việc mơ ước của bạn mà không có một vài cuộc phỏng vấn hoặc phỏng vấn thực sự dưới vành đai của bạn. Sự căng thẳng có thể vô cùng áp đảo, và nó chỉ có thể bị mờ nhạt thông qua thực hành.

Như với nhiều thứ khác trong cuộc sống, thực hành sẽ cải thiện sự tự tin của bạn.

Các loại phỏng vấn khác nhau mà tôi gặp phải

Nếu bạn chuẩn bị và thực hiện đủ tốt trong màn hình điện thoại sơ bộ, bạn sẽ có cơ hội đến trên trang web và tiến hành các cuộc phỏng vấn đầy đủ ngày. Các cuộc phỏng vấn này thường sẽ kéo dài bốn đến sáu giờ tùy thuộc vào công ty bạn đang phỏng vấn.

Trong chuyến đi đến Thung lũng Silicon, tôi đã xếp hàng bảy cuộc phỏng vấn tại chỗ. Điều này đã cho tôi một cái nhìn độc đáo về bối cảnh hiện tại để phỏng vấn.

Thông thường, một trang web sẽ bao gồm ba chủ đề chính: thuật toán, thiết kế kiến ​​trúc và hành vi, đó là những gì tôi đã nghiên cứu và chuẩn bị. Tuy nhiên, có một số công ty dường như đang xu hướng này và mở rộng các cuộc phỏng vấn của họ để trang trải các kỹ năng thực tế hơn.

Tôi sẽ xem qua từng chủ đề mà tôi gặp phải.

Phỏng vấn thuật toán

Loại phỏng vấn phổ biến nhất mà bạn sẽ gặp phải. Người phỏng vấn sẽ yêu cầu bạn giải quyết vấn đề trên bảng trắng sẽ đánh giá kiến ​​thức của bạn về cấu trúc dữ liệu, phân loại thuật toán, đệ quy, phân tích phức tạp thời gian / không gian cũng như nhận dạng mẫu và trường hợp cạnh. Trong cuộc phỏng vấn này, bạn thường sẽ đưa ra một giải pháp brute-force, và sau đó cố gắng cải thiện giải pháp đó và thảo luận về sự cân bằng, nếu có, với các giải pháp khác nhau mà bạn đề xuất.

Đây là bánh mì và bơ chuẩn bị của tôi, mỗi ngày trong sáu tuần, tôi đã giải quyết các thuật toán trên một bảng trắng treo giá rẻ, phân tích độ phức tạp về thời gian / không gian của họ cũng như thực sự cố gắng hiểu điều gì xảy ra ở mỗi dòng mã.

Cá nhân, tôi thực sự thích các thuật toán bảng trắng bởi vì tôi không nhất thiết phải lo lắng về việc viết cú pháp compilable (phần lớn thời gian), cho phép tôi chỉ tập trung vào vấn đề ở bàn tay. Những người khác có thể không thích bảng trắng, nhưng với họ tôi muốn nói thực hành nó một cách nhất quán và nó có thể thay đổi ý định của họ.

Phỏng vấn thiết kế kiến ​​trúc

Đây là một cuộc phỏng vấn thú vị và một cuộc phỏng vấn mà tôi đã đánh giá thấp. Người phỏng vấn sẽ yêu cầu bạn thiết kế một hệ thống (trên một tấm bảng), chẳng hạn như hệ thống bán vé đỗ xe, chat messenger, twitter feed, cùng với các hệ thống thông dụng khác.

Những gì bạn đang được đánh giá là làm thế nào bạn có một khái niệm rộng và thiết kế một hệ thống đáp ứng tất cả các yêu cầu và ràng buộc. Nhưng tùy thuộc vào ứng cử viên để đặt ra các câu hỏi đúng, xác định các yêu cầu và ràng buộc. Cuộc phỏng vấn này là nhiều hơn của một cuộc trò chuyện trộn lẫn với một số sơ đồ vẽ và thậm chí cả cấu trúc lớp học. Mọi thứ đều khá cao, vì vậy bạn sẽ không viết bất kỳ mã thực thi thực tế nào.

Đương nhiên, bạn nên chỉ đạo cuộc trò chuyện để trang trải kiến ​​thức về cách hoạt động của các hệ thống. Nếu bạn là một kỹ sư phụ trợ, bạn sẽ không thực sự đi vào cơ chế của các chi tiết ứng dụng máy khách trừ khi bạn có một số chuyên môn trước đó trong khu vực đó. Tôi là một kỹ sư iOS, vì vậy tôi đã nói về các mẫu kiến ​​trúc, mô đun hóa chức năng, các mẫu thiết kế thay vì cách mở rộng các điểm cuối API, thêm công nhân, AWS và như vậy.

Phỏng vấn hành vi

Người phỏng vấn sẽ hỏi bạn những câu hỏi về bản thân bạn và cách bạn đối phó với một số tình huống nhất định. Việc chuẩn bị cho việc này không khó khăn như những người khác, nhưng lại đòi hỏi rất nhiều sự quan tâm đến bản thân bạn.

Các câu hỏi thường nằm dọc theo các dòng:
Làm thế nào để bạn đối phó với thất bại?
Điểm yếu lớn nhất của bạn là gì?
Bạn giải quyết xung đột như thế nào?
Bạn sẽ làm gì khác?

Tôi cảm thấy nó sẽ khá khó khăn để vít này lên nhưng tôi đã nghe rất nhiều người làm. Họ cố gắng ngụy trang thế mạnh của họ như là những điểm yếu, kỹ sư phản ứng của họ với một cái gì đó mà họ nghĩ rằng người phỏng vấn sẽ muốn nghe hoặc thậm chí chỉ vượt qua sự đổ lỗi của các dự án thất bại lên người khác.
“Điểm yếu của tôi là tôi quá tập trung”
“Đó là tất cả lỗi của Jerry, anh ấy bị bệnh cho hầu hết các dự án”

Những người phỏng vấn được đào tạo và hiệu chỉnh để xác định những người crappy và có một sự chú ý cấp tính để nhảm nhí. Đó là một cách nhanh chóng để ứng cử của bạn ném ra ngoài cửa sổ. Chỉ là chính hãng, thể hiện niềm đam mê cho công việc của bạn, sở hữu sai sót của bạn, thể hiện sự sáng tạo để cải thiện và bạn sẽ làm tốt.

Văn hóa phù hợp

Điều này thường được kết hợp với cuộc phỏng vấn Hành vi và tập trung vào việc tìm kiếm xem bạn có phù hợp với các giá trị của công ty hay không. Ví dụ, Facebook theo sau văn hóa giống như hacker được in đậm và vận chuyển những ý tưởng mới, thử nghiệm bằng thử nghiệm, không sợ phá vỡ mọi thứ. Trong khi Airbnb muốn tạo ra một thế giới mà mọi người cảm thấy như họ thuộc về bất cứ nơi nào họ đi, vì vậy họ tìm kiếm những người có kỹ năng hiếu khách tuyệt vời.

Rất nhiều công ty công nghệ lớn đặt trọng tâm vào văn hóa và thuê người dựa trên sự liên kết của người đó với giá trị của họ. Nếu bạn đang phỏng vấn tại một trong những công ty này, điều quan trọng là bạn tra cứu giá trị của họ và tìm thấy những kinh nghiệm trong quá khứ mà bạn có thể liên hệ và giao tiếp với người phỏng vấn của bạn.

Lập trình ghép nối

Một danh mục thú vị mà bạn sẽ được ghép nối với một kỹ sư khác trước máy tính đã được thiết lập với một môi trường phát triển, giống như những gì bạn sẽ sử dụng trong thế giới thực. Bạn được cung cấp một nhiệm vụ cơ bản với một danh sách các yêu cầu mà bạn phải hoàn thành, khi bạn hoàn thành mỗi nhiệm vụ, người phỏng vấn sẽ yêu cầu bạn triển khai nhiều chức năng hơn cho đến khi đạt đến giới hạn thời gian. Bạn được tự do sử dụng bất kỳ tài nguyên nào bạn muốn, chẳng hạn như Stack Overflow hoặc tài liệu trực tuyến.

Tôi cảm thấy như rất nhiều thành công của một ứng cử viên trong cuộc phỏng vấn này sẽ được xác định bằng cách tiếp xúc với những trải nghiệm thực tế. Không giống như bảng trắng, cần viết mã theo đúng cú pháp, vì vậy bạn nên biết ngôn ngữ và môi trường của mình từ trong ra ngoài vì bạn không muốn dành quá nhiều thời gian trên internet hoặc tài liệu tìm kiếm câu trả lời.

Trong vai trò trước đây của tôi, tôi sẽ viết mã sạch trong khi tôi đang làm việc trên một nhiệm vụ, tiếp theo là tối ưu hóa một khi tôi cảm thấy nhiệm vụ đã hoàn thành. Loại công việc này không có lợi cho loại phỏng vấn này. Tôi đã cố gắng làm sạch bản thân mình thành một góc bằng cách tối ưu hóa quá sớm khiến cho việc khôi phục trở nên khó khăn hơn. Tôi thấy rằng viết mã nguệch ngoạc và đề cập đến người phỏng vấn rằng tôi sẽ làm điều đó một cách khác nhau trong sản xuất được coi là đủ hơn viết sạch sẽ và tối ưu hóa.

Tìm và vá lỗi

Rất nhiều những gì chúng tôi làm khi các kỹ sư xoay quanh việc tìm và vá lỗi được báo cáo cho chúng tôi từ nhiều nguồn khác nhau. Trong cuộc phỏng vấn này, bạn sẽ được cung cấp một danh sách các lỗi để tìm và vá cũng như xác định các mã có khả năng có vấn đề khác trên đường đi.

Tôi chỉ thấy một ví dụ của loại phỏng vấn này và tôi cảm thấy sẽ rất khó khăn cho một người nào đó thực sự chuẩn bị, đặc biệt nếu họ là một học sinh nhỏ tuổi. Mỗi môi trường mã hóa đều có những điều kỳ quặc và sắc thái riêng của nó, rất nhiều sự chắp vá mà tôi đã có được từ những kinh nghiệm trước đây với IDE (môi trường phát triển tích hợp) và các khuôn khổ liên quan mà tôi đã tích luỹ qua nhiều năm.

Kiểm tra kiến ​​thức về miền

Lập trình cơ bản giống nhau trên hầu hết các ngôn ngữ thông dụng mà chúng ta thấy ngày nay. Rất có thể là nếu bạn biết lập trình hướng đối tượng trong một ngôn ngữ, những kỹ năng đó chủ yếu sẽ chuyển sang ngôn ngữ khác.

Tuy nhiên, cuộc phỏng vấn này tập trung vào các khía cạnh không thể chuyển giao giữa các ngôn ngữ hoặc khung công tác. Bạn sẽ được phỏng vấn về các đặc điểm môi trường liên quan đến API, quản lý bộ nhớ, khả năng, hạn chế, lịch sử và vv.

Thực hành có thể là thách thức cho chủ đề cụ thể này. Tương tự như phát hiện lỗi và phỏng vấn vá, tôi cảm thấy rất nhiều câu trả lời sẽ xuất phát từ những kinh nghiệm trước đó. Tùy thuộc vào cấp độ vai trò bạn đang áp dụng, câu trả lời bạn cung cấp có thể được cân nhắc khác nhau. Ví dụ: nếu ai đó đăng ký vai trò cơ sở không biết lịch sử lý do tại sao một API được cấu trúc theo một cách cụ thể, họ có thể được nhượng quyền. Tuy nhiên, nếu một ứng cử viên nộp đơn cho một vai trò cấp cao không biết, thì họ có thể được đánh dấu chống lại gay gắt hơn.

Hiểu hệ điều hành

Tùy thuộc vào vai trò hoặc nhóm bạn đang phỏng vấn, bạn có thể có một cuộc phỏng vấn chỉ tập trung vào các hệ điều hành. Trong cuộc phỏng vấn này, bạn sẽ được hỏi những câu hỏi sẽ đánh giá sự hiểu biết của bạn về cơ chế cấp thấp hơn của hệ điều hành của máy tính.

Phải thừa nhận rằng, cuộc phỏng vấn này khiến tôi mất cảnh giác. Hệ điều hành là điều tôi đã học được trong những năm đầu đại học, nhưng kiến ​​thức của tôi đã trở nên mơ hồ về chủ đề được phản ánh trong hoạt động của tôi.

Bạn nên chuẩn bị như thế nào

Như tôi đã viết trước đó, phỏng vấn là một kỹ năng của riêng nó. Ngay cả khi bạn đã là một lập trình viên tuyệt vời trong công việc ban ngày của bạn hoặc đạt điểm cao trong các nghiên cứu của bạn, những kỹ năng đó sẽ không chính xác chuyển 1: 1 khi bạn đang ở trong một phòng phỏng vấn nhỏ. Sự kiên trì, lặp lại và nhất quán với việc chuẩn bị phỏng vấn và thực hành sẽ là yếu tố quyết định chính xác kết quả của bạn.

Kiến thức tối thiểu

Nếu có ai hỏi tôi những gì tôi cảm thấy sẽ là những lĩnh vực để tập trung vào, tôi đề nghị những điều sau đây:

  • Tìm hiểu để viết mã bằng tay trên giấy và một bảng trắng đầu tiên và sau đó ném nó vào một IDE để làm nổi bật cú pháp, điều này sẽ trở thành bản chất thứ hai cho bạn.
  • Phát triển kiến ​​thức sâu về cấu trúc dữ liệu , điểm mạnh và điểm yếu của chúng so với nhau. Tôi phát hiện ra rằng việc thực hiện các cấu trúc dữ liệu và hành vi của chúng từ đầu đã dạy tôi nhiều hơn những gì tôi biết từ các khái niệm trừu tượng của chúng.
  • Hoàn toàn hiểu được ký hiệu Big O cho cả phức tạp về không gian và thời gian, điều này sẽ kết hợp hoàn hảo với thuật toán và sắp xếp các câu hỏi của bạn.
  • Nắm bắt tất cả các thuật toán sắp xếp chính vì sự khác biệt về phức tạp về thời gian / không gian có khả năng làm hỏng giải pháp tối ưu của bạn cho một thuật toán mà bạn đang cố giải quyết.

Khi nào bắt đầu

Tùy thuộc vào dòng thời gian của bạn, bạn có thể muốn bắt đầu sớm hơn sau này. Rất nhiều công ty mà tôi đã phỏng vấn có thời gian làm mát 12 tháng trước khi một ứng cử viên thất bại có thể nộp đơn xin lại. Mặt khác, nếu bạn biết bạn sẽ không sẵn sàng trong vòng một năm, bạn cũng có thể bắt đầu quy trình ngay bây giờ và có được một chút hương vị về quá trình phỏng vấn để khi bạn sẵn sàng, nó đã thắng ‘ t gần như đáng sợ.

Đừng lo lắng

Bạn đã có điều này.

Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng trở lại.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Chào mừng tham gia.

Đăng nhập sẽ giúp cá nhân hoá nội dung trang chủ của bạn, theo dõi các chủ đề yêu thích và tương tác với các bài viết bạn yêu thích.


Nhấp vào “Đăng ký” để chấp nhận Điều khoản dịch vụ và chính sách bảo mật của Toppick.