If your List elements are of type String, it should be
String s = list.stream().collect(Collectors.joining("?,"));
but then, the last element is missing "?," so if you also need the question mark after the last element, you end up with
String s = list.stream().collect(Collectors.joining("?,")).concat("?,");
In general, if you have multiple appends/concatenations to a String, it's way more performant to use a StringBuffer or StringBuilder (String is an immutable Object).
If the list elements are of a different type than String, you have to map your object to a String representation, like
String s = list.stream().map(listElement -> <<some code that returns a String representation of the element>>)).collect(Collectors.joining("?,")).concat("?,");