This is biblatex
's punctuation tracker, which is supposed to avoid undesirable double punctuation, at work. Normally that feature avoids punctuation clashes caused by field values and biblatex
-generated punctuation doubling up.
Here it could be argued that the feature goes to far, especially because the quotation marks provide a visual barrier that separates the double punctuation.
Solution one would be to 'hide' the question mark from biblatex
's punctuation tracker. Either directly in the .bib
entry with \@
after the ?
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?\@},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}

or globally in all title
fields that are wrapped in quotation marks with suitable redefinitions of the field format that add the \@
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
%\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\@}}
%\DeclareFieldFormat
% [suppbook,suppcollection,suppperiodical]
% {title}{#1\@}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}

Another solution would be to generally allow question marks and exclamation marks to be followed by a period. But this may lead to undesirable punctuation clashes in situations where there are no quotation marks or where they are not desired for other reasons. (For more on \DeclarePunctuationPairs
see Biblatex punctuation recognition)
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\DeclarePunctuationPairs{period}{.?!}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}
See also the recent Capital letter after title of incollection item ending in question mark using biblatex' ieee-style.