Phỏng vấn

Meta Online Assessment và phỏng vấn coding: cách chuẩn bị

Hướng dẫn chính thức của Meta cho kỹ sư phần mềm không mô tả vòng OA tự động: bước kỹ thuật đầu tiên là một buổi 45 phút với kỹ sư, giải hai bài code trong khoảng 35 phút. Một số ứng viên kể có nhận bài OA trực tuyến; nếu bạn nhận được, hãy làm đúng theo thư mời.

Meta công bố gì về quy trình phỏng vấn

Theo trang Hiring process của Meta (đọc ngày 10/11/2026), quy trình thường gồm trao đổi với recruiter, vòng sàng lọc ban đầu và full loop, kéo dài khoảng 2–3 tháng. Hướng dẫn vòng sàng lọc cho kỹ sư phần mềm (Meta Technical Screen Guide) mô tả một buổi 45 phút với một kỹ sư: 5 phút giới thiệu; khoảng 35 phút giải hai bài code về thuật toán, cấu trúc dữ liệu, đệ quy và cây nhị phân, trên trình soạn thảo chung như CoderPad nếu phỏng vấn từ xa hoặc trên bảng nếu gặp trực tiếp; và 5 phút cuối để bạn hỏi. Hướng dẫn full loop ghi 4 đến 6 buổi, mỗi buổi 45 phút, gồm coding, design và behavioral; ở buổi coding, bạn giải khoảng hai bài trong khoảng 40 phút và người phỏng vấn không biên dịch code của bạn.

Hai hướng dẫn này không nhắc tới bài OA tự động. Theo chia sẻ của ứng viên trên các trang luyện thi, một số chương trình có gửi bài OA trực tuyến trước tech screen, với số câu và thời lượng khác nhau. Nếu nhận được lời mời như vậy, email mời, cổng ứng tuyển và recruiter là nguồn quyết định.

Khi nhận lịch, kiểm: deadline theo múi giờ nào; thời gian tính từ lúc mở hay có cửa sổ; ngôn ngữ được phép; có thể chạy code bao nhiêu lần; camera hay giám sát; tài liệu nào được dùng; cách báo sự cố; có phần hành vi hay work style không. Chụp hoặc lưu hướng dẫn theo chính sách để tránh nhớ nhầm.

Ý chính

Chuẩn bị tốt không phải đoán trúng đề. Đó là xây quy trình đọc–mô hình hóa–cài đặt–kiểm thử đủ chắc để hoạt động khi số câu, thời gian hoặc giao diện khác dự đoán.

Kiểm tra ngoặc "{ [ ( ) ] }" bằng Ngăn xếp (Stack) 1. Đọc '{', '[', '(' Stack: [ '{', '[', '(' ] 2. Đọc ')' khớp '(' Pop '(' → còn [ '{', '[' ] 3. Đọc ']' khớp '[' Pop '[' → còn [ '{' ] 4. Đọc '}' khớp '{' Stack rỗng → Trả về YES Nếu gặp "([)]" Đỉnh '[' ≠ '(' → Trả về NO
Stack kiểm tra ngoặc "{ [ ( ) ] }" 1. Đẩy 3 ngoặc mở '{', '[', '(' Stack: [ '{', '[', '(' ] 2. Gặp ')' rồi ']': khớp đỉnh Pop '(' và '[' → còn [ '{' ] 3. Gặp '}': khớp '{' cuối cùng Stack rỗng → Hợp lệ (YES) Phản ví dụ: "([)]" Gặp ')' khi đỉnh là '[' → Sai (NO)
Hình 1. Kiểm tra chuỗi ngoặc hợp lệ {[()]} bằng ngăn xếp trong một lần duyệt O(n).

Buổi phỏng vấn có trợ lý AI trong CoderPad

Trang Hiring process của Meta cho biết một số vị trí nay có trợ lý AI được phép dùng ngay trong CoderPad ở các buổi phỏng vấn kỹ thuật, và ứng viên được kỳ vọng dùng trợ lý này như một phần của buổi phỏng vấn; công cụ AI bên ngoài thì không được phép. Hãy hỏi recruiter buổi của bạn thuộc dạng nào.

Nếu có trợ lý AI, bạn vẫn phải tự làm rõ đề, chia nhỏ bài toán, đọc và kiểm từng đoạn code trợ lý gợi ý, và giải thích được vì sao chọn cách đó. Nếu là dạng cổ điển, hãy luyện trên trình soạn thảo trống và viết code mà không chạy thử, đúng như hướng dẫn của Meta khuyên.

Chiến lược khi đồng hồ chạy

Đọc lướt toàn bộ nếu nền tảng cho phép chuyển câu. Ước lượng mẫu và độ khó, lấy điểm chắc trước. Với mỗi câu, dành phút đầu viết hợp đồng: input, output, giới hạn, trùng, rỗng, kiểu số. Nếu bí, ghi phương án vét cạn và tìm nút thắt; đừng nhảy giữa ba ý chưa hoàn chỉnh.

Đặt một mốc dừng. Ví dụ sau một phần ba thời gian chưa có state rõ, chuyển câu hoặc hoàn thiện lời giải chậm đúng trước. Một lời giải O(n²) đúng có thể nhận điểm một phần; một khung O(n) dở dang thường không. Tuy nhiên cách chấm phụ thuộc hệ thống, nên đây là chiến lược chung chứ không cam kết điểm Meta.

Ví dụ cơ bản: kiểm tra chuỗi ngoặc

Với ([{}]), mỗi ngoặc đóng phải ghép với ngoặc mở gần nhất chưa ghép, nên stack là mô hình tự nhiên. Gặp mở thì push; gặp đóng thì stack phải không rỗng và đỉnh đúng loại; cuối cùng stack phải rỗng. Với ([)], ký tự ) gặp đỉnh [ nên sai ngay.

Code mẫu bỏ qua ký tự không phải ngoặc để xử lý chuỗi như function(a[0]). Hợp đồng này phải nói rõ: nếu đề yêu cầu mọi ký tự đều là ngoặc, việc bỏ qua sẽ sai. Đây là ví dụ điển hình cho một quyết định nhỏ nhưng thay toàn bộ bộ test.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    string s;
    getline(cin, s);
    vector<char> st;
    for (char c : s) {
        if (c == '(' || c == '[' || c == '{') {
            st.push_back(c);
        } else if (c == ')' || c == ']' || c == '}') {
            if (st.empty()) {
                cout << "NO\n";
                return 0;
            }
            char open = st.back();
            st.pop_back();
            if ((c == ')' && open != '(') ||
                (c == ']' && open != '[') ||
                (c == '}' && open != '{')) {
                cout << "NO\n";
                return 0;
            }
        }
    }
    cout << (st.empty() ? "YES\n" : "NO\n");
    return 0;
}
Ca Diễn biến chính Kết quả
([]{}) mọi đóng khớp đỉnh YES
([)] ) không khớp [ NO
chuỗi rỗng stack luôn rỗng YES
((( còn phần tử cuối vòng NO
a[0] bỏ ký tự thường theo hợp đồng YES

Độ phức tạp O(n) thời gian, O(n) bộ nhớ trong trường hợp toàn ngoặc mở. Nếu chỉ đếm số lượng mở–đóng, ta không phân biệt được ([)]; stack lưu đúng thứ tự lồng.

Những mẫu nên ưu tiên ôn

Mảng và hash map: Two Sum, tần suất, prefix sum. Hai con trỏ và sliding window: đoạn không lặp, điều kiện cửa sổ. Stack/queue: ngoặc, monotonic stack, BFS. Interval: sort và merge. Tree/graph: traversal, shortest path không trọng số. Heap: top-k. Binary search: tìm biên và tìm trên đáp án.

Hướng dẫn full loop của Meta ghi rõ Meta không hỏi quy hoạch động (dynamic programming) và khuyên không dành thời gian ôn dạng này. Các cấu trúc dữ liệu hướng dẫn nhắc tới là mảng, ngăn xếp hoặc hàng đợi, bảng băm, cây (gồm cây nhị phân và cây nhị phân tìm kiếm), đồ thị và heap; danh sách trên bám theo các cấu trúc đó.

Danh sách này vẫn không phải “tủ đề Meta”: nó là tập mẫu coding interview phổ biến có độ chuyển giao cao. Với mỗi mẫu, bạn cần một bài dễ để tái dựng code, một bài vừa để biến đổi và một ghi chú “khi nào không dùng”.

Luyện tốc độ mà không hy sinh độ đúng

Tốc độ đến từ chunk tư duy, không từ bỏ bước kiểm. Ví dụ nhìn thấy “gần nhất chưa ghép” nghĩ stack; “đoạn liên tiếp” nghĩ window/prefix; “k phần tử lớn nhất liên tục” nghĩ heap. Nhưng tín hiệu chỉ tạo danh sách ứng viên. Ràng buộc mới quyết định.

Tập template tối thiểu cho input/output và cấu trúc quen thuộc, nhưng tránh thư viện cá nhân quá lớn. Môi trường làm bài có thể khác máy bạn. Hãy làm mock bằng editor trống, tắt autocomplete một số buổi, và luyện cả khi không có debugger.

Tự tạo bảng ca biên

Mỗi mẫu có một bảng mặc định. Array: n=0/1, trùng, âm, cực trị. String: rỗng, một ký tự, Unicode nếu hợp đồng cho phép. Graph: đỉnh cô lập, chu trình, nhiều thành phần. Tree: cây rỗng, một nút, cây lệch hẳn một phía. Binary search: nghiệm đầu, cuối, không tồn tại.

Sau khi code, chọn ba ca đánh vào ba nhánh chính, không chạy ngẫu nhiên vô thức. Đọc lại biến theo đúng code. Một lỗi thường gặp là chạy tay thuật toán định viết, không phải câu lệnh đã viết.

Chuẩn bị tech screen và full loop

Theo hướng dẫn của Meta, sau tech screen là full loop 4 đến 6 buổi coding, design và behavioral, mỗi buổi 45 phút; lịch cụ thể của bạn do recruiter xác nhận. Dù tên vòng là gì, kỹ năng giao tiếp vẫn quan trọng. Hãy luyện nói giả định, giải thích trade-off, và nhận gợi ý mà không phòng thủ. Đừng đợi qua tech screen mới bắt đầu ôn design và behavioral.

Chuẩn bị câu chuyện dự án theo bối cảnh–nhiệm vụ–hành động–kết quả. Với design, luyện làm rõ yêu cầu, API, dữ liệu, bottleneck và quan sát. Coding nhanh không bù được hoàn toàn lỗ hổng ở các năng lực khác nếu vai trò đánh giá chúng.

Đánh giá mock bằng dữ liệu

Ghi thời gian hiểu đề, thời gian có hướng, thời gian code, số lỗi trước khi pass và loại lỗi. Nếu luôn mất 15 phút vì parser, luyện I/O. Nếu có hướng nhanh nhưng sai biên, bắt buộc viết bảng ca trước code. Nếu code đúng mà không kịp câu hai, luyện quyết định dừng.

Mỗi tuần làm một mock toàn phiên, hai buổi sửa điểm yếu và một buổi giải lại bài cũ. Tăng số đề mới liên tục mà không phân loại lỗi chỉ tạo cảm giác bận.

Những điều không nên làm

  • Tin một blog bên thứ ba hơn thư mời chính thức về thời lượng hay chính sách.
  • Tìm hoặc chia sẻ nội dung đề bị ràng buộc bảo mật.
  • Dùng công cụ AI bên ngoài, tài liệu hay thiết bị phụ; ở buổi có trợ lý AI trong CoderPad, chỉ trợ lý đó được dùng.
  • Dùng code template không hiểu và không thể sửa khi signature khác.
  • Chỉ chạy sample, không kiểm rỗng, trùng, overflow và quy tắc hòa.
  • Học đến thiếu ngủ trước deadline rồi làm giảm working memory.

Một buổi luyện tech screen tại nhà

Chọn hai bài chưa biết chủ đề, đặt đồng hồ 35 phút như phần coding của tech screen trong hướng dẫn của Meta và dùng editor trống. Trước khi bắt đầu, viết chính sách giả lập: có hay không autocomplete, được chạy bao nhiêu lần, không xem tài liệu. Khi hết giờ, dừng ngay và ghi trạng thái thay vì kéo dài cho đến khi pass.

Chấm riêng điểm chiến lược: bạn có đọc cả hai đề, có bỏ quá lâu ở một câu, có giữ năm phút kiểm không. Sau đó mới hoàn thiện lời giải ngoài giờ. Buổi luyện này không chép đề của Meta; nó luyện cách chia thời gian và làm đúng một yêu cầu bất ngờ, kỹ năng dùng được ở nhiều nền tảng.

Luyện ngay trên Big-O Coding

Luyện ngoặc hợp lệ và tiếp tục các mẫu stack, hash, window trong Coding Interview 150.

Câu hỏi thường gặp

Meta Online Assessment có bao nhiêu câu?

Hướng dẫn chính thức của Meta không mô tả bài OA tự động; vòng tech screen 45 phút có hai bài code trong khoảng 35 phút. Số câu của các bài OA mà ứng viên kể lại khác nhau theo chương trình, nên hãy đọc đúng lời mời hoặc hỏi recruiter.

Có cần ôn quy hoạch động cho Meta không?

Hướng dẫn full loop của Meta ghi rõ không hỏi quy hoạch động. Hãy dành thời gian đó cho mảng, xâu, bảng băm, cây, đồ thị và heap.

Có nên luyện riêng “đề Meta” không?

Có thể dùng trải nghiệm công khai để tham khảo, nhưng ưu tiên mẫu nền và mock đúng môi trường. Không dùng nội dung vi phạm bảo mật.

Nếu nền tảng gặp lỗi thì sao?

Chụp bằng chứng theo chính sách, ghi thời điểm, dùng kênh hỗ trợ trong lời mời và báo recruiter sớm; đừng tự tạo tài khoản hay làm lại trái hướng dẫn.

Muốn học bài bản cùng giảng viên?

Luyện LeetCode thực chiến theo pattern, giải bài trong 45 phút và mock interview cùng AI. 16 buổi online, lớp 7–12 học viên, chọn C++, Java hoặc Python.

Xem Khóa LeetCode

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483