Start here. This is the direct spoken answer to practice first.
Why this question matters
Uploads combine untrusted size, large buffers, parsing, storage, and cleanup. That makes them a strong test of practical memory design.
I would inspect whether the upload path reads entire files into memory, stores byte arrays after processing, or keeps temporary buffers in a cache or queue. I would check request size limits, concurrency, and whether streams are disposed. If the file can be processed in chunks, I would stream it to storage or through the parser instead of keeping it all in memory. Then I would confirm with memory metrics during repeated large uploads.