3D terrain with 2D noise function as heightmap is kind of 'easy'. Make a plane and adjust height based on the noise.
How would one start working on 3D terrain with overhangs/caves?
There are some older topics (for example related to Minecraft) on the thema, but non of them cover overhangs and in general techniques that can be applied to heightmap generated terrain.