In terms of an absolute basic concept, the routing is similar. Generally a URI is mapped to a controller task (referring to apps with an MVC pattern) which handles a request. How that routing data is stored though is generally dependent on the routing architecture in use. With the Joomla CMS, HEF URLs are mapped to the menu database table and has the mapping patterns mentioned above (the default URLs honestly don't need the menu table because each of the parameters is specified in the query string). I'm fairly sure WordPress behaves similarly.
Symfony ultimately does something similar in terms of storing the routing data into the filesystem by default. Using the Symfony Standard distro, you'll find a UrlMatcher object in the application's compiled cache which is a single file which was compiled from all of the route mapping sources that is used to process the routing step. In general it's a much more complex routing system though (for example it supports things like defined defaults in the routing definition itself and uses named routes in its collection so your routing is a call to $router->generate('route_name', array('id' => 1)); compared to passing a non-SEF URI into JRoute::_()).