From [the `/questions` doc][1]:

> ...use the tagged parameter with **a semi-colon delimited** list of tags. This is an and contraint(sic), **passing tagged=c;java** will return only those questions **with both tags**...

<sup>(Emphasis added)</sup>

If you want questions that have *either* tag, use [the `/search` route][2] (or `/search/advanced`).

As for why the API sometimes differs from the website search, that has been asked a few times both here and elsewhere.  For example, see https://stackapps.com/questions/4459/why-is-there-a-difference-between-questions-and-search-in-api.


  [1]: https://api.stackexchange.com/docs/questions
  [2]: https://api.stackexchange.com/docs/search