Short answer
Idiomatic and fastest is new StringBuilder(s).reverse().toString().
Explanation
For an interview showing you understand the mechanics, use a char array with two pointers swapping ends inward: O(n) time, O(n) space for the array, O(1) extra beyond it. Recursion is elegant but risks StackOverflow on very long strings and uses O(n) stack. Strings are immutable so you always build a new one; there is no true in-place reverse of a String.
Common mistakes
- Reversing with string concatenation in a loop.
- Forgetting surrogate pairs and emoji.