Что такое опционал и какие проблемы он призван решать?
Суть
Optional<Wrapped> — enum с двумя case: .none и .some(Wrapped). Запись String? — сахар для Optional<String>, а nil — литерал для .none. String и String? — разные типы: компилятор не даст использовать опционал там, где нужно значение, пока его не распакуют.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep