Implement a custom hash table from scratch, explaining your strategy for handling collisions and resizing.