2.) Everyone here focus on teamwork, but I would add a bit opposite one too: ability to work independently for non trivial length of time.
Meaning: stays working and motivated without needing manager with all those sticks and carrots. Able to keep module clean without needing others to review it. Able to make decisions - whether architectural or time vs feature set ones or how to prioritize. We often socialize juniors to be completely dependent on elders giving them pretty much zero autonomy. They are smart and all that, but then fail the moment there is a lot work to do, detailed supervision is not available and they suddenly needs to make own decisions.
3.) Willingness to listen to other peoples ideas and thinking about them. Ability to distinguish between "bad code" and "different then what I would do". Seriously.