Programming microcontroller via UART
A few micro's have a uart bootloader rom from the factory.
mid range STM8's for example.

Others can have a bootloader programmed into flash. Arduinos come with Optiboot put into the flash by the pcb assembler (not Atmel).

To have a bootloader requires in-system self-programmability. It helps if it can execute code from ram, but this is not needed (PIC). Some micros (e.g AVR) have code protect arrangements specifically to protect a bootloader area of flash.

It might be useful for people to note micros that have a factory bootloader in the comments below as it is a useful feature manufacturers sometimes hide on page 570