What is the difference between the two sentences? 1) すしを食べたことがありますか。 2) もうすしを食べましたか。
「たF＋ことがあります」describes one's experience in his life. The (true) nuance is whether you have done that in your life (thus far). So, normally this sentence pattern is used to describe relatively big experiences.
「もう〜ましたか」is used to ask whether an action is completed or not. And normally it's used for something that happened recently. （２−１◯）もう夕ごはんを食べましたか。 （２−２☓）夕ごはんを食べたことがありますか。
Sentence 2-2 sounds strange because most of us 'have had dinner' in our life. Well, perhaps you might ask this question to a very poor man who looks very skinny, and you wonder whether this person has ever had dinner in his life...
Let's think about the first 2 sentences again. 1) すしを食べたことがありますか。 If you think it's not so common to eat sushi in some situation, then you can ask this question. Perhaps you can ask an African when you are in Africa because sushi is not so common there, for example.
2) もうすしを食べましたか。 When your friend said she will eat sushi for her lunch , you can ask her this question when you meet her after lunch time.
Next time when I meet you, I might ask 「もう昼（夜）ごはんは食べましたか」？
Then please reply in Japanese. You can say 「はい、もう食べました」or 「いいえ、まだ食べていません」.
If you're reading this at night, may you have a good dinner~.