A push-pull output actively drives both logic levels: a high-side transistor connects the pin to VDD for a logic 1 and a low-side transistor connects it to GND for a logic 0. It gives strong, fast edges and is the default for LEDs and normal point-to-point signals, but two push-pull outputs on the same wire can fight (one driving high, one low) and short VDD to GND. An open-drain output has only the low-side transistor: it can pull the pin to GND (logic 0) or release it to a high-impedance state, and the high level is provided by an external or internal pull-up resistor. Because no open-drain device ever drives high, many of them can share one line safely, whoever pulls low wins, giving a wired-AND. That's exactly why I²C uses open-drain on SDA/SCL: multiple devices share the bus, and open-drain plus a pull-up lets any device assert the line without risk of a short. So: push-pull for strong single-driver signals, open-drain for shared/multi-driver lines.
Embedded Systems Fundamentals · Interview question
What's the difference between push-pull and open-drain outputs?
A strong answer
What a weak answer sounds like
You know the answer. Do you know what gets you dinged?
Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.
From the lesson
GPIO: Digital I/O
Reading buttons and driving LEDs: configuring a pin's direction, push-pull vs open-drain outputs, pull-up/down inputs, and why a floating input reads noise.