DispatchGroup
Суть
DispatchGroup — счётчик незавершённых задач в GCD. Вы «входите» в группу перед запуском работы и «выходите» по её завершении; когда счётчик обнуляется, группа уведомляет вас. Задачи могут жить на любых очередях и быть асинхронными — группе важен только баланс enter()/leave().
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep