Что произойдет при замене местами операндов в условии if, если один из них константа?
Что проверяют
Понимаете ли, зачем в коде встречается константа слева, и различаете ли случаи, где перестановка меняет только стиль, от случаев, где она меняет поведение.
Как отвечать
Для примитивов сравнение симметрично: a > 5 и 5 < a эквивалентны, a == 5 и 5 == a тоже, байткод получается одинаковый, на скорость это не влияет никак.
Привычка ставить константу первой пришла из C, где if (x = 5) компилируется и молча ломает логику, а if (5 = x) не собирается. В Java такой защиты не нужно: условие обязано быть булевым, и if (x = 5) для int просто не скомпилируется. Единственная щель это булево поле, if (flag = true) компилируется и выполняет присваивание.
А вот где перестановка действительно важна, это вызов метода на константе:
if (status.equals("NEW")) // NullPointerException, если status равен null
if ("NEW".equals(status)) // false, без паденияТот же приём работает с константами перечисления. Современная альтернатива это Objects.equals(a, b), она безопасна в обе стороны и читается лучше. И отдельно стоит сказать про && и ||: там порядок операндов часть логики, потому что вычисление идёт слева направо и правая часть может вообще не выполниться.
Где спотыкаются
Отвечают «ничего не изменится» и на этом останавливаются, не вспомнив про сравнение строк, где перестановка снимает целый класс падений.
Второе: тащат мотивацию из C и расставляют константы слева повсеместно «чтобы не перепутать присваивание со сравнением». В Java компилятор ловит это сам везде, кроме булевых переменных, а читаемость страдает заметно.
Третье: переставляют операнды там, где важен порядок вычисления. Условие it.hasNext() && it.next() > 0 после перестановки сломается, потому что защита должна стоять первой. То же с выражениями, у которых есть побочный эффект: Java вычисляет операнды строго слева направо, и обмен местами меняет последовательность действий, а не только запись.