Kinh nghiệm từ Kỹ sư phần mềm đang làm việc tại Facebook- cập nhật năm 2017

Tôi vừa kết thúc 7 buổi phỏng vấn tại các công ty công nghệ tại thung lũng Silicon, cuối cùng, tôi đã được nhận vị trí kỹ sư phần mềm tại Facebook. Sau đây sẽ là một số kinh nghiệm phỏng vấn tôi đã tích lũy trong thời gian qua.

Hành trình nhiều năm tới thung lũng Silicon.

Khi còn ngồi trên ghế đại học tại Úc với chuyên ngành Công nghệ Máy tính, tôi đã luôn tưởng tượng ra viễn cảnh trở thành một kỹ sư máy tính tại thung lũng Silicon. Tôi luôn giữ mãi niềm mơ ước này trong tim, và mục tiêu này chính là động lực giúp tôi cố gắng. Tôi đã rời vị trí Nhóm trưởng kỹ sư iOS tại một công ty rất tuyệt vời ở Melbourne, quay trở lại Perth để học cao hơn, và tại đây tôi đã chuẩn bị cho buổi phỏng vấn sắp tới của mình tại thung lũng Silicon.

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

Trong quá trình chuẩn bị của mình, tôi luôn biết rằng phỏng vấn sẽ là một thử thách không hề nhỏ, và thú thật, tôi không ngờ nó lại khó đến thế cho tới khi tôi có buổi phỏng vấn đầu tiên. Trong buổi vấn sau vòng đầu tiên, tôi phải sử dụng các dịch vụ miễn phí và tính phí để minh hoạ cho các kỹ năng của mình cùng các ứng viên đã có kinh nghiệm trong ngành khác qua điện thoại. Những buổi phỏng vấn thử đó rất cần thiết để luyện cho tôi quen với tâm lý và áp lực, thế nhưng sau đó tôi nhận ra, nó cũng chỉ bằng một phần rất nhỏ so với những buổi phỏng vấn thực. Lời khuyên của tôi dành cho các bạn đối với những buổi phỏng vấn đó là hãy luyện tập bằng những buổi phỏng vấn thử hoặc rút kinh nghiệm từ những buổi phỏng vấn thực tế trước. Sự lo lắng có thể sẽ áp đảo bạn, nhưng chúng sẽ được đẩy lùi thông qua luyện tập.

Cùng với nhiều điều khác trong cuộc sống, luyện tập sẽ nâng cao sự tự tin của bạn.

Nhóm câu hỏi phỏng vấn tôi từng gặp phải

Nếu các bạn vượt qua vòng sơ tuyển qua điện thoại, bạn sẽ có cơ hội tới những cuộc phỏng vấn kéo dài cả ngày tại các công ty. Những cuộc phỏng vấn này thường kéo dài 4-6 tiếng, tùy vào từng công ty. Về cơ bản, phỏng vấn tại công ty sẽ gồm ba chủ đề chính về thuật toán (algorithm), thiết kế kiến trúc (architecture design) và hành vi (behavioral). Tuy nhiên, một số công ty đã đứng ngoài xu hướng này và phỏng vấn ứng viên với nhiều yêu cầu về kỹ năng thực tế hơn.

Phỏng vấn thuật toán (Algorithm Interviews)

Đây là dạng phỏng vấn thường gặp nhất trong ngành này. Người tuyển dụng sẽ yêu cầu bạn giải một bài toán trên bảng trắng để đánh giá kiến thức và khả năng nhận biết của bạn. Trong những cuộc phỏng vấn như thế này, bạn thường giải quyết các vấn đề liên quan tới mã hoá, sau đó cần đưa ra giải pháp và thảo luận những hướng giải quyết hoặc đề xuất các giải pháp khác. Dạng phỏng vấn này đối với tôi không quá khó khăn vì tôi đã luyện giải các thuật toán, phân tích sự phức tạp về thời gian/ không gian và mã hoá trong 6 tuần liền.

Tôi khá thích dạng phỏng vấn này vì tôi không phải lo tới việc viết các cú pháp và tập trung giải quyết vấn đề bằng tay.

Phỏng vấn thiết kế kiến trúc (Architecture Design Interviews)

Đây là một loại phỏng vấn thú vị mà tôi đã từng đánh giá thấp. Nhà tuyển dụng sẽ yêu cầu bạn thiết kế một hệ thống (trên bảng trắng) như hệ thống vé xe tại bãi đỗ xe, phần mềm nhắn tin, trang twitter hay các hệ thống phổ biến khác.

Loại phỏng vấn này sẽ đánh giá xem bạn hiểu khái niệm và hệ thống tới đâu, và cũng để xem bạn có đạt được những yêu cầu từ nhà tuyển dụng hay không. Cũng chính cách đặt câu hỏi của ứng viên sẽ xác định khả năng của chính các bạn. Loại phỏng vấn này có xen kẽ đối thoại với một số biểu đồ vẽ. Mọi thứ đều ở trình độ khá cao, vậy nên bạn sẽ không phải viết hay thực hiện các phép mã hoá. Thường thì bạn nên cố gắng dẫn dắt cuộc đối thoại để thể hiện khả năng của mình và thế mạnh của mình, hạn chế đề cập tới các điểm yếu.

Phỏng vấn câu hỏi hành vi (Behavioral Interviews)

Nhà tuyển dụng sẽ hỏi bạn những câu hỏi cá nhân và những câu hỏi tình huống. Chuẩn bị cho những câu hỏi này không hề khó, tuy nhiên, chúng lại yêu cầu nhiều kỹ năng mềm hơn.

Những câu hỏi thường gặp:

- Bạn giải quyết thất bại như thế nào?

- Điểm yếu lớn nhất của bạn là gì?

- Bạn giải quyết các mâu thuẫn như thế nào?

- Bạn sẽ có cách hành xử nào khác?


Tôi cảm thấy mình thực hiện tốt với các dạng phỏng vấn như thế này dù tôi nghe nói có nhiều người thì không. Họ cố gắng sử dụng điểm mạnh của mình như một điểm yếu, trả lời theo hướng mà họ nghĩ là các nhà tuyển dụng muốn nghe, hoặc thậm chí là đổ lỗi cho người khác nếu dự án thất bại. Thế nhưng, trên thực tế là những nhà tuyển dụng đều đã được đào tạo và có các kỹ năng để nhận biết những người khoe khoang hoặc các ứng viên không tốt; hành động như trên chỉ khiến các nhà tuyển dụng có thêm lý do để loại bạn mà thôi. Hãy cứ là chính mình, thể hiện đam mê, thành thật về khuyết điểm của mình và thể hiện những sáng kiến của bạn thân để cải thiện tốt hơn, bạn sẽ ổn thôi.

Thích nghi văn hoá

Đây là phần thường xuyên đi kèm trong các buổi phỏng vấn  hành vi và tập trung vào việc xem xét bạn có phù hợp với các giá trị của công ty không. Ví dụ, văn hoá công sở của Facebook gần với văn hoá hacker với những ý tưởng mới lạ và táo bạo cùng nhiều sự thử nghiệm.

Rất nhiều các ông lớn trong ngành công nghệ nhấn mạnh vào văn hoá công sở và tuyển nhân viên phù hợp với các giá trị của công ty. Nếu bạn đi phỏng vấn một trong số những công ty đó, điều quan trọng bạn phải làm đó là tìm hiểu về giá trị của công ty và chọn lọc các kinh nghiệm của bản thân mà bạn có thể kết nối với công ty và đối thoại với nhà tuyển dụng.

Lập trình theo cặp

Một phần rất hay trong buổi phỏng vấn bạn có thể sẽ gặp là ghép cặp với một kỹ sư khác trước một cái máy tính với môi trường phát triển phần mềm đã được thiết lập sẵn, giống như những gì bạn làm ngoài thực tế. Bạn sẽ được yêu cầu hoàn thành một danh sách những điều cần phải thực hiện với các chức năng khác nhau trong một khoảng thời gian nhất định.
Tôi cảm thấy rất nhiều ứng viên thành công trong buổi phỏng vấn nhờ những kỹ năng thực tiễn họ có. Không giống như lập trình trên bảng trắng, bạn cần biết ngôn ngữ và mội trường trong ngành nghề này để tìm kiếm dữ liệu trong thời gian ngắn và hiệu quả.

Tìm và vá lỗi

Trong loại phỏng vấn này, bạn sẽ được yêu cầu tìm và sửa các vấn đề kỹ thuật trong mã hóa hiện tại hoặc tiềm năng sẽ xảy ra trong tương lai.
Loại phỏng vấn như vậy tôi mới gặp một lần và tôi nghĩ nó khá khó để chuẩn bị, đặc biệt nếu bạn là junior. Mỗi môi trường mã hoá lại có một đặc tính riêng, nhiều lỗi tôi vá được nhờ có những kinh nghiệm trước đó với môi trường phát triển tích hợp (IDE - Integrated development environment) và các chương trình khung (framework) có liên quan mà tôi tích luỹ được qua các năm.

Kiểm tra kiến thức tên miền (Domain Knowledge)

Lập trình về cơ bản là giống nhau trong tất cả các ngôn ngữ lập trình phổ biến hiện nay. Và khả năng cao là nếu bạn biết sử dụng một loại ngôn ngữ cho object-oriented programming, các kỹ năng đó sẽ chuyển đổi được khi bạn dùng ngôn ngữ lập trình khác.
Tuy nhiên, buổi phỏng vấn này lại tập trung vào các khía cạnh không thể chuyển đổi được giữa các ngôn ngữ hay chương trình khung. Nội dung của buổi phỏng vấn sẽ tập trung vào các môi trường cụ thể liên quan tới API, quản lý bộ nhớ, dung lượng, lịch sử, vv...
Chuẩn bị và luyện tập trước cho từng nội dung có thể là một thử thách. Tôi cảm thấy nhiều câu trả lời bắt nguồn từ những kinh nghiệm thực tế trước đây. Tùy thuộc vào từng vị trí ứng tuyển, câu trả lời của bạn sẽ có những giá trị khác nhau.

Hiểu hệ thống vận hành (Operating Systems)

Tùy thuộc vào từng vị trí hay từng nhóm, một số buổi phỏng vấn sẽ chỉ tập trung vào hệ thống vận hành. Trong buổi phỏng vấn này, bạn sẽ được hỏi những câu hỏi để đánh giá khả năng và mức độ hiểu sâu về kỹ thuật của hệ thống vận hành máy tính. Thú thật, những câu hỏi này hơi làm tôi giật mình vì hệ thống vận hành là phần đã được học ở những năm đầu đại học và thường  khá chung chung.

Nên chuẩn bị thế nào?

Như tôi đã viết ở trên, phỏng vấn là một kỹ năng. Dù bạn đã là một kỹ sư lập trình với điểm trên lớp rất cao, những kỹ năng đó không hoàn toàn chuyển đổi chính xác sang kỹ năng phỏng vấn. Tính nhất quán, và luyện tập cùng với sự chuẩn bị kỹ càng sẽ là chìa khóa thành công cho bạn.

Một số gợi ý về nội dung kỹ thuật trong buổi phỏng vấn:

- Học viết code hay mã hoá bằng tay

- Phát triển sâu kiến thức về cấu trúc dữ liệu

- Hiếu toàn diện về Big O Notation

- Nắm bắt tất cả các thuật toán sắp xếp chính

Khi nào bắt đầu?

Tùy thuộc vào thời gian và kế hoạch của mình, các bạn có thể muốn bắt đầu sớm hơn. Rất nhiều công ty tôi đến phỏng vấn yêu cầu ứng viên chờ 12 tháng để có thể đăng ký lại nếu họ đã trượt. Mặt khác, nếu bạn nghĩ bạn không sẵn sàng trong vòng 1 năm tới, bạn có thể bắt đầu làm quen và luyện tập cho các buổi phỏng vấn từng chút một. Nếu bạn đã sẵn sàng, bạn sẽ không cảm thấy sợ nữa
Nguồn: Medium

Hãy kể cho #VNPN nghe quá trình tìm việc của bạn, bằng cách thực hiện survey: https://goo.gl/forms/soEYL5MtTpihI3Bs1

#CAME #Jobref #Dreamjob