Re: Зачем просят перевернуть строку на интервью?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 10.10.18 09:07
Оценка: +1 :)
Код:

n = strlen(s);
for (i=0; i<n/2; i++)
{
    c = s[i];
    s[i] = s[n-1-i];
    s[n-1-i] = c;
}

Так, что ли?
1613 г. = 2024 г.
Re[4]: Зачем просят перевернуть строку на интервью?
От: Amygdala Россия  
Дата: 10.10.18 09:10
Оценка: +4 :)
Здравствуйте, Vlad_SP, Вы писали:

V_S>Для элегантности же!


Знавал я одного такого любителя элегантности. Тем, кто после него разбирался в коде приходилось сидеть с листочком бумаги и разбираться что он там наэлегантил.
В жопу такую элегантность!!
Re[4]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 09:14
Оценка:
Здравствуйте, De-Bill, Вы писали:

Тё>>Сколько времени нужно, чтобы написать реализацию Array.reverse() из этого примера?


DB>Пару минут должно хватить. Но это уже другая задача. В отличие от строк практически во всех языках нам: 1) известна его длина в элементах, 2) по индексу есть доступ к каждому элементу, 3) массив изменяемый.


Не докапывайтесь к словам. Последовательность символов — не обязательно immutable класс String, это может быть массив, ArrayList и т.д.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 09:17
Оценка: :)
Здравствуйте, RussianFellow, Вы писали:

RF>Код:


RF>
RF>n = strlen(s);
RF>for (i=0; i<n/2; i++)
RF>{
RF>    c = s[i];
RF>    s[i] = s[n-1-i];
RF>    s[n-1-i] = c;
RF>}
RF>

RF>Так, что ли?

РашнФелоу, если Вы это не с гугла сейчас утащили, а по памяти- вы 100% ответили на мой коварный вопрос!
Re[5]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 10.10.18 09:26
Оценка: +3 -2
Тё>Не докапывайтесь к словам. Последовательность символов — не обязательно immutable класс String, это может быть массив, ArrayList и т.д.

Почему не докапываться? Программирование — это такая вещь, где детали имеют значение.
Re[5]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 09:32
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Не докапывайтесь к словам. Последовательность символов — не обязательно immutable класс String, это может быть массив, ArrayList и т.д.


Вот тут нельзя не сказать про достоинства такого языка, как С++:
template<class BidirIt>
void reverse(BidirIt first, BidirIt last)
{
    while ((first != last) && (first != --last)) {
        std::iter_swap(first++, last);
    }
}
Re[6]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 09:33
Оценка: -2 :)
Здравствуйте, De-Bill, Вы писали:

Тё>>Не докапывайтесь к словам. Последовательность символов — не обязательно immutable класс String, это может быть массив, ArrayList и т.д.


DB>Почему не докапываться? Программирование — это такая вещь, где детали имеют значение.


А почему Вы не спросили, в чём строка? Я уже пару минусов бы Вам влепил на собеседовании- за отсутствие этого вопроса и за попытку избежать ответа на мою задачу. Подходящий кандидат сполуслова бы понял и не дал договорить- накидал ответ на доске.
Re: Зачем просят перевернуть строку на интервью?
От: white_znake  
Дата: 10.10.18 09:35
Оценка: +4
Здравствуйте, Тёмчик, Вы писали:

Тё>и сколько времени можно на это потратить у доски?


Тё>Условие было такое: строка «один два три». Написать функцию на доске, чтобы поменять порядок символов внутри этой строки, не выделяя новой памяти (кроме временных переменных). Принимается ли решение через 15 минут?


Проверка, что ты не идиот.
Re[7]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 10.10.18 09:37
Оценка: +3
Тё>А почему Вы не спросили, в чём строка? Я уже пару минусов бы Вам влепил на собеседовании- за отсутствие этого вопроса и за попытку избежать ответа на мою задачу. Подходящий кандидат сполуслова бы понял и не дал договорить- накидал ответ на доске.

А с какого перепугу ты решил, что я пошёл бы к тебе на собеседование? Ну и если у вас в конторе ценится умение понимать с полуслова, не давать договорить и начинать сходу набрасывать, то вообще от вас подальше держаться надо.
Отредактировано 10.10.2018 9:38 De-Bill . Предыдущая версия .
Re[6]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 09:42
Оценка: -1
Здравствуйте, Nuzhny, Вы писали:

N>Вот тут нельзя не сказать про достоинства такого языка, как С++:

N>
N>template<class BidirIt>
N>void reverse(BidirIt first, BidirIt last)
N>{
N>    while ((first != last) && (first != --last)) {
N>        std::iter_swap(first++, last);
N>    }
N>}
N>


Второе сравнение с —-last- это bad practice. Некрасивый трудночитаемый код.

Напишите теперь переворот односвязного списка. И без стандартных функций пожалуйста, всё ручками.
Re[7]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 09:48
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Второе сравнение с —-last- это bad practice. Некрасивый трудночитаемый код.

Не для библиотечного кода, который характеризуется оптимальностью, а не читабельностью. Там даже комментарии не обязательны. А функция явно библиотечная, код красивый.

Тё>Напишите теперь переворот односвязного списка.

Напиши сперва реализацию односвязного списка, а я уже переверну.

Тё>И без стандартных функций пожалуйста, всё ручками.

Типа std::swap нельзя использовать? Вот это будет уже по-настоящему некрасивый код. Ты точно понимаешь задачу "реализовать такую-то функцию"? Это означает именно что реализовать функцию, её логику, а не весь стек абстракций, которые лежат внутри.
Re: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 10.10.18 10:01
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>и сколько времени можно на это потратить у доски?


Тё>Условие было такое: строка «один два три». Написать функцию на доске, чтобы поменять порядок символов внутри этой строки, не выделяя новой памяти (кроме временных переменных). Принимается ли решение через 15 минут?


Что хочется узнать о кандидате? Что он может реализовать алгоритм переворота любой строки, что знает стандартную функцию для этого (если она есть в заданном языке), что знает отличие UTF-8 от других кодировок, что предпочитает решать частный случай, а не общий (если строка "один два три" и никакой другой не будет, то решение будет s = "ирт авд нидо"; , а лучше пару констант для этого сделать) или же это подготовка к тому, что бы поговорить об алгоритмической сложности?
Отредактировано 10.10.2018 10:12 AleksandrN . Предыдущая версия .
Re[8]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 10:07
Оценка: -2 :)
Здравствуйте, Nuzhny, Вы писали:

Тё>>Второе сравнение с —-last- это bad practice. Некрасивый трудночитаемый код.

N>Не для библиотечного кода, который характеризуется оптимальностью, а не читабельностью. Там даже комментарии не обязательны. А функция явно библиотечная, код красивый.
Комментарии там излишни, а 2 сравнения ==last и ==-last внутри одного условия уменьшают читабельность.

Тё>>Напишите теперь переворот односвязного списка.

N>Напиши сперва реализацию односвязного списка, а я уже переверну.


class Node {
public:
char *value;
Node *next;
}

Node* reverse(Node *head) {
...
}


Тё>>И без стандартных функций пожалуйста, всё ручками.

N>Типа std::swap нельзя использовать? Вот это будет уже по-настоящему некрасивый код. Ты точно понимаешь задачу "реализовать такую-то функцию"? Это означает именно что реализовать функцию, её логику, а не весь стек абстракций, которые лежат внутри.
Там не нужен итератор, это твоя профессиональная деформация от C++ сказывается. Целочисленного индекса по массиву более, чем достаточно.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 10:14
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>

Тё>class Node {
Тё>public:
Тё>char *value;
Тё>Node *next;
Тё>}

Тё>Node* reverse(Node *head) {
Тё>...
Тё>}

Тё>


Common!


Тё>Там не нужен итератор, это твоя профессиональная деформация от C++ сказывается. Целочисленного индекса по массиву более, чем достаточно.


По какому массиву? Ты же сам сказал, что может быть всё что угодно. К тому же в случае с С-строкой итератор вырождается в обычный указатель, никакого оверхеда. Тут наоборот есть вероятность, что индекса может не быть либо он будет O(n). Твой подход с индексами — отстой.
Если же хочется скорости на х86, то надо смотреть на что-то типа _mm_shuffle_epi8.
Re: Зачем просят перевернуть строку на интервью?
От: koenig  
Дата: 10.10.18 10:38
Оценка: :))) :))) :))) :))) :)))

Зачем просят перевернуть строку на интервью?


прошлый соискатель её перевернул, психанул и ушел с интервью
надо просто вернуть её на место
Re: Зачем просят перевернуть строку на интервью?
От: mmu  
Дата: 10.10.18 10:41
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>и сколько времени можно на это потратить у доски?


Тё>Условие было такое: строка «один два три». Написать функцию на доске, чтобы поменять порядок символов внутри этой строки, не выделяя новой памяти (кроме временных переменных). Принимается ли решение через 15 минут?


Как способ начать разговор.
Если решение есть в голове, то 10 минут. На доске неудобно писать.
Re[2]: Зачем просят перевернуть строку на интервью?
От: viellsky  
Дата: 10.10.18 10:49
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>

_>— Ну «садись»? А то перед тобой тут был один. Рассказывал мне, чем отличается сесть от присесть. Я его на хуй послал. А по телефону говорил, что не долбоёб. Или это ты говорил?
_>— Может, и я. Почему-то часто спрашивают.


У нас принято говорить о кандидатах "Адекватный" — одно из важнейших качеств. Вообще говоря, если программист умный, адекватный, в меру энергичный — то пофиг на его бэкграунд. Так что история про слесаря — очень в точку.
Re: Зачем просят перевернуть строку на интервью?
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 10.10.18 10:57
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Идиотен тест. Как у немцев после отъема прав.
Если 15 минут не хватает, можно смело заканчивать
Re[3]: Зачем просят перевернуть строку на интервью?
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 10.10.18 10:59
Оценка:
Здравствуйте, Transformerrr, Вы писали:

T>Бывает так,что человек может писать код, но не у доски. Со всякими collaborate тулзами то же самое.

А с коллегами он потом также код писать не сможет?
Не верю.
Re[4]: Зачем просят перевернуть строку на интервью?
От: pagid Россия  
Дата: 10.10.18 11:24
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>У доски в школе учат отвечать и писать на ней,

Увы, увы...

N>в вузе тоже.

Не помню чтобы в ВУЗе отвечал у доски, а это уже давненько было, вот лет за 25 до меня, говорят таки да, ответ на экзамен готовили на доске и потом отвечали как на школьном экзамене/уроке. Мы готовились на листочке бумаги, садились рядом с преподавателем и отвечали на вопросы билета и показывали решение задач если они были в билете преподавателю лично.

Но это так, лирическое отступление, в чем проблема написания в маленького кусочка кода на доске
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.