40+ Câu hỏi phỏng vấn lập trình game thường gặp cùng gợi ý trả lời hữu ích
Kiến thức lập trình

40+ Câu hỏi phỏng vấn lập trình game thường gặp cùng gợi ý trả lời hữu ích

TX
Trần Xuân Hiếu
Xuất bản 9/28/2026

Ngành công nghiệp game tại Việt Nam đang trải qua giai đoạn tăng trưởng mạnh mẽ với hàng loạt studio game trong nước và quốc tế liên tục mở rộng đội ngũ. Nhu cầu tuyển dụng Game Developer theo đó cũng tăng đáng kể, nhưng đây cũng là lĩnh vực có bar kỹ thuật cao và yêu cầu phỏng vấn khắt khe hơn nhiều so với hình dung của nhiều ứng viên. Phỏng vấn Game Developer không chỉ kiểm tra khả năng lập trình thuần túy mà còn đánh giá tư duy về hiệu suất, khả năng thiết kế hệ thống game phức tạp và hiểu biết về trải nghiệm người chơi. Bộ câu hỏi dưới đây được tổng hợp từ nhiều nguồn thực tế trong và ngoài nước, phản ánh đúng những gì các studio game đang hỏi trong phòng phỏng vấn hiện nay.

Tổng quan về tình hình tuyển dụng của Game Developer

Thị trường tuyển dụng Game Developer tại Việt Nam có một số đặc thù đáng chú ý. Phần lớn studio game tại Việt Nam tập trung vào mobile game, đặc biệt là các thể loại casual và mid-core nhắm đến thị trường Đông Nam Á và toàn cầu. Điều này có nghĩa là Unity và C# đang chiếm ưu thế rõ rệt trong các tin tuyển dụng, trong khi Unreal Engine phổ biến hơn ở các studio phát triển game PC và console hoặc các dự án AAA.

Điểm khác biệt lớn nhất giữa phỏng vấn Game Developer so với Web hay Mobile Developer nằm ở chiều sâu kỹ thuật về hiệu suất và đồ họa. Nhà tuyển dụng không chỉ hỏi bạn code như thế nào mà còn hỏi tại sao code đó ảnh hưởng đến frame rate, bộ nhớ và trải nghiệm người chơi ra sao. Ngoài ra, portfolio với các game đã hoàn thiện hoặc game jam project có thể quan trọng hơn bằng cấp trong nhiều trường hợp vì nó chứng minh trực tiếp khả năng ship sản phẩm thực tế.

Điều nhà tuyển dụng tìm kiếm ở một Game Developer không đơn thuần là người biết dùng Unity hay Unreal, mà là người hiểu sâu cơ chế hoạt động bên trong của engine, có tư duy tối ưu hóa và đủ đam mê để giải quyết những bài toán kỹ thuật thú vị mà game đặt ra.

Bộ 40+ câu hỏi phỏng vấn Game Developer

Bộ câu hỏi dưới đây được chia thành năm nhóm chủ đề, phản ánh đúng cấu trúc phỏng vấn tại hầu hết các studio game hiện nay. Tùy vào vị trí và engine mà công ty đang dùng, mỗi buổi phỏng vấn có thể đi sâu hơn vào một hoặc hai nhóm, nhưng nắm vững cả năm nhóm sẽ giúp bạn tự tin ứng phó với bất kỳ tình huống nào.

image.png
5 chủ đề câu hỏi thường gặp khi phỏng vấn vị trí lập trình game

Câu hỏi về kiến thức nền tảng Game Development

Đây là nhóm câu hỏi xuất hiện ở hầu hết mọi buổi phỏng vấn Game Developer bất kể engine hay platform, vì chúng kiểm tra nền tảng tư duy về cách game hoạt động ở tầng cơ bản nhất. Trả lời tốt nhóm này cho thấy bạn hiểu game từ bên trong chứ không chỉ biết kéo thả trong editor.

1 .Game loop là gì và nó hoạt động như thế nào?

Đây là câu hỏi nền tảng nhất trong phỏng vấn game dev, interviewer muốn thấy bạn hiểu cơ chế cốt lõi mà mọi game đều dựa vào để chạy.

  • Giải thích game loop là vòng lặp vô hạn liên tục thực hiện ba bước: xử lý input từ người chơi, cập nhật trạng thái game (update) và render khung hình mới lên màn hình.
  • Nêu tại sao tốc độ của game loop ảnh hưởng trực tiếp đến frame rate và cảm giác mượt mà của game.
  • Trình bày sự khác biệt giữa fixed timestep và variable timestep và khi nào dùng loại nào.

2. Delta time là gì và tại sao nó quan trọng?

Câu này kiểm tra hiểu biết về một trong những khái niệm quan trọng nhất để làm cho game chạy nhất quán trên mọi thiết bị.

  • Giải thích delta time là khoảng thời gian đã trôi qua giữa frame hiện tại và frame trước đó.
  • Nêu tại sao cần nhân tốc độ di chuyển với delta time: nếu không, game chạy nhanh hơn trên máy khỏe và chậm hơn trên máy yếu.
  • Cho ví dụ cụ thể: position += speed * deltaTime đảm bảo vật thể di chuyển cùng tốc độ thực tế bất kể frame rate.

3. Entity Component System (ECS) là gì và ưu điểm so với kiến trúc truyền thống?

Câu này đánh giá hiểu biết về kiến trúc game hiện đại, ngày càng phổ biến trong các dự án đòi hỏi hiệu suất cao.

  • Giải thích ECS tách biệt dữ liệu (Component) khỏi logic (System) và định danh (Entity), khác với OOP truyền thống nơi dữ liệu và hành vi được đóng gói trong cùng một object.
  • Nêu lợi ích chính: cache-friendly memory layout giúp tăng hiệu suất đáng kể khi xử lý số lượng lớn entity, dễ thêm tính năng mới mà không phá vỡ code hiện tại.
  • Đề cập Unity DOTS và Unreal Mass Entity như các implementation ECS trong engine phổ biến hiện nay.

4. Các design pattern phổ biến trong game development là gì?

Interviewer muốn thấy bạn không chỉ code được mà còn biết tổ chức code theo cách có thể bảo trì và mở rộng.

  • Nêu Singleton thường dùng cho GameManager, AudioManager nhưng cần lưu ý về các vấn đề khi lạm dụng.
  • Trình bày Observer/Event System phù hợp cho giao tiếp giữa các hệ thống không liên quan trực tiếp như UI cập nhật khi điểm số thay đổi.
  • Đề cập State Machine phù hợp cho quản lý trạng thái nhân vật (Idle, Running, Attacking) và Command Pattern dùng cho undo/redo hoặc input handling.

5. Collision detection trong game hoạt động như thế nào?

Câu này kiểm tra hiểu biết về một trong những hệ thống cốt lõi của mọi game có tương tác vật lý.

  • Giải thích hai giai đoạn chính là broad phase (lọc nhanh các cặp object có thể va chạm bằng AABB hay spatial hashing) và narrow phase (kiểm tra chính xác va chạm giữa các cặp đã lọc).
  • Nêu sự khác biệt giữa discrete và continuous collision detection, và tại sao continuous cần thiết cho các vật thể di chuyển nhanh để tránh tunneling.
  • Trình bày các loại collider phổ biến (box, sphere, capsule, mesh) và trade-off giữa độ chính xác và hiệu suất.

6. Frame rate và vsync ảnh hưởng đến trải nghiệm người chơi như thế nào?

Câu này đánh giá hiểu biết thực tế về trải nghiệm người chơi và cách kỹ thuật ảnh hưởng đến cảm giác gameplay.

  • Giải thích frame rate càng cao thì game càng mượt mà, nhưng mức cảm nhận tăng dần giảm dần sau khoảng 60fps với hầu hết người chơi.
  • Nêu vsync đồng bộ frame rate của game với refresh rate của màn hình để tránh screen tearing, nhưng có thể tăng input latency.
  • Đề cập tại sao game mobile thường target 30fps hoặc 60fps còn game PC cạnh tranh thường không giới hạn frame rate.

7. Game balancing là gì và làm thế nào để tiếp cận nó từ góc độ lập trình?

Câu này ít phổ biến hơn nhưng cho thấy ứng viên hiểu mối liên hệ giữa kỹ thuật và thiết kế game.

  • Giải thích game balancing là quá trình điều chỉnh các thông số để game vừa thách thức vừa công bằng và thú vị.
  • Nêu từ góc độ lập trình: thiết kế hệ thống dùng data-driven approach với ScriptableObject hoặc JSON thay vì hard-code số liệu giúp designer dễ dàng điều chỉnh mà không cần rebuild.
  • Trình bày cách dùng analytics để theo dõi hành vi người chơi và đưa ra quyết định balancing dựa trên dữ liệu thực tế.

8. Sự khác biệt giữa các loại game engine và khi nào nên tự xây dựng engine?

Câu này đánh giá tư duy kiến trúc và hiểu biết về trade-off trong lựa chọn công nghệ.

  • Phân biệt general-purpose engine (Unity, Unreal) phù hợp cho hầu hết dự án, specialized engine tối ưu cho một thể loại game cụ thể, và custom engine phù hợp khi có yêu cầu đặc biệt mà engine sẵn có không đáp ứng được.
  • Nêu tự xây dựng engine chỉ hợp lý khi có team đủ lớn, dự án đủ lớn và yêu cầu kỹ thuật rất đặc thù, vì chi phí development và maintenance cực kỳ cao.
  • Chia sẻ kinh nghiệm thực tế nếu đã từng dùng nhiều engine và lý do chọn engine nào cho dự án nào.

Câu hỏi về Unity và C#

Unity là engine phổ biến nhất trong thị trường game mobile và indie tại Việt Nam. Nhóm câu hỏi này tập trung vào những khái niệm cốt lõi mà bất kỳ Unity developer nào cũng cần nắm vững, từ vòng đời của GameObject cho đến các kỹ thuật tối ưu hóa nâng cao.

image.png
Unity là engine phổ biến nhất trong thị trường game

9. Vòng đời của một MonoBehaviour trong Unity hoạt động như thế nào?

Câu hỏi kinh điển trong phỏng vấn Unity, interviewer muốn thấy bạn hiểu thứ tự thực thi và biết khi nào nên đặt logic ở đâu.

  • Trình bày các method quan trọng theo đúng thứ tự: Awake gọi khi object được khởi tạo kể cả khi chưa active, OnEnable khi object được bật, Start gọi trước frame đầu tiên sau khi object active, Update mỗi frame, FixedUpdate với fixed timestep cho physics, LateUpdate sau tất cả Update, OnDisable và OnDestroy.
  • Giải thích sự khác biệt quan trọng giữa Awake và Start: Awake dùng để khởi tạo nội bộ của component, Start dùng khi cần tham chiếu đến component khác đã được Awake.
  • Nêu lý do tại sao không nên đặt heavy logic trong Update mà nên tách ra hoặc dùng event-driven approach.

10. Sự khác biệt giữa Update, FixedUpdate và LateUpdate là gì?

Câu này phân hóa rõ ứng viên hiểu Unity ở mức độ nào, vì dùng sai method là nguyên nhân phổ biến của nhiều bug khó chịu.

  • Giải thích Update chạy mỗi frame với tần suất không cố định, phù hợp cho input handling và game logic thông thường.
  • Nêu FixedUpdate chạy với tần suất cố định độc lập với frame rate (mặc định 50 lần/giây), bắt buộc phải dùng cho mọi thao tác với Rigidbody và physics.
  • Trình bày LateUpdate chạy sau tất cả Update của frame đó, phù hợp cho camera follow để tránh jitter vì nhân vật đã được cập nhật vị trí xong.

11. Coroutine trong Unity là gì và khi nào nên dùng?

Câu này đánh giá hiểu biết về một trong những tính năng đặc trưng nhất của Unity và cách xử lý tác vụ bất đồng bộ.

  • Giải thích Coroutine là method trả về IEnumerator cho phép tạm dừng thực thi và tiếp tục ở frame sau hoặc sau một khoảng thời gian, chạy trên main thread chứ không phải background thread.
  • Nêu các use case phù hợp: delay một hành động, spawn wave enemy theo thời gian, animation sequence, loading screen.
  • Trình bày Coroutine không phải giải pháp cho heavy computation vì vẫn chạy trên main thread, và async/await là lựa chọn hiện đại hơn cho nhiều trường hợp trong Unity hiện tại.

12. ScriptableObject trong Unity là gì và ứng dụng thực tế?

Câu này thường gặp ở phỏng vấn mid-level trở lên, đánh giá khả năng thiết kế hệ thống data-driven.

  • Giải thích ScriptableObject là asset lưu trữ dữ liệu độc lập với scene, không bị reset khi scene load lại, phù hợp để lưu game data như stats nhân vật, item data, settings.
  • Nêu ưu điểm so với hard-code: designer có thể chỉnh sửa trực tiếp trong Inspector mà không cần đụng vào code, dễ tạo nhiều variant của cùng một loại item.
  • Trình bày pattern dùng ScriptableObject như event channel để giảm coupling giữa các hệ thống trong game.

13. Object pooling là gì và tại sao cần thiết trong Unity?

Câu này kiểm tra hiểu biết về một trong những kỹ thuật tối ưu hóa quan trọng nhất trong game development.

  • Giải thích object pooling là pattern tái sử dụng object thay vì liên tục Instantiate và Destroy, vì hai thao tác này tốn kém về mặt hiệu suất và gây garbage collection spike làm giật game.
  • Nêu use case điển hình: đạn trong game bắn súng, hiệu ứng particle, enemy spawn, UI element lặp lại.
  • Trình bày Unity 2021 trở lên có sẵn ObjectPool class trong UnityEngine.Pool namespace, không cần tự viết từ đầu.

14. Asset Bundle và Addressables trong Unity khác nhau như thế nào?

Câu này thường gặp trong phỏng vấn tại các studio làm game mobile có nội dung lớn hoặc cần cập nhật content mà không cần update app.

  • Giải thích Asset Bundle là hệ thống cũ cho phép đóng gói và load asset theo yêu cầu thay vì build tất cả vào trong app, nhưng việc quản lý dependency và versioning thủ công rất phức tạp.
  • Nêu Addressables là hệ thống mới xây dựng trên Asset Bundle với API đơn giản hơn, quản lý dependency tự động và hỗ trợ async loading tốt hơn.
  • Trình bày Addressables phù hợp cho live game cần hot update content, giảm initial download size và quản lý memory hiệu quả hơn.

15. Unity DOTS và ECS giải quyết vấn đề gì mà MonoBehaviour không làm được?

Câu này đánh giá mức độ cập nhật với hướng phát triển của Unity và hiểu biết về performance optimization ở tầng sâu.

  • Giải thích MonoBehaviour truyền thống dùng OOP với cache miss thường xuyên vì data nằm rải rác trong bộ nhớ, gây bottleneck khi xử lý hàng nghìn entity.
  • Nêu DOTS dùng data-oriented design với ECS layout lưu component liên tiếp trong bộ nhớ, cache-friendly và có thể tận dụng tốt multi-core CPU qua Job System.
  • Trình bày DOTS phù hợp cho simulation nặng như RTS với hàng nghìn unit, không phải giải pháp phù hợp cho mọi dự án vì learning curve cao và tooling vẫn đang phát triển.

16. Draw call là gì và làm thế nào để giảm thiểu trong Unity?

Câu thực tế này kiểm tra hiểu biết về rendering performance, thường gặp khi phỏng vấn vị trí làm game mobile.

  • Giải thích draw call là lệnh CPU gửi đến GPU để render một mesh với một material, số draw call càng nhiều thì CPU càng bận và frame rate càng thấp.
  • Nêu các kỹ thuật giảm draw call: Static Batching gộp các static object dùng chung material, Dynamic Batching cho object nhỏ, GPU Instancing cho nhiều object giống hệt nhau, và Sprite Atlas gộp nhiều sprite vào một texture.
  • Trình bày cách dùng Frame Debugger trong Unity để xem và phân tích draw call trong game của mình.

17. Sự khác biệt giữa Rigidbody và CharacterController trong Unity là gì?

Câu này đánh giá khả năng chọn đúng component cho bài toán di chuyển nhân vật, một trong những quyết định kỹ thuật phổ biến nhất trong game development.

  • Giải thích Rigidbody dùng physics engine để mô phỏng chuyển động, phản ứng với lực và va chạm một cách tự nhiên, phù hợp cho các vật thể bị ảnh hưởng bởi vật lý.
  • Nêu CharacterController cung cấp cách di chuyển có kiểm soát hơn, không bị physics engine ảnh hưởng hoàn toàn, phù hợp cho nhân vật người chơi cần cảm giác di chuyển responsive và có thể đi lên dốc.
  • Trình bày trade-off: Rigidbody dễ tích hợp với hệ thống physics nhưng khó kiểm soát chính xác, CharacterController cho cảm giác di chuyển tốt hơn nhưng cần tự xử lý nhiều logic như gravity và momentum.

18. Cách tối ưu hóa memory trong Unity như thế nào?

Câu này phân hóa rõ giữa developer quan tâm đến chất lượng sản phẩm với người chỉ làm cho game chạy được.

  • Nêu các nguồn gây memory vấn đề phổ biến: texture chưa được compress, audio clip để dạng uncompressed, leak object không được Destroy hoặc Unsubscribe event.
  • Trình bày cách dùng Unity Memory Profiler để phân tích chi tiết bộ nhớ đang được sử dụng bởi phần nào của game.
  • Đề cập các best practice: dùng texture compression phù hợp với từng platform, stream audio thay vì load toàn bộ vào RAM, giải phóng asset không dùng bằng Resources.UnloadUnusedAssets.

Câu hỏi về Unreal Engine và C++

Unreal Engine là lựa chọn hàng đầu cho các dự án game PC, console và các sản phẩm đòi hỏi chất lượng hình ảnh cao. Nhóm câu hỏi này đánh giá hiểu biết về các khái niệm đặc thù của Unreal cũng như C++, ngôn ngữ nền tảng của engine này.

image.png
Tùy theo mỗi tựa game sẽ có những ngôn ngữ hoặc công nghệ lập trình khác nhau

19. Blueprint và C++ trong Unreal Engine khác nhau như thế nào và khi nào dùng cái nào?

Câu hỏi đầu tiên và phổ biến nhất trong phỏng vấn Unreal, interviewer muốn thấy bạn hiểu được trade-off thực tế.

  • Giải thích Blueprint là hệ thống visual scripting cho phép tạo logic game mà không cần viết code, C++ cho hiệu suất cao hơn và khả năng truy cập toàn bộ engine API.
  • Nêu Blueprint phù hợp cho prototyping nhanh, gameplay logic không quá phức tạp và để designer tự thực hiện mà không cần programmer.
  • Trình bày best practice phổ biến là implement core system và performance-critical code bằng C++, sau đó expose ra Blueprint để designer có thể customize và mở rộng.

20. Unreal replication system cho multiplayer hoạt động như thế nào?

Câu này thường gặp khi ứng tuyển vị trí làm game online, đánh giá hiểu biết về networking trong Unreal.

  • Giải thích Unreal dùng client-server model, server là authority về game state, client gửi input lên server và nhận lại state đã được xác nhận.
  • Nêu Replicated property tự động đồng bộ giá trị từ server xuống client khi thay đổi, RPC (Remote Procedure Call) cho phép gọi function trên server hoặc client từ phía còn lại.
  • Trình bày khái niệm relevancy xác định actor nào cần được replicate đến client nào, giúp tiết kiệm bandwidth trong game với nhiều player.

21. Memory management trong C++ cho game development cần lưu ý những gì?

Câu này kiểm tra hiểu biết sâu về C++ và tại sao nó quan trọng trong context của game dev.

  • Nêu game dev với C++ phải tự quản lý memory, không có garbage collector như C#, vì vậy mọi new phải có delete tương ứng và cần tránh memory leak chặt chẽ.
  • Trình bày Unreal có smart pointer riêng như TSharedPtr, TWeakPtr và hệ thống UObject với garbage collector riêng để quản lý các object kế thừa từ UObject.
  • Đề cập custom allocator và memory pool là kỹ thuật phổ biến trong game AAA để kiểm soát chính xác việc cấp phát bộ nhớ và tránh fragmentation.

22. GameMode và GameState trong Unreal đóng vai trò gì?

Câu này đánh giá hiểu biết về kiến trúc multiplayer của Unreal, thường gặp khi phỏng vấn các vị trí gameplay programmer.

  • Giải thích GameMode chỉ tồn tại trên server, định nghĩa luật chơi như điều kiện thắng thua, cách spawn player và flow của game.
  • Nêu GameState tồn tại trên cả server và client, lưu thông tin game state cần được replicate đến tất cả player như điểm số, thời gian còn lại.
  • Trình bày PlayerState lưu thông tin riêng của từng player được replicate đến tất cả client, còn PlayerController chỉ tồn tại locally trên client đó.

23. Garbage collection trong Unreal hoạt động như thế nào?

Câu này đánh giá hiểu biết về quản lý vòng đời object trong Unreal, quan trọng để tránh crash và memory issue.

  • Giải thích Unreal có hệ thống garbage collection riêng cho các UObject, tự động giải phóng object không còn được reference bởi bất kỳ UPROPERTY nào.
  • Nêu nguyên nhân phổ biến gây object bị collect sớm: lưu pointer vào raw pointer thay vì UPROPERTY, dẫn đến dangling pointer khi GC chạy.
  • Trình bày cách force GC bằng GEngine->ForceGarbageCollection() và tại sao không nên làm điều này thường xuyên vì gây spike hiệu suất.

24. Cách xử lý input trong Unreal Engine như thế nào?

Câu thực tế này kiểm tra hiểu biết về hệ thống input của Unreal, thường gặp ở vị trí gameplay programmer.

  • Giải thích Enhanced Input System (từ Unreal 5) là hệ thống input hiện đại thay thế legacy input, cho phép định nghĩa Input Action và Input Mapping Context linh hoạt và dễ rebind.
  • Nêu cách tổ chức input: định nghĩa Action trong Input Action asset, map với key trong Input Mapping Context, bind Action với function trong code hoặc Blueprint.
  • Trình bày priority của Mapping Context giúp override input trong các tình huống khác nhau như khi mở UI thì disable gameplay input.

25. Unreal rendering pipeline hoạt động như thế nào ở mức cơ bản?

Câu này thường gặp ở vị trí graphics programmer hoặc khi studio cần developer có hiểu biết về rendering.

  • Trình bày Unreal dùng deferred rendering theo mặc định, trong đó geometry pass render các thuộc tính bề mặt vào G-Buffer, sau đó lighting pass tính toán ánh sáng dựa trên G-Buffer.
  • Nêu Lumen là hệ thống global illumination động trong Unreal 5, Nanite là virtualized geometry system cho phép render cực kỳ nhiều polygon mà không cần LOD thủ công.
  • Đề cập forward rendering là lựa chọn thay thế phù hợp hơn cho VR và một số mobile game vì ít bandwidth hơn.

26. Actor và Component model trong Unreal Engine hoạt động như thế nào?

Câu này kiểm tra hiểu biết về kiến trúc cơ bản của Unreal, nền tảng để xây dựng mọi gameplay system.

  • Giải thích Actor là bất kỳ object nào có thể được đặt trong world, có thể có transform và được quản lý bởi engine. Component là các module chức năng gắn vào Actor.
  • Nêu Actor-Component model cho phép tái sử dụng behavior bằng cách gắn component thay vì dùng inheritance sâu, linh hoạt hơn cho việc compose gameplay behavior.
  • Trình bày SceneComponent có thể attach với nhau để tạo hierarchy transform, còn ActorComponent không có transform và dùng cho pure logic như health system hay inventory.

Câu hỏi về hiệu suất và tối ưu hóa

Hiệu suất là yếu tố sống còn trong game development, đặc biệt với game mobile phải chạy trên hàng nghìn thiết bị với phần cứng khác nhau. Nhóm câu hỏi này đánh giá khả năng nhận diện vấn đề hiệu suất, sử dụng đúng công cụ phân tích và đưa ra giải pháp có cơ sở kỹ thuật thay vì tối ưu hóa cảm tính.

image.png
Nhóm câu hỏi về hiệu suất sẽ kiểm tra cách bạn đánh giá tình huống trong công việc

27. Profiling trong game development được thực hiện như thế nào?

Câu này phân hóa rõ developer có thói quen làm việc chuyên nghiệp với người chỉ biết code mà không đo lường.

  • Nêu nguyên tắc quan trọng: đừng bao giờ tối ưu hóa mà không profiling trước, vì điểm bottleneck thực tế thường không phải nơi bạn nghĩ.
  • Trình bày các công cụ theo từng platform: Unity Profiler và Frame Debugger cho Unity, Unreal Insights và stat commands cho Unreal, RenderDoc cho phân tích GPU chi tiết trên mọi engine.
  • Đề cập cách đọc profiling data: phân biệt CPU-bound và GPU-bound để chọn đúng hướng tối ưu, tìm hotspot chiếm nhiều thời gian nhất thay vì tối ưu dàn trải.

28. Level of Detail (LOD) hoạt động như thế nào và khi nào cần thiết?

Câu này kiểm tra hiểu biết về kỹ thuật tối ưu rendering phổ biến nhất trong game 3D.

  • Giải thích LOD là kỹ thuật dùng nhiều phiên bản mesh với số polygon khác nhau, chuyển sang mesh đơn giản hơn khi object ở xa camera để tiết kiệm GPU.
  • Nêu LOD cần thiết cho bất kỳ game 3D nào có nhiều object trong scene, đặc biệt open world game nơi hàng trăm object xuất hiện đồng thời.
  • Trình bày Nanite trong Unreal 5 tự động handle LOD ở tầng engine cho static mesh, giảm đáng kể công việc setup LOD thủ công cho artist.

29. Occlusion culling là gì và hoạt động như thế nào?

Câu này đánh giá hiểu biết về kỹ thuật rendering optimization quan trọng giúp loại bỏ các object không cần render.

  • Giải thích occlusion culling là kỹ thuật không render các object bị che khuất hoàn toàn bởi object khác, vì dù không nhìn thấy chúng vẫn tốn tài nguyên render nếu không được cull.
  • Nêu các phương pháp phổ biến: frustum culling loại bỏ object ngoài view frustum của camera, occlusion culling xử lý object trong frustum nhưng bị che khuất.
  • Trình bày Unity và Unreal đều có occlusion culling tích hợp sẵn nhưng cần được bake trước cho static scene, còn dynamic occlusion culling tốn kém hơn về mặt tính toán.

30. Làm thế nào để tối ưu hóa game cho thiết bị mobile?

Câu thực tế và quan trọng đặc biệt với thị trường game Việt Nam, nơi mobile game chiếm ưu thế.

  • Nêu các hướng tối ưu rendering: giảm draw call bằng batching và atlasing, dùng mobile-friendly shader, giảm shadow quality hoặc tắt real-time shadow trên thiết bị thấp.
  • Trình bày tối ưu memory: compress texture đúng format cho từng platform (ETC2 cho Android, PVRTC/ASTC cho iOS), stream audio thay vì load toàn bộ, giảm polygon count của model.
  • Đề cập tầm quan trọng của việc test trên thiết bị thực tế với phần cứng thấp nhất trong target range, không chỉ dựa vào Unity Editor hay emulator.

31. Shader là gì và khi nào cần viết custom shader?

Câu này thường gặp ở vị trí yêu cầu graphics knowledge, đánh giá hiểu biết về pipeline rendering.

  • Giải thích shader là chương trình chạy trên GPU, vertex shader xử lý vị trí của từng vertex, fragment shader xác định màu của từng pixel.
  • Nêu viết custom shader cần thiết khi muốn hiệu ứng visual không có sẵn trong engine như toon shading, dissolve effect hay custom water rendering.
  • Trình bày Shader Graph trong Unity và Material Editor trong Unreal cho phép tạo shader bằng visual node graph mà không cần viết code HLSL trực tiếp, phù hợp cho phần lớn trường hợp.

32. Cách xử lý large open world game về mặt kỹ thuật?

Câu nâng cao này thường gặp ở phỏng vấn senior hoặc studio làm game PC/console quy mô lớn.

  • Nêu world streaming là kỹ thuật cốt lõi: chia world thành các chunk và chỉ load chunk gần player, unload chunk xa để tiết kiệm memory.
  • Trình bày World Partition trong Unreal 5 tự động handle streaming cho large world, thay thế cách chia Level Streaming thủ công trước đây.
  • Đề cập các thách thức kỹ thuật đặc thù của large world như floating point precision issue khi player ở xa gốc tọa độ và cách xử lý bằng origin rebasing.

33. Cách xử lý memory leak trong game như thế nào?

Câu này kiểm tra thói quen làm việc cẩn thận và khả năng debug vấn đề khó phát hiện.

  • Nêu dấu hiệu nhận biết: memory tăng liên tục theo thời gian không giảm, game chậm dần sau khi chơi lâu, cuối cùng crash trên thiết bị mobile do hết RAM.
  • Trình bày nguyên nhân phổ biến trong Unity: không unsubscribe event trước khi Destroy object, giữ static reference đến object, không dùng ObjectPool dẫn đến tạo xóa liên tục.
  • Đề cập cách dùng Unity Memory Profiler hoặc Xcode Instruments để track object allocation và tìm ra object nào không được giải phóng theo đúng kỳ vọng.

34. Batching trong rendering là gì và các loại batching trong Unity?

Câu này kiểm tra hiểu biết chi tiết về cách engine tối ưu rendering, thường gặp khi phỏng vấn vị trí cần optimize mobile game.

  • Giải thích batching gộp nhiều draw call thành một để giảm overhead của CPU khi giao tiếp với GPU, hiệu quả nhất khi nhiều object dùng cùng material.
  • Nêu Static Batching gộp static object lúc build time, hiệu quả nhất nhưng tốn memory hơn. Dynamic Batching tự động ở runtime cho small mesh. GPU Instancing cho phép render nhiều instance của cùng mesh chỉ với một draw call.
  • Trình bày cách kiểm tra batching có hoạt động không bằng Frame Debugger và Stats window trong Unity Editor.

Câu hỏi về game design, AI và multiplayer

Đây là nhóm câu hỏi thể hiện sự trưởng thành trong tư duy nghề nghiệp của một Game Developer. Một lập trình viên game giỏi không chỉ implement những gì được yêu cầu mà còn hiểu tại sao hệ thống đó cần được thiết kế theo cách đó và ảnh hưởng của nó đến trải nghiệm người chơi.

image.png
Việc chuẩn bị kỹ lưỡng sẽ giúp bạn tự tin trao đổi với nhà tuyển dụng

35. Finite State Machine trong game AI hoạt động như thế nào?

Câu này kiểm tra hiểu biết về công cụ cơ bản nhất trong game AI, được dùng rộng rãi từ NPC đơn giản đến hệ thống phức tạp hơn.

  • Giải thích FSM định nghĩa một tập hữu hạn các trạng thái và các điều kiện chuyển đổi giữa chúng, tại mỗi thời điểm object chỉ ở một trạng thái duy nhất.
  • Nêu ví dụ thực tế: enemy AI với các state Patrol, Alert, Attack, Flee và các condition chuyển đổi như phát hiện player, mất dấu player hay máu xuống thấp.
  • Trình bày FSM đơn giản để implement và debug nhưng khó mở rộng khi số state tăng lên, lúc đó Behavior Tree hoặc Hierarchical FSM là lựa chọn phù hợp hơn.

36. Thuật toán A trong pathfinding hoạt động như thế nào?

Câu này kiểm tra hiểu biết về thuật toán pathfinding phổ biến nhất trong game, thường xuất hiện trong phỏng vấn kỹ thuật.

  • Giải thích A* tìm đường ngắn nhất từ điểm xuất phát đến đích bằng cách kết hợp chi phí thực tế đã đi (g) và ước lượng chi phí còn lại đến đích (h), ưu tiên node có f = g + h nhỏ nhất.
  • Nêu heuristic function h ảnh hưởng lớn đến hiệu suất: Manhattan distance cho grid không có diagonal movement, Euclidean distance cho movement tự do hơn.
  • Trình bày NavMesh là cách triển khai pathfinding phổ biến hơn trong game 3D, Unity NavMesh và Unreal Navigation Mesh đã tích hợp sẵn A* trên navigation mesh.

37. Game networking cơ bản: client-server và peer-to-peer khác nhau như thế nào?

Câu này đánh giá hiểu biết về kiến trúc multiplayer, quan trọng cho bất kỳ ai làm game online.

  • Giải thích client-server có một server trung tâm là authority, client chỉ gửi input và nhận kết quả, an toàn hơn và dễ chống gian lận nhưng cần infrastructure.
  • Nêu peer-to-peer các client giao tiếp trực tiếp với nhau, không cần dedicated server nên chi phí thấp hơn nhưng khó chống gian lận và latency phụ thuộc vào kết nối giữa các peer.
  • Trình bày relay server là hybrid approach phổ biến trong game mobile: peer kết nối qua server trung gian để xử lý NAT traversal mà không cần dedicated game server đắt tiền.

38. Lag compensation trong multiplayer game được xử lý như thế nào?

Câu nâng cao này thường gặp khi phỏng vấn vị trí làm game online cạnh tranh như FPS hay battle royale.

  • Giải thích lag compensation giúp người chơi có độ trễ mạng vẫn có trải nghiệm chính xác, bằng cách server lưu lại lịch sử game state và xử lý input của client tại thời điểm client thực sự bắn.
  • Nêu client-side prediction giúp client hiển thị kết quả ngay lập tức mà không cần chờ server xác nhận, server reconciliation điều chỉnh lại nếu kết quả thực tế khác với prediction.
  • Trình bày đây là chủ đề phức tạp cần nghiên cứu kỹ nếu ứng tuyển vị trí network programmer, có thể tham khảo bài viết kỹ thuật từ Valve và Riot Games về cách họ giải quyết vấn đề này.

39. Hệ thống save và load game được implement như thế nào?

Câu thực tế này kiểm tra khả năng thiết kế hệ thống cần hoạt động đáng tin cậy trong mọi tình huống.

  • Nêu các lựa chọn lưu trữ: PlayerPrefs cho data nhỏ đơn giản, JSON/binary serialization cho game state phức tạp, cloud save cho cross-device progress.
  • Trình bày cần xử lý versioning để game cũ vẫn đọc được save file tạo từ phiên bản cũ hơn, vấn đề thường bị bỏ qua khi develop nhưng gây ra nhiều complaint từ người chơi sau khi update.
  • Đề cập cần có cơ chế backup save file và xử lý corruption gracefully, vì mất save data là một trong những trải nghiệm tệ nhất với người chơi.

40. Procedural generation trong game được ứng dụng như thế nào?

Câu này đánh giá hiểu biết về kỹ thuật tạo nội dung tự động, ngày càng phổ biến trong game indie và roguelike.

  • Giải thích procedural generation tạo ra content như level, map, item hay dialogue tự động bằng thuật toán thay vì thiết kế thủ công, giúp tạo ra lượng nội dung lớn với ít effort hơn.
  • Nêu các kỹ thuật phổ biến: Perlin noise cho terrain generation, BSP tree cho dungeon layout, Wave Function Collapse cho tile-based map.
  • Trình bày thách thức chính là đảm bảo kết quả vừa đủ ngẫu nhiên để thú vị vừa có cấu trúc để playable, cần có seed system để người chơi có thể share world với nhau.

41. Cách thiết kế hệ thống inventory trong game như thế nào?

Câu này kiểm tra khả năng thiết kế hệ thống game phức tạp, có nhiều cách tiếp cận và không có đáp án duy nhất đúng.

  • Nêu các yêu cầu cần xác định rõ trước khi thiết kế: số lượng slot có giới hạn không, item có thể stack không, có equipment system không, cần save/load không.
  • Trình bày data-driven approach: định nghĩa ItemData bằng ScriptableObject hoặc JSON, inventory chỉ lưu ID và quantity, tách biệt data với presentation layer.
  • Đề cập các edge case cần xử lý: full inventory khi nhặt item, split/merge stack, drag and drop UI, và đồng bộ hóa inventory trong multiplayer game.

42. Behavior Tree khác với Finite State Machine như thế nào trong game AI?

Câu nâng cao này thường gặp ở phỏng vấn vị trí AI programmer hoặc gameplay programmer senior.

  • Giải thích Behavior Tree tổ chức AI logic theo dạng cây phân cấp với các node Selector, Sequence và Leaf task, dễ đọc hơn và scale tốt hơn FSM khi AI phức tạp.
  • Nêu Selector chọn child đầu tiên thành công, Sequence chạy tất cả child theo thứ tự đến khi có child thất bại, kết hợp hai loại này tạo ra hành vi AI phức tạp từ các block đơn giản.
  • Trình bày Unreal có Behavior Tree tích hợp sẵn rất hoàn chỉnh, Unity có thể dùng thư viện third-party hoặc tự implement tùy yêu cầu.
image.png
Tuỳ theo quy mô và vị trí mà câu hỏi phỏng vấn có thể sẽ khác nhau

Cách sử dụng bộ câu hỏi này hiệu quả

Game development là lĩnh vực rộng và sâu, không ai có thể thành thạo tất cả mọi thứ. Cách tiếp cận hiệu quả nhất là đọc từng câu hỏi, tự thử trả lời trước khi đọc gợi ý, ghi nhận những điểm mình chưa nắm rõ và đi sâu nghiên cứu thêm về chủ đề đó. Với những câu hỏi về engine cụ thể như Unity hay Unreal, không có gì thay thế được việc thực sự mở engine lên và thử nghiệm trực tiếp.

Một điểm đặc biệt quan trọng trong phỏng vấn game dev là portfolio. Khi bạn có thể dẫn interviewer đến một game thực tế bạn đã làm và giải thích các quyết định kỹ thuật đằng sau nó, tất cả những câu hỏi lý thuyết ở trên sẽ trở nên dễ trả lời hơn nhiều vì bạn đang nói từ kinh nghiệm thực tế chứ không phải từ kiến thức học thuộc.

Nền tảng lập trình vững chắc, bước đầu tiên cho mọi hướng đi

Nhìn lại toàn bộ bộ câu hỏi phỏng vấn Game Developer ở trên, có một điểm chung dễ nhận ra: phần lớn những câu hỏi kỹ thuật quan trọng nhất không phải về engine hay tool cụ thể, mà là về tư duy lập trình cốt lõi. Hiểu design pattern, biết cách tối ưu hóa thuật toán, nắm vững cấu trúc dữ liệu, viết code sạch và có khả năng thiết kế hệ thống, đây là những kỹ năng cần thiết cho mọi lập trình viên bất kể bạn làm game, web hay mobile.

Đó cũng chính là nền tảng mà chương trình đào tạo tại Onschool Bootcamp tập trung xây dựng. Trong 120 ngày theo mô hình Learning by Doing, học viên không chỉ học ngôn ngữ lập trình mà còn rèn luyện tư duy giải quyết vấn đề, làm quen với quy trình làm việc chuyên nghiệp và xây dựng nền tảng kỹ thuật vững chắc thông qua hơn 10 dự án thực tế. Dù con đường bạn chọn sau này là web, mobile hay game, một nền tảng lập trình thực sự vững chắc luôn là lợi thế không thể thay thế. Sau khi hoàn thành chương trình, học viên được hỗ trợ xây dựng portfolio, luyện tập phỏng vấn kỹ thuật và kết nối với mạng lưới doanh nghiệp đối tác.

Kết luận

Phỏng vấn Game Developer đòi hỏi sự kết hợp độc đáo giữa kiến thức kỹ thuật sâu, tư duy tối ưu hóa và hiểu biết về trải nghiệm người chơi. Bộ câu hỏi trên bao phủ những chủ đề quan trọng nhất mà bạn có thể gặp, nhưng điều thực sự tạo ra sự khác biệt trong phòng phỏng vấn là khả năng lý luận rõ ràng, trình bày tư duy có hệ thống và minh họa bằng kinh nghiệm thực tế từ dự án của mình. Hãy dùng bộ câu hỏi này như một bản đồ để xác định điểm mạnh và điểm cần cải thiện, sau đó bổ sung kiến thức và thực hành liên tục đó là con đường ngắn nhất để tự tin bước vào bất kỳ buổi phỏng vấn Game Developer nào.

Bạn đã sẵn sàng đổi thay sự nghiệp chưa?

Onschool Bootcamp tự hào chỉ trong 120 ngày, đào tạo thế hệ lập trình viên kiến tạo thế giới số - bắt đầu từ con số 0

Đừng quên chia sẻ bài viết này!

Sao chép link

Cùng Onschool Bootcamp chinh phục lộ trình 120 ngày đổi thay sự nghiệp

Fullstack java web developer
Fullstack javascript (Nodejs & reactjs web developer
Fullstack Python web developer
Fullstack PHP web developer
Cross-Platform Mobile App Development

Khóa học dành cho người từ 18 tuổi trở lên

zalomessenger