전혀요. 그리고 API를 안 쓰는 걸 알고리즘에 집중한다고 부르는 것도 좀 아니죠.
상황에 따라 다른데, 좀더 어려운 알고리즘 (e.g. maximum subarray)을 물었을 경우, 어떤 API를 써도 될 뿐만 아니라 이름이 생각 안 나면 (예컨대 hash table의 이름이 std::unordered_map 인 게 생각 안 나면) MyHashTable 이라고 해놓고 써도 됩니다.
문자열 뒤집기는 trivial한 알고리즘이라서 좀 애매하죠. 현업에서는 std::reverse를 쓰면 됩니다. 그런데 인터뷰에서 그 알고리즘을 굳이 물어보는 이유는 두 가지겠죠. 첫째, 간단한 알고리즘조차 잘 구현 못하는 지원자가 있어와서 걸러내고 싶어서. 둘째, 이 지원자가 자기가 자신있다고 말한 언어에 어울리는 해결 방식으로 이 간단한 문제를 해결하는지 보고 싶어서.
그래서 이런 경우엔 일반적으로 의도를 물어봐야 합니다. 저라면, C++에 O(n)에 inplace로 뒤집어주는 API가 STL에 있는데 이거를 쓰면 되나, 아니면 직접 구현하기를 요구하는 거냐?
후자라면, 당연히 뒤집어주는 API는 쓰면 안 되죠. 그러나 charAt() 같은 API는 전혀 관계가 없습니다. 테스트를 하는 핵심 부분만 API를 쓰지 않고 구현을 하면 되요. 다만 입력이 array로 주어졌는데 그걸 String으로 만든 다음 charAt을 쓴다면 감점입니다. in-place로 뒤집는 게 가능한데, String으로 만들면 extra O(n) space를 쓰게 되니까요.