Generally you want to reduce any initial friction, especially in B2C apps. So you ask for as little as possible at the start and make sure the user gets to experience the core value as quickly as possible.
Said that, there's one important consideration. Sometimes you need a bit of extra information at the start to deliver great value and experience. For example, you might ask a user for a topic of interest to hit him/her with highly relevant content. Without that, the user might not be sufficiently rewarded at the start and consequently might not invest more of his/her effort.
If you think that this is your case consider two options. First, think what minimum information would suffice and what's the easiest way to get it. Perhaps a single topic of interest will be enough to start with. Or perhaps instead of asking about food preferences you could use user's current position (which is easier to get) to tailor search results. Second, you might want to split your process into two steps. The goal of the first step is solely to minimize the friction, so you ask for email and password. After that the user is on board and has invested a bit, which is very important, he/she will be a bit more willing to answer one extra question. Now the goal of the second step is to get this extra bit of information. Make it fun and easy is possible, try to avoid forms. For example, show clickable topic cards, pics of food, etc. whatever your case is. But above all give a short, clear explanation or a hint as to why you're asking for this and what benefit the user can expect in return.