A view stores a query definition, while a table stores the query's result. Choose a view when a lightweight transformation should read current parents. Choose a table when repeated downstream use justifies rebuilding and storing the result.
Those choices affect execution, but they must not change the business meaning of the rows.
An ephemeral model has no standalone warehouse relation. dbt inlines it as a common table expression in its consumers. That can keep a small helper out of the physical schema, though repeated consumers may repeat its work. You still refer to it with ref.
In these exercises, inspect Compile as well as Results. A model that returns the right rows with the wrong materialization misses the operational requirement, so both the data and the configuration are checked.