After the DJB style functions, FNV is probably the second most common hash function. There doesn't appear to be anything inherently special about it other than being simple. A larger (non-prime) multiplier improves avalanching, so the claims of their complicated prime multiplier being especially effective seem inflated. The number of references to FNV as a fast hash function also seem to have no correlation with reality.
finline u32 fastcall FNV( const u8 *key, u32 len, u32 seed ) {
u32 hash = 0x811C9DC5 + seed + len;
for ( ; len & ~1; len -= 2, key += 2 )
hash = ( ( ( hash * 16777619 ) ^ key[0] ) * 16777619 ) ^ key[1];
if ( len & 1 )
hash = ( hash * 16777619 ) ^ key[0];
return hash;
}