You do not control the private keys of the wallet in exchanges and they can be attacked or hacked just like what happened to bitfinex. In those cases, you cannot protect your bitcoin. That is why it is not advised to leave your bitcoins on exchanges for a long time.
Will it two factor authentication is also will let the bitcoin screw by the hackers?
I was having many time my fund in the localbitcoins wallet none of the coins has been looted by any hackers at anytime. May once in the moon we may get hacked, even big IT firms are also been hacked by the bitcoin user recently.