For credit card, I have tried this with Bank of America, Chase, and AmEx. For debit card, I tried with Schwab. And in all cases, I checked the currency exchange rate, and it was very close to the spot rate.
Where you do get hammered is by international merchants, who ask if you want to pay in local currency or USD (if you are American I guess). You should always choose to pay in local currency (meaning the merchant requests the payment in local currency from your card), because your credit card issuing bank will give you a much better currency conversion rate than the merchant will.
If you say you want to pay in USD, then the merchant will calculate a USD price that is much higher than the local currency price.
Even the people who claim to offer raw spot market rates (ie. Interactive Brokers), in fact do not offer that. I would not be surprised in Visa & Mastercard do the same--although they claim otherwise.
The rewards are funded by the banks via interest income. 3% cashback cannot be covered by interchange fees, for instance.
VISA/MC do offer the spot rate. But the idea of a spot rate is a little iffy anyway, as it assumes that there’s a counterparty willing to sell/buy at that price, and at the volume you want to transact at. When you’re operating at MC/VISA scale, that isn’t a given, and neither of them are interested in taking on FX risk. So their spot prices will be close, but likely not identical to spot prices you might find at other FX providers. Over the long term though, I would expect any delta to balance out.
A lot of banks do charge a percentage fee on top of Visa/MC's exchange rate, but my bank does not.