Does using composite keys violate 2NF?
Your definition of 2NF is not quite correct.  

2NF is when a relation is in 1NF and it has no partial dependencies, meaning there are no predicates (columns) that depend on only part of a multi-part key.

What that means is that a table where all the (one or more) keys are single column ones cannot violate 2NF by definition.  However, it's also possible to have a table with a multi column (composite) key which also doesn't violate 2NF.  It's not about how many columns are in your key, its about whether there are non-key columns which depend on only part of any candidate key.

Since it's possible for a table to have a multi column key be in 2NF, it's also possible for a table with a multi column key to be in 3NF.  You just have to make sure there are no transitive dependencies as well.