Chop fish or shrimp into 1/2-inch pieces. Place in a glass or stainless-steel bowl. Add citrus juice and toss until evenly coated. Cover and refrigerate until the fish is opaque and "cooked" through, about 4 hours (if using cooked shrimp, omit this step).
Drain off and discard excess citrus juice. Add onion, carrots, tomatoes, jalapeños, and cilantro and toss until evenly coated. Season to taste with salt and more fresh citrus juice if desired.
Serve on tostadas or with tortilla chips or saltine crackers, passing mayonnaise, hot sauce, and sliced avocado separately. Or, divide ceviche among small clear-glass bowls, wineglasses, or martini glasses.
Most of the heat from jalapeños comes from the seeds and white membrane. Scrape those out for less heat; add them in for more heat!