How can render overlapped object's edge freestyle line?
This isn't possible (as far as I know) using freestyle. However, it is possible to fake the effect in the Compositor by looking for sharp changes to the rendered Normal and/or Depth.
To achieve this, we need to compare each point in the render with a neighboring point and highlight those areas where the Normal or the Depth varies by a significant amount between those points. This can be acieved with a node group as follows :

Here we take the Depth and Normal as inputs and translate each by a specified X and Y (multiplied by the desired Thickness) - this allows the current pixel to be compared with a neighbouring pixel.
For the Normal, the RGB Subtract node compares them and the result is separated into its components and its overall magnitude calculated (as 'sqrt(r^2+g^2+b^2)'). If the result is greater than a Threshold we have found an edge.
Similarly, the Depth is subtracted from its neighbour and the Absolute result compared with a second Threshold. The two results are combined using the Maximum.
In order to avoid artifacts from features in particular directions, we can sample neighbouring pixels in different directions. This can be achieved with multiple node groups with different X and Y offsets - one above, one below, one to the left and one to the right (ie, (0,1), (0,-1), (-1,0), (1,0)) and the results combined as follows :

This can produce the following results (after tweaking the line thickness and thresholds) :