http://changelog.ca/log/2013/08/09/software_engineer_title_ladderA senior software engineer is capable of being given a high level (and often vague) task, and work completely independently on it and finish it.
Typically, a senior software engineer can be trusted to work independently to solve most problems.
An intermediate software engineers is a software engineer who can work on and complete a small well-defined task (but doesn't yet have the skills and experience to be a senior software engineer).
The title junior software engineer generally signifies that either:
the software engineer's skill level is still unknown or
that it is known and the software engineer needs a lot of hand holding (from other software engineers) to complete any non-trivial amount of work.