So I checked some exchange site's token's address of mine, I find that all erc20 token's address are all the same ethereum address.
How is this possible? Same address per each user, then how we know specific tokens are deposited?
When someone transfers a specific token to you... an entry is made via that Token's "Smart Contract" that essentially says "Transfer control of X.XX amount of YYY Token from AddressA to AddressB". So, the details are kept within the smart contract for the specific token.
You could theoretically have a different ETH address for each token if you wanted, but then you'd need to have an ETH balance on each one to be able to move the tokens out. So, for convenience, most wallets just use the single ETH address as the deposit address for all ERC20 tokens.