¿Cuál es el propósito de "!" Y "?" Al final de los nombres de los métodos?

A veces veo métodos en Ruby que tienen "?" y "!" al final de ellos, por ejemplo:

name = "sample_string"
name.reverse
name.reverse!
name.is_binary_data?

Me preguntaba cuál es su propósito. ¿Son solo sintaxis de revestimiento de azúcar?

Respuestas a la pregunta(5)

Su respuesta a la pregunta