Either go bruisers/tanks that can output the same damage as assassins while being harder to kill in the early phase, or just stall to late game when you can shove the lane harder. An assassin who never gets fed is an assassin not accomplishing their goal of snowballing. Anything that can survive, zone, or flat out snowball them counters. Mid-late game all their impact comes from players mispositioning and getting picked off either splitting, facechecking, or after all your peelers used cooldowns on other targets in a teamfight.
For zed in particular,
is really difficult for zed since the moment zed throws out his shadow you can just E to dodge all his damage then all-in him or run away. You also can go untargetable with E to completely prevent zed's ultimate from marking you.
's ultimate is like a 2nd hourglass in the matchup, additionally if zed dives into your team to try and make a pick you CC lock him with point and click R / W root.
is way stronger than zed early on and can snowball off him, and if zed ults talon can counter it with his ult by going invis to deny the passive auto, and potentially dodge his Qs.
Anything with

Mages and marksmen struggle vs. zed, so avoid picking them into the matchup if you can. They can rush hourglass but typically zed can cover his weakness of being zoned off farm by attacking your mana pool (making you poke him until you run oom and can't trade back) and last hitting with Q, as well as going all-in before you have items or tools to keep you alive. Another factor is the jungler, if you're an immobile mage against a zed the enemy jungler is going to pin you to the ground to get both of them ahead for easy picks and snowball.