Yes, both are interchangeable in most cases only if "제일" is used as an adverb in a sentence, and "가장(adverb)" is native Korean while "제일" is Sino-Korean meaning "제일" is a bit more formal.
Also, we've got "최고" for the meaning of "best"
"favorite" can mean "좋아하는 것" or "좋아하는 사람" as a noun.
\^o^/