The person who mentioned the &$^$^#% Fours, is so right! LOL. I have a 4 yo and this is what they do, totally normal. We don't use punishment. What I do is try to keep my cool and establish the boundary. They are testing the boundaries, that's what they should be doing. It's our job to make reasonable boundaries.
One thing that works pretty well to get kids to go along with requests is to phrase differently. Firstly make sure you are not asking them to do something you are insisting they do. If you end the request with "ok" you are actually allowing for a No answer or if you ask "Will you do x?" it is reasonable for him to think he has a choice. It can help to tell them what they "may" do. "You may sit down at the table now." Specific and not a question. Another thing that can help is starting to do whatever it is. You want the coat on, rather than asking him to put on his coat, or come over to get his coat on (response, "No") go to the child and hold out the arm of the coat. He will be much more likely to put his arm in. Or hand him a toy to put away, "Here's x, you may put it in that basket." These things don't work all the time but they work A LOT better for DD than asking her to clean up, etc. And with DD if I ask without urgency it works a lot better. If they know you are really uptight about something they are much more apt to dig in their heels.
The thing with taking away priviledges, is it can backfire. Sometimes the kids will see the punishment as payment, so ok I will continue to say no and be defiant, and then pay the debt with the punishment. Or the need to do whatever the behavior is now, is way more important to him that what you are going to take away. Also at this age they are very in the moment so saying they can't watch tv before bed or whatever bc they misbehaved in preschool, is very vague and in the future to them. They often need more immediate consequences. He's throwing a toy, toy is removed until he can use it safely. He's being rude? You are not going to engage in the discussion until he can be polite. So if you keep escalating the punishment, then you know that that technique is not really working to change the behavior.
I also think that at this age there is still a lot of prevention necessary. Is he misbehaving at preschool bc he isn't well rested, didn't have a protein breakfast, it is too much chaos there? If so, punishing him after the fact is kinda' pointless. Is he refusing to pick up his toys bc there is a giant chaotic mess of toys in the playroom? Well, that is too much for him. Is he being demanding and rude bc he hasn't been outside to run around all day? He needs a good motor break.
With the rudeness, I rephrase. "You'd like a glass of water please?" If DD doesn't change her tune with that and continues demanding rudely, I remind her that that is rude, and she needs to ask politely. We have a lot of whining, and with that I ask her to rephrase in her normal voice. And make sure you and your husband are modeling the correct behavior when you talk to him and each other. Sometimes I find that my requests to DD are demands, so it is no wonder she is demanding to me. If you are ordering him to clean up, get in the car, whatever, he will parrot it right back when he wants something.
So yes, he is totally normal, it is the age. But that doesn't mean that you should just sit there and take it. :)
A great book for dealing with kids of all ages is "How to Talk so Kids Will Listen." You may want to check that out.