This article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
2-choice hashing is very similar to cuckoo hashing.
As far as I can tell, the only difference is in what happens during insertion when the two hash functions lead to two full buckets.
When both buckets are full, cuckoo hashing forces the new item into one of the buckets, pushing out some other item, then it forces that item into its other possible location, which if that bucket is full pushes out some other item, and so on. Usually cuckoo eventually finds some non-full bucket. When cuckoo doesn't eventually find a non-full bucket -- i.e., all of those buckets are full and cuckoo finds a loop -- cuckoo is forced to re-size the hash table or pick a new universal hash function or (as in most implementations) both.
When both buckets are full, 2-choice hashing (with fixed maximum-size buckets) immediately re-sizes the hash table or picks a new universal hash function or (as in most implementations) both.
As far as I can tell, in every other situation -- key lookups, key deletion, key insertion where at least one of the buckets is not yet full, key insertion where both buckets are full *and* cuckoo would find a loop, etc. -- both algorithms do exactly the same thing.