Что такое палиндром
Что проверяют
Задача разминочная, поэтому смотрят не на определение, а на то, как вы пишете простую функцию: нормализация входа, аллокации, граничные случаи и понимание того, что char в C# это не символ.
Как отвечать
Палиндром читается одинаково в обе стороны. Обычно просят учитывать только буквы и цифры и игнорировать регистр.
Разворачивать строку не нужно: два индекса с краёв дают ответ за O(n) по времени и O(1) по дополнительной памяти.
static bool IsPalindrome(string s)
{
int i = 0, j = s.Length - 1;
while (i < j)
{
if (!char.IsLetterOrDigit(s[i])) { i++; continue; }
if (!char.IsLetterOrDigit(s[j])) { j--; continue; }
if (char.ToLowerInvariant(s[i]) != char.ToLowerInvariant(s[j])) return false;
i++;
j--;
}
return true;
}Граничные случаи стоит проговорить вслух: пустая строка и строка из одного знака это палиндром, строка из одних знаков препинания тоже, null отсекается заранее.
Если попросят развить: проверка числа без перевода в строку через разворот половины, проверка связного списка за один проход, палиндром с разрешением удалить один символ. Это типичные продолжения задачи.
Где спотыкаются
Разворачивают строку и сравнивают её с исходной. Ответ верный, но это лишние аллокации массива и строки там, где ожидают решение без дополнительной памяти.
Заявляют, что чистят знаки препинания, а в коде убирают только пробелы. Расхождение слов и кода замечают всегда, и дальше разговор идёт уже не про алгоритм.
Приводят регистр без инвариантной культуры. Правила приведения зависят от локали, и код, зелёный на машине разработчика, ведёт себя иначе на сервере с другими настройками. По той же причине посимвольный разворот неверен для суррогатных пар и составных символов: элемент строки это кодовая единица UTF-16, а не символ целиком.