7 tháng 5, 2017
Phỏng vấn & Kiểm tra
Tôi trở về Trường Sa để thi giữa kỳ, tiện thể tham gia phỏng vấn tại Tencent. Ngày hôm đó trời mưa ở Trường Sa, tuyến xe Lập Sơn bị ùn tắc một lúc nên tôi đến muộn khoảng nửa giờ. Người phỏng vấn đã hỏi tôi những câu hỏi sau đây:
- Về KVO / KVC, họ hỏi tôi khái niệm cơ bản.
- Liên quan đến luồng xử lý (threads), họ hỏi tôi thường sử dụng gì. Tôi nói rằng mình chủ yếu dùng NSOperation và GCD, sau đó họ hỏi tôi có từng dùng NSThread chưa, và tôi trả lời là ít khi sử dụng.
- Họ hỏi ý nghĩa của Atomic và Non-Atomic.
- Họ yêu cầu tôi viết một Singleton an toàn về luồng bằng cách sử dụng Dispatch_once, tuy nhiên hình như tôi đã viết thiếu sót vài phần.
- Họ bảo tôi chèn ngẫu nhiên các số từ 0 đến 99 vào một NSMutableArray. Tôi hỏi liệu có thể dùng NSSortDescriptor với block để trả về giá trị true/false ngẫu nhiên không. Người phỏng vấn tỏ vẻ hơi ngạc nhiên và liên tục hỏi tôi cách sắp xếp này hoạt động thế nào, độ phức tạp bao nhiêu. Tôi giải thích rằng đây là thực hiện nội bộ của Apple, nhưng tôi cũng không chắc chắn lắm.
- Họ hỏi về kinh nghiệm dự án, đặc biệt là về EVA VR của RavenTech. Sau khi nghe tôi trình bày về dự án, họ hỏi tôi tại sao phải viết Plugin Native WebBrowser to Texture2D cho Unity. Tôi giải thích rằng Unity chỉ gói Mono Runtime, còn việc gói WebKit thì không nằm trong phạm vi quan tâm của Unity, vì vậy chúng tôi phải tự viết plugin. Có lẽ người win win - game bài phỏng vấn nghĩ rằng Unity sẽ cung cấp giao diện trình duyệt phổ quát, nên họ đặt câu hỏi này.
- Họ hỏi tôi có từng trượt môn học nào chưa, tôi trả lời là vừa trượt môn học kỳ trước. Họ hỏi tại sao tôi có nhiều kinh nghiệm dự án đến vậy, tôi thành thật nói rằng mình thường nghỉ học, trừ kỳ thi ra thì tôi luôn tập trung vào các dự án. Người phỏng vấn nói rằng điều đó khá can đảm, nhưng tôi không chắc họ muốn ám chỉ điều gì.
- Cuối cùng, họ hỏi tôi có câu hỏi nào không, và tôi rất thành thật trả lời là không. Sau đó bạn bè khuyên tôi rằng lẽ ra tôi nên đặt một số câu hỏi để thể hiện sự chân thành hơn.
Sau buổi phỏng vấn, tôi kiểm tra kết quả ngay tối hôm đó và thấy rằng mình không vượt qua vòng tuyển chọn.
Về bài kiểm tra của Alibaba, môi trường chạy Objective-C được xây dựng bằng GNUStep, quá trình biên dịch rất nghiêm ngặt, chỉ cần có cảnh báo (warnings) là không thể thông qua. Code mà tôi viết trên Xcode tại nhà không hoạt động trên hệ thống đánh giá trực tuyến vì luôn xuất hiện các cảnh chơi slot game trực tuyến báo về chuyển đổi kiểu dữ liệu, ví dụ như từ id sang NSNumber. Cuối cùng tôi đành bỏ cuộc.
Từ trải nghiệm này, tôi rút ra bài học rằng tuyển dụng sinh viên không quá quan tâm đến số lượng star trên GitHub của bạn. Điều quan trọng nhất vẫn là tìm hiểu sâu về thuật toán và cấu trúc dữ liệu. Ngoài ra, phỏng vấn là một kỹ năng cần chuẩn bị trước chứ không thể chỉ dựa vào sự bận rộn mà không ôn luyện. Nhiều kiến thức dù không thường xuyên sử dụng trong công việc nhưng nếu xem lại trước khi phỏng vấn thì vẫn nhớ lại được.
Board For GitHub
Đây là một dự án mã nguồn mở nhỏ mà tôi bắt đầu từ tháng mười năm ngoái. Sau đó, tôi có ý định đưa ứng dụng này lên Mac App Store, vì vậy đã thêm một số tính năng mới như NSTouchBar và NSUserNotification. Tuy nhiên, đội ngũ xét duyệt của Apple đã từ chối đăng ký lên Mac App Store tổng cộng năm lần, với lý do tương tự như khi tôi viết ArtWall: trải nghiệm người dùng quá giống với Safari. Khác biệt lớn nhất là ArtWall là một ứng dụng gốc hoàn toàn, trong khi Board For GitHub chỉ đơn thuần là một phần mềm dựa trên WebView, do đó càng khó vượt qua quy định. Cuối cùng, tôi quyết định phân phối ứng dụng bên ngoài Mac App Store. Ban đầu tôi muốn sử dụng DevMate để tích hợp thử nghiệm và thanh toán bằng Stripe, nhưng sau đó phát hiện Paddle đã hợp nhất hai chức năng này trong một SDK duy nhất, có phiên bản Cocoa và JavaScript, rất thuận tiện. Tuy nhiên, Paddle không bao gồm chức năng cập nhật tự động, vì vậy tôi đã sử dụng HockeyApp để xử lý việc này. Phiên bản hiện tại có thể tải về từ .
Cuộc sống hàng ngày
Tôi đã xem vài bộ phim cùng Miu Miu. Vào cuối tuần, tôi thường ngồi ở nhà chơi Gang Beasts và Broforce. Trường học đang quản lý ngày càng chặt chẽ, kể từ khi tôi rời Trường Sa, họ đã bổ sung thêm hệ thống nhận diện khuôn mặt để điểm danh, nhưng tôi đã không còn đủ năng lượng để đối phó với những quy định này nữa. Khi trở lại trường, tôi nhận ra rằng mặc dù các bạn cùng lớp dường như không quan tâm đến công việc, nhưng ban ca nang tien thực tế họ đều đang âm thầm tìm kiếm các cơ hội thực tập khác nhau. Đây là lần đầu tiên trong khoảng hai đến ba năm qua tôi cảm thấy nghi ngờ về hướng đi mà mình đang theo đuổi. Việc không vượt qua phỏng vấn khiến tôi băn khoăn, trong tuần ở trường, tôi nhận ra rằng mình phải đối phó với nhiều nhiệm vụ, công ty cũng giảm lương vì tôi về Trường Sa, và đôi khi có sự hiểu lầm với bạn gái. Tất cả những điều này khiến tôi cảm thấy mọi thứ đều không ổn vào cuối tháng Tư. Soundtrack của Guardians of the Galaxy 2 thật sự rất hay.
Sửa đổi lần cuối vào 2025-03-31