Можно ли получить пятый элемент в LinkedList за константное время
Что проверяют
Отличаете ли вы число операций от асимптотики. Индекс в вопросе фиксированный, и это ловушка: правильный ответ «да, за константное время», а не заученное «связный список всегда линейный».
Как отвечать
Пятый элемент достаётся за константное время: сколько бы элементов ни лежало в списке, переходов по ссылкам будет не больше пяти. Эта величина от размера не зависит, значит сложность константная.
Линейной операция становится, когда индекс растёт вместе с размером: получение i-го элемента для произвольного i это уже линейная сложность, потому что обход начинается с края. В реализации из стандартной библиотеки есть мелкая оптимизация: обход идёт с ближайшего конца, поэтому последние элементы достаются так же быстро, как первые, но на асимптотику это не влияет.
Сильный ответ добавляет про константу под асимптотикой. Узлы разбросаны по куче, каждый переход по ссылке это промах кэша процессора, плюс отдельный объект на каждый элемент с накладными расходами на заголовок и ссылки. Поэтому в Android, где память и сборка мусора дороги, связный список почти всегда проигрывает массиву. Он оправдан там, где позиция уже известна: вставка и удаление через итератор, очередь, дек.
Где спотыкаются
Отвечают заученным «у связного списка линейный доступ», не заметив в вопросе конкретное число. Пять переходов остаются пятью переходами и при десяти элементах, и при миллионе.
Второе: верят, что вставка в середину связного списка дешевле, чем в массив. Сама вставка да, но поиск позиции линеен, а сдвиг в массиве делается нативным копированием памяти и на реальных размерах выигрывает.
Третье: обходят список циклом по индексу с получением элемента внутри. Каждый вызов заново идёт от края, и обход превращается в квадрат. Нужен итератор или цикл по элементам, который его и использует.