V8 là JavaScript engine mã nguồn mở của Google, viết bằng C++, dùng trong Chrome và là lõi thực thi JavaScript trong Node.js. V8 biên dịch JavaScript thành native machine code bằng JIT (Just-In-Time) compilation, giúp code chạy nhanh gần bằng C++.
Hãy nghĩ V8 như động cơ xe: nó tạo ra chuyển động (thực thi JS), còn Node.js là cả chiếc xe — thêm bánh, vô lăng (libuv, built-in modules) để chạy được trên đường thật, tức là ngoài trình duyệt.
Cơ chế: V8 không interpret JS từng dòng. Ban đầu nó parse code thành AST, rồi biên dịch sang bytecode (Ignition interpreter). Khi một hàm chạy nhiều lần, V8 đánh dấu là "hot" và biên dịch tiếp sang machine code tối ưu (TurboFan). Nó còn dùng hidden class: object cùng shape (cùng thứ tự properties) sẽ dùng chung internal class, giúp property access nhanh hơn. Node.js nhúng V8 vào C++ runtime và bổ sung libuv cho async I/O, các module như fs, http, crypto để tạo môi trường chạy JS hoàn chỉnh ngoài browser.
Ví dụ: nếu bạn tạo object rồi thêm property mới sau đó, V8 phải tạo hidden class mới, làm chậm property access. Trong hot path, hãy khởi tạo object với đầy đủ properties ngay từ đầu.
Edge case: V8 quản lý memory (heap) và garbage collection riêng, không phải Node.js. Khi bạn thấy lỗi "heap out of memory", đó là giới hạn heap của V8, có thể tăng bằng flag --max-old-space-size.
Lưu ý: V8 chỉ là phần thực thi JS; các API như fs, http đến từ Node.js, không phải V8. Khi phỏng vấn, đừng nói "Node.js = V8".