This post has a very good overwiew of how open source geocoders works.
1) Address normalization
2) String matching.
It shows a simple case of how interpolation in made, taking as example a street segment that is supposed to contain houses between 300-400, just interpolating the position over the line.
Now my question here if the zip code is specified in the address and the street segment covers more than one zip code? is this consider during the interpolation? and if is, How it's done?