まず疑問文の大前提ですが「知りたいことを文頭に出す」「主語と述語の順番を変えたくない」「時制を表す語が主語の前に移動して疑問文をつくる」とこの2つ覚えてください。
その上で説明しますね。
英語は平叙文は「主語+時制を表す語+述語(意味を持つ内容)」という順番に並べていきます。
たとえば、Tom did eat a banana.(主語はTom, 時制を表す語は did, 述語は eat a banana)となります。
でも、時制を表す語 did(do/does)は動詞が大好きなのでくっついちゃって、Tom ate a banana. となります。
好きじゃないときは not が登場してate(did+eat) の間に割り込んで、ate を分割して, Tom did not eat a banana. となりますが、notは時制を表す語 did と浮気して Tom didn't eat a banana. となります。
さて、好きか好きでないかは、did か didn't なので、「知りたいことを文頭に出す」ことで、疑問文をつくってみましょう。
Did or didn't Tom eat a banana? (?を忘れないでね) 日本語も同じで「ですか?ですでないですか?」なんてわざわざと聞かないように
Did Tom eat a banana? といって, or didn't をとってもわかりますね。
ここでよく見てください。
Tom 主語 と eat a banana 述語 の順番は変わっていませんね。(重要)
では、本題。
Tom ate a banana. から 「誰が」を疑問詞を使って疑問文を作ってみましょう。主語を知りたい時は who, 目的語を知りたいとき( 誰を(誰に)は whom(口語ではwho)、誰のモノかを知りたい時はwhose ですね。今回、「誰が」だから、Tom を who に変えてみます。
Who ate a banana? よく見てください。知りたい語 who が文頭にきていますね。しかも who は主語をしているので、主語と述語(eat a nanana) の順番は入れ替わっていませんね。who が主語の位置にありyes か no を知りたいわけではないので、ateのなかの「時制を表す語」はそのまま動詞(の原形)とくっついたままなんです。
Tomは何を食べましたか?をプロセスを含めてつくってみましょう。
Tom ate a banana. --> (Tom did eat a banana.) --> (Tom did eat what.)-->聞きたいa banana の代わりを whatにして、文頭に出して What Tom ateとします。でもこれだと「トムが食べたもの」と文にはなって疑問文ではないので、「時制を表す語が主語の前に移動して疑問文をつくる」ります、what の次が did(or didn't) ですね。好奇心旺盛なこの(過去)時制を表すdid が知りたくてWho(直後)に行ってしまいます。その結果、What did Tom eat? ができました。