When a new node connects to the network, other nodes start to share new transactions with this new node they got. But do they share their mempool, when a node disconnects from the network for some time for example? I think that the mempool size is too large and it would be difficult to share their mempool state, but maybe I'm wrong...
No, the mempool is locally on each node and is not shared. A node (or better said the node operator) can decide for itself which transactions to pull from the global mempool and include in the local mempool, it can be configured on the node which transactions should be considered for a new block creating and on which criteria (thresholds) based upon.