Re[5]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 11:31
Оценка:
Здравствуйте, pagid, Вы писали:

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


Да не на экзамене, на семинарах. Мел, доска, матрицы, дифуры, все дела. Не думаю, что доска уже ушла из высшей школы. Возможно, что мел заменили маркеры или интерактивные доски, но всё равно — доски.
Re[6]: Зачем просят перевернуть строку на интервью?
От: T4r4sB Россия  
Дата: 10.10.18 11:48
Оценка: :)
Здравствуйте, 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>


Слишком запутанный код какой-то, преинкременты, постинкременты, не сразу понятна логика.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re: Зачем просят перевернуть строку на интервью?
От: koodeer  
Дата: 10.10.18 11:50
Оценка:
Бегло просмотрел ответы в теме. Большинство провалили тест. Сказано же:

не выделяя новой памяти


Во многих языках/платформах строки иммутабельные. В частности, в Java, .NET, Python... В них нельзя перевернуть строку по месту.

Однако, например, C# может работать с указателями, что позволяет, минуя управляемый код, добиться желаемого.


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

Идём дальше. В юникоде символы могут скомбинированы из двух знаков: сам символ + диакритический знак. При развороте строки, естественно, нужно их учитывать. Это легко сделать, если строка нормализована (выполнена композиция). Но вспоминая условие: не выделяя новой памяти...

Сюда же можно отнести наличие ударений в словах. При побайтовом развороте оно окажется на другой букве.


В общем, переворот строки — очень хороший тест.
Re[3]: Зачем просят перевернуть строку на интервью?
От: LaptevVV Россия  
Дата: 10.10.18 11:54
Оценка:
LVV>>В книге Бентли "Жемчужины программирования" в разделе 2.3 Мощь элементарного на странице 32-33
LVV>>рассматривается этот алгоритм.
LVV>>И приводится удивительно элегантное рекурсивное решение.
Тё>Зачем там рекурсия?
Прошу пардону.
Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 11:58
Оценка: +1
Здравствуйте, koodeer, Вы писали:

K>Бегло просмотрел ответы в теме. Большинство провалили тест.


Дык, эта... Если нет ТЗ, то результат
Как задача поставлена — так она и решена. А постановщик задачи — кто?
Re[7]: Зачем просят перевернуть строку на интервью?
От: Faland США  
Дата: 10.10.18 12:27
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Слишком запутанный код какой-то, преинкременты, постинкременты, не сразу понятна логика.


Это possible implementation для std::reverse с сайтов типа cppreference. Если в код библиотеки заглянуть — там будет что нибудь типа:

    __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag)
    {
      while (true)
    if (__first == __last || __first == --__last)
      return;
    else
      {
        std::iter_swap(__first, __last);
        ++__first;
      }
    }


А так да, согласен, на собеседовании ожидаешь что человек покажет читаемый код, такой чтоб джуниор без комментариев разобрался.
Re[3]: Зачем просят перевернуть строку на интервью?
От: koodeer  
Дата: 10.10.18 12:28
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Дык, эта... Если нет ТЗ, то результат

V_S>Как задача поставлена — так она и решена. А постановщик задачи — кто?

В задании сказано: не выделяя новой памяти. А многие стали предлагать решения, которые не выполняют это условие.

Вполне резонно ожидать от тестируемого, что человек должен иметь представление о внутреннем устройстве строк как минимум. Понимание кодировок — плюс. Представление об умляутах и пр. — большой плюс (но не в каждой области нужно, поэтому незнание в минус не пойдет).
Re[3]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 10.10.18 12:49
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>РашнФелоу, если Вы это не с гугла сейчас утащили, а по памяти- вы 100% ответили на мой коварный вопрос!


В чём коварство?
Re[2]: Зачем просят перевернуть строку на интервью?
От: sergey2b ЮАР  
Дата: 10.10.18 12:50
Оценка:
Здравствуйте, kov_serg, Вы писали:

помоему в сервиси говорят пассажирская и водительская сторона
Re[2]: Зачем просят перевернуть строку на интервью?
От: Masterspline  
Дата: 10.10.18 12:51
Оценка:
del
Отредактировано 10.10.2018 13:12 Ssd13 . Предыдущая версия .
Re[3]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 12:58
Оценка: +1 :)
Здравствуйте, Masterspline,

M> Например, если ты начнешь обменивать символы внутри строки, нужно догадаться дойти только до середины, чтобы не поменять их два раза.


Догадаться?? У программистов с какой-никакой практикой это уже в подкорке сидит, не?
Re[10]: Зачем просят перевернуть строку на интервью?
От: aik Австралия  
Дата: 10.10.18 13:06
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Common!


или "come on"?
Re[2]: Зачем просят перевернуть строку на интервью?
От: Tourist Россия  
Дата: 10.10.18 13:23
Оценка: +1
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, Тёмчик, Вы писали:


ну, если смотреть на машину в лоб, то лево\право как бы меняються, если смотреть с заду на нее. В общем зависит от точки зрения\отсчета. Знания где лево\право может и не помочь.
Re[3]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 10.10.18 13:24
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>без выделения новой строки


и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.
kalsarikännit
Re[3]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 10.10.18 13:29
Оценка: +3 :))
Здравствуйте, Тёмчик, Вы писали:

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


Тё>РашнФелоу, если Вы это не с гугла сейчас утащили, а по памяти- вы 100% ответили на мой коварный вопрос!


Случилось чудо! Друг нашёл друга!

kalsarikännit
Re[2]: Зачем просят перевернуть строку на интервью?
От: Vladek Россия Github
Дата: 10.10.18 13:36
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Тёмчик, Вы писали:


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


N>Просто проверить, что человек может писать код.


Любой дурак может написать код для изолированной технической задачи. Это самая лёгкая часть работы.
Re: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 10.10.18 13:38
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


А теперь усложним задание: Написать функцию на доске, чтобы не выделяя новой памяти инвертировать порядок слов в строке.
Т.е. "один два три" --> "три два один".
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 13:38
Оценка:
Здравствуйте, Vladek, Вы писали:

N>>Просто проверить, что человек может писать код.

V>Любой дурак может написать код для изолированной технической задачи. Это самая лёгкая часть работы.

Не согласен.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 10.10.18 13:41
Оценка: +1
Здравствуйте, Vladek, Вы писали:

N>>Просто проверить, что человек может писать код.


V>Любой дурак может написать код для изолированной технической задачи.


Ты не поверишь...
_____________________
С уважением,
Stanislav V. Zudin
Re[2]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 13:42
Оценка:
Здравствуйте, Stanislav V. Zudin,

SVZ> А теперь усложним задание: ......


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