Sample questions
Un Jobs Burst Dots BasicsDifficulty 1
Which interface do you implement to define a basic single-unit job in Unity's C# Job System?
- aIJobParallelFor
- bIJob✓
- cIJobFor
- dIJobParallelForTransform
Explanation:IJob is the interface for a job that runs a single Execute() call; Unity invokes it once when a worker thread runs the job.
Un Jobs Burst Dots BasicsDifficulty 2
What happens when you call Run() on a job instead of Schedule()?
- aIt runs synchronously on the main thread right away✓
- bThe job is queued and runs on a worker thread next frame
- cThe job runs on a worker thread but blocks Update()
- dThe job is discarded because Run() only works in the Editor
Explanation:Run() executes the job immediately on the main thread, without going through the job queue, which is mainly useful for debugging.
Un Jobs Burst Dots BasicsDifficulty 1
What does calling Schedule() on a job return?
- aA NativeArray containing the job's result
- bA boolean indicating whether scheduling succeeded
- cA JobHandle for tracking or depending on the job✓
- dA coroutine you must yield on
Explanation:Schedule() returns a JobHandle, which represents the scheduled job and can be passed as a dependency to other jobs or completed.
Un Jobs Burst Dots BasicsDifficulty 2
Why must you call JobHandle.Complete() before the main thread reads a NativeArray that a scheduled job wrote to?
- aComplete() copies the NativeArray into managed memory first
- bComplete() is only needed for IJobParallelFor, not IJob
- cComplete() releases the NativeArray's allocated memory automatically
- dIt blocks until the job finishes, so the data becomes safe to read✓
Explanation:Complete() blocks until the job finishes, guaranteeing the write is done before the main thread safely accesses the same NativeContainer.
Un Jobs Burst Dots BasicsDifficulty 2
What is your responsibility once you allocate a NativeArray<T> for a job?
- aNothing — the garbage collector reclaims it like any managed array
- bCalling Dispose() on it yourself once you no longer need it✓
- cIt disposes itself automatically once the job's JobHandle completes
- dYou must set it to null so Unity frees the underlying memory
Explanation:NativeArray<T> is unmanaged memory outside the GC heap, so you are responsible for calling Dispose() explicitly to release it.
Un Jobs Burst Dots BasicsDifficulty 2
Why can't a job struct hold a field of a managed class type (for example, a regular C# List<int> or a MonoBehaviour reference)?
- aJob data must be blittable/unmanaged for safe worker-thread access✓
- bManaged fields are allowed, but only when the job uses Run() instead of Schedule()
- cManaged fields are allowed only inside IJobParallelFor, not IJob
- dUnity converts managed fields to NativeArray automatically at compile time
Explanation:Jobs run on worker threads and must use blittable/unmanaged data so the job system can safely copy and access it without touching the managed GC heap.