To count how many interests user has in common with others:
SELECT u2.name, count(*)
FROM interests AS i1
JOIN users AS u1
ON u1.user_id = i1.user_id
JOIN interests AS i2
ON i1.tag_id = i2.tag_id
JOIN users AS u2
ON u2.user_id = i2.user_id
AND u1.user_id <> u2.user_id
JOIN tags AS t
ON i1.tag_id = t.tag_id
WHERE u1.name = 'John'
GROUP BY u2.name;
http://sqlfiddle.com/#!2/80aad/1
As for the schema, the junction table would make more sense if it would be named users_tags. Also the id column on interests is not needed in this schema, the combination (user_id, tag_id) is a natural candidate for a primary key and you're gonna need to put UNIQUE index on it anyway.