Julia 0.6, 1013 bytes
So readable, and fairly short. max. applies the max function element wise to it's arguments. a' is the transpose of a. Normally I would define a function as f(a)=max.(a,a')max but after perusing other answers it seems common to use the header and footer in TIOelementwise to avoid function definition overheadit's arugments.
maxa->max.(a,a')