Re: Зачем просят перевернуть строку на интервью?
От: kov_serg Россия  
Дата: 10.10.18 08:17
Оценка: 2 (1) +1 :))) :))) :))) :))) :)
Здравствуйте, Тёмчик, Вы писали:

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

Видимо есть причины.
https://www.yaplakal.com/forum7/topic1825236.html

— Здравствуйте!
— Да, привет. Заходи.
— Я на собеседование…
— Подними правую руку.
— Что?
— Руку правую подними.

Я замялся и неуверенно поднял правую руку вверх.
— Отлично! — сказал мужчина.

Я опустил руку.

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

— Вот сейчас передо мной лежит претензия от клиента. Хорошего клиента, денежного. Он жаловался на гул во время езды. Мы нашли причину, заказали подшипник, четыре дня этот подшипник к нам ехал-ехал, и вот когда его поменяли — гул не пропал. Знаешь, почему?
— Почему?
— Потому что слесарь, который эту машину делал, почему-то поменял правый подшипник вместо левого. В бумаге было написано «ЛЕВЫЙ». Читать он умеет, я проверял. А вот разницу между правой стороной и левой не знал. Двадцать четыре года долбоёбу! На двадцать пятом году слесарь Иванов сделал открытие.

Re: Зачем просят перевернуть строку на интервью?
От: koenig  
Дата: 10.10.18 10:38
Оценка: :))) :))) :))) :))) :)))

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


прошлый соискатель её перевернул, психанул и ушел с интервью
надо просто вернуть её на место
Re[3]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 08:11
Оценка: 1 (1) +6
Здравствуйте, Тёмчик, Вы писали:

Тё>А если очень давно учился, и забыл? Может быть такое?


Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден?
Re[3]: Зачем просят перевернуть строку на интервью?
От: Muxa  
Дата: 10.10.18 21:08
Оценка: +4 :)))
Тё>РашнФелоу, если Вы это не с гугла сейчас утащили, а по памяти- вы 100% ответили на мой коварный вопрос!
Он не умеет гуглить.
Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 06:54
Оценка: +1 :))) :)
и сколько времени можно на это потратить у доски?

Условие было такое: строка «один два три». Написать функцию на доске, чтобы поменять порядок символов внутри этой строки, не выделяя новой памяти (кроме временных переменных). Принимается ли решение через 15 минут?
Отредактировано 10.10.2018 8:38 Артём . Предыдущая версия .
Re[4]: Зачем просят перевернуть строку на интервью?
От: Amygdala Россия  
Дата: 10.10.18 09:10
Оценка: +4 :)
Здравствуйте, Vlad_SP, Вы писали:

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


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

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

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


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


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

kalsarikännit
Re[3]: Зачем просят перевернуть строку на интервью?
От: vsb Казахстан  
Дата: 10.10.18 22:03
Оценка: +2 -1 :))
Здравствуйте, Don Reba, Вы писали:

vsb>>Что за язык? На Java такое без хаков не сделать.


DR>Строка — это не обязательно класс String.


Обязательно.
Re[4]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 08:31
Оценка: +2 :)))
Здравствуйте, AlexGin, Вы писали:

AG>Считать данные из строки через reverse_iterator

AG>сохранить в новой (временной) строке,
AG>затем заменить имеющуюся на новую.

AG>Что НЕ так ?

Да в общем то всё

"А XML будем парсить regexp-ами" (С)
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:56
Оценка: -3 :))
Здравствуйте, AleksandrN, Вы писали:

Тё>>Те же яйца (индекс), вид в профиль.


AN>Представь свой вариант переворота C-строки в однобайтной кодировке.



void reverse( char[] s, int start, int length)
{
    if (length > 1) {
    s[start] ^= s[start+length-1];
    s[start+length-1] ^= s[start];
    s[start] ^= s[start+length-1];
    reverse(s, start+1, length-2);
    }
}
Re[7]: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 28.10.18 20:18
Оценка: +1 -4
Здравствуйте, pagid, Вы писали:

L>>Так вот и сеньеры приходят вовсе не бетон месить устраиваться.

P>С готовыми проектами приходят?

Сеньеры по определению имеют готовые внедренные проекты.
Равно как и архитекторы, которых приглашают проектировать что-то необычное.

P>Бросай уже негодные аналогии.


Ты хотел сказать "неудобные" аналогии, да?
www.blinnov.com
Re: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 07:14
Оценка: 10 (1) +3
Здравствуйте, Тёмчик, Вы писали:

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


Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.
Re[2]: Зачем просят перевернуть строку на интервью?
От: reversecode google
Дата: 10.10.18 08:44
Оценка: 6 (1) +1 :))
чудовищно точно подмечено! все именно так же и в ИТ
главное уметь проходить собеседования! а программировать потом научитесь
Re: Зачем просят перевернуть строку на интервью?
От: Amygdala Россия  
Дата: 10.10.18 08:39
Оценка: +1 :)))
Здравствуйте, Тёмчик, Вы писали:

А что надо просить? Отжаться 50 раз?
Re: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 10.10.18 08:42
Оценка: -4
Тё>и сколько времени можно на это потратить у доски?

Надо сказать, вопрос вообще говно, если привязываться к языку программирования.
Для некоторых языков он не проверяет ничего (Питон, например). Для некоторых языков написать на доске нормальное решение практически невозможно. Например C#:
public static string Reverse( string s )
{
    char[] charArray = s.ToCharArray();
    Array.Reverse( charArray );
    return new string( charArray );
}

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

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


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


Проверка, что ты не идиот.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Denwer Россия  
Дата: 12.10.18 11:03
Оценка: +4
Здравствуйте, Tourist, Вы писали:

T>Здравствуйте, kov_serg, Вы писали:


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


T>ну, если смотреть на машину в лоб, то лево\право как бы меняються, если смотреть с заду на нее. В общем зависит от точки зрения\отсчета. Знания где лево\право может и не помочь.


А когда говорят руль слева или справа, то понятно без уточнения?
Re[10]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 11:04
Оценка: +2 -1 :)
Здравствуйте, Тёмчик, Вы писали:

Поскипано, потому что без аргументов.

Тё>Похоже ты не имеешь представления, как устроена память и что такое структуры данных.

Аргументов,как всегда, не будет. У меня будет:
/**
    *  This is an uglified reverse(_BidirectionalIterator,
    *                              _BidirectionalIterator)
    *  overloaded for bidirectional iterators.
   */
   template<typename _BidirectionalIterator>
     void
     __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
               bidirectional_iterator_tag)
     {
       while (true)
         if (__first == __last || __first == --__last)
           return;
         else
           {
             std::iter_swap(__first, __last);
             ++__first;
           }
  }


Жду заявлений, что и эти разработчики "не имеешь представления, как устроена память и что такое структуры данных". Или что С++ отстой. Пофиг, главное не аргументировано.
Re[6]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 09:33
Оценка: -2 :)
Здравствуйте, De-Bill, Вы писали:

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


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


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

А с какого перепугу ты решил, что я пошёл бы к тебе на собеседование? Ну и если у вас в конторе ценится умение понимать с полуслова, не давать договорить и начинать сходу набрасывать, то вообще от вас подальше держаться надо.
Отредактировано 10.10.2018 9:38 De-Bill . Предыдущая версия .
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: Зачем просят перевернуть строку на интервью?
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 10.10.18 10:57
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Идиотен тест. Как у немцев после отъема прав.
Если 15 минут не хватает, можно смело заканчивать
Re: Зачем просят перевернуть строку на интервью?
От: mgu  
Дата: 11.10.18 01:16
Оценка: +1 :))
Здравствуйте, Тёмчик, Вы писали:

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


Потому что в реальном проекте нужно будет переставлять кровати.

А если серьёзно, то это первое, что нашлось в интернетах с готовым ответом. Как-то ни разу не сталкивался с вариациями, например, поменять левую часть строки с правой.
Re[8]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 04:58
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну разве про swap без временной переменной

А нафига? Это прикольный трюк но какой либо значимой практической пользы не несёт.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 08:57
Оценка: -2 :)
Здравствуйте, Stanislav V. Zudin, Вы писали:

Тё>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


SVZ>Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").

SVZ>Т.е. очков кандидату может добавить, но определяющим не является.

Если не может придумать, значит не понимает битовые операции. Пусть складывает свои лего (и дрочит на указатели) в более других компаниях .
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:26
Оценка: :)))
Здравствуйте, Nuzhny, Вы писали:

Тё>>Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.


N>1. Ты просто не в курсе, чем могут быть временные переменные на стеке после компиляции. В релизе их просто не будет на стеке — значение сразу кладётся в регистр.

Занимает лишний регистр.
N>2. Аналогично и с индексами: если компилятор не догадается от них избавиться, то у тебя опять же будут проблемы с быстродействием.
Неверно.
N>3. Если вдруг так получится, что строка будет представлена двусвязным списком, то индексов либо не будут, либо они будут O(n).
Если вдруг у бабушки был писюн.

N>4. Про utf-8 тебе уже написали: над такой строкой итератор будет логичной абстракцией, проходящей по строке посимвольно. Индекс же будет ходить либо по символам, либо по байтам, в зависимости от реализации.

Такая «строка» уже не будет строкой. Это какой-то массив или список строк уже.

N>Поэтому, если говорить о С++, вариант с итераторами будет одновременно и достаточно общим, и быстрым.

Похоже ты не имеешь представления, как устроена память и что такое структуры данных.
Re[6]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 12.10.18 17:16
Оценка: -3
Здравствуйте, Nuzhny, Вы писали:

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>

Что-то смотрю я на этот код, и кажется мне что он будет работать только с null-terminated string. А на произвольной подстроке облажается.
ARI ARI ARI... Arrivederci!
Отредактировано 13.10.2018 8:31 Somescout . Предыдущая версия . Еще …
Отредактировано 13.10.2018 8:27 Somescout . Предыдущая версия .
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 02:19
Оценка: -3
Здравствуйте, IID, Вы писали:

Тё>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


IID>Это провал теста на понимание работы компилятора и процессора.

IID>Т.к. "временная переменная" это не какая-то обязательная сущность, она будет оптимизирована в загрузку регистра. Так же, как и твои трюки с битами.

В условии не выделять память под временную переменную ничего не сказано про «работу компилятора и процессора». Попытка отписавшихся тут замаскировать собственную профнепригодность «компилятор за меня всё сделает», на собеседовани выглядит жалко.
Re[3]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 21:27
Оценка: 8 (1) +1
Здравствуйте, Тёмчик, Вы писали:

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

Ха! Таких на самом деле валом.
Это кодер, самостоятельно вести разработку не способен, инженерное мышление не развито — умеет только складывать из кубиков.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: AndyCyp США  
Дата: 10.10.18 16:09
Оценка: 1 (1) +1
Здравствуйте, Stanislav V. Zudin, Вы писали:

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


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


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

SVZ>Т.е. "один два три" --> "три два один".

Элементарно, Ватсон! Сначала разворачиваем всю строку, потом каждое слово в отдельности. Блумберг на телефонном интервью спрашивал (На С++ позицию)
Re: Зачем просят перевернуть строку на интервью?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 10.10.18 08:09
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

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


Не надо её переворачивать, всегда можно взять rend().
Re[5]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 08:45
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

N>>Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден?

Тё>У меня порвало все шаблоны.

Блин, как же ты работаешь, если от такого простого вопроса у тебя рвёт шаблоны?
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 08:53
Оценка: +1 :)
Здравствуйте, LaptevVV, Вы писали:

LVV>В книге Бентли "Жемчужины программирования" в разделе 2.3 Мощь элементарного на странице 32-33

LVV>рассматривается этот алгоритм.
LVV>И приводится удивительно элегантное рекурсивное решение.

Зачем там рекурсия?
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[3]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 12:58
Оценка: +1 :)
Здравствуйте, Masterspline,

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


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

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


и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.
kalsarikännit
Re[2]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка: +2
Здравствуйте, De-Bill, Вы писали:

DB> Array.Reverse( charArray );


Ты теряешь главный нюанс этого вопроса: просят написать алгоритм, который собственно переворачивание будет делать полностью сам.
Язык и правда не важен, встроенные переворачиваторы в решении использовать нельзя.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 10.10.18 20:13
Оценка: -1 :)
Здравствуйте, Nuzhny, Вы писали:

N>Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден?


Ну давай, расскажи, как ты перевернешь строку без выделения новой памяти, которая была засунута в RO сегмент микроконтроллера в целях экономии оперативной памяти :trollface:
www.blinnov.com
Re[5]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 21:27
Оценка: +2
Здравствуйте, landerhigh, Вы писали:

L>Ну давай, расскажи, как ты перевернешь строку без выделения новой памяти, которая была засунута в RO сегмент микроконтроллера в целях экономии оперативной памяти :trollface:

Куда то тебя понесло уж очень вдаль...
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 17:18
Оценка: +2
Здравствуйте, IID, Вы писали:

IID>StringBuilder это совсем не строка

И почему я не удивлён что дохрена народа не понимает вообще сути задачи а доколупываются к словам?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: Зачем просят перевернуть строку на интервью?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 11.10.18 17:52
Оценка: +2
Здравствуйте, IID, Вы писали:

IID>StringBuilder это совсем не строка

IID>И когда он в строку преобразуется (методом ToString) — строка порождается новая.

StringBuilder — это не строка, а один из многих классов для работы со строками. String тоже один из них. Строка — это последовательность символов.
Ce n'est que pour vous dire ce que je vous dis.
Отредактировано 11.10.2018 17:53 Don Reba . Предыдущая версия .
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 05:33
Оценка: :))
Здравствуйте, CreatorCray, Вы писали:

Тё>>Ну разве про swap без временной переменной

CC>А нафига? Это прикольный трюк но какой либо значимой практической пользы не несёт.

Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.
Re[8]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 10:07
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.


1. Ты просто не в курсе, чем могут быть временные переменные на стеке после компиляции. В релизе их просто не будет на стеке — значение сразу кладётся в регистр.
2. Аналогично и с индексами: если компилятор не догадается от них избавиться, то у тебя опять же будут проблемы с быстродействием.
3. Если вдруг так получится, что строка будет представлена двусвязным списком, то индексов либо не будут, либо они будут O(n).
4. Про utf-8 тебе уже написали: над такой строкой итератор будет логичной абстракцией, проходящей по строке посимвольно. Индекс же будет ходить либо по символам, либо по байтам, в зависимости от реализации.

Поэтому, если говорить о С++, вариант с итераторами будет одновременно и достаточно общим, и быстрым.
Re[10]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 16:53
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


Это провал теста на понимание работы компилятора и процессора.
Т.к. "временная переменная" это не какая-то обязательная сущность, она будет оптимизирована в загрузку регистра. Так же, как и твои трюки с битами.
kalsarikännit
Re[7]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 13.10.18 08:31
Оценка: -2
Здравствуйте, Somescout, Вы писали:

S>Что-то смотрю я на этот код, и кажется мне что он будет работать только с null-terminated string. А на произвольной подстроке облажается.


Несогласные: на вход функция принимает итераторы, которые могут находиться в любом состоянии, у функции нет контракта чтобы левый итератор был строго в начале строки, а правый — в конце. Соответственно для null-terminated string, либо если BiDirectionalIterator инициализирован за концом обычной строки — всё отработает нормально. Но в произвольном случае будет ошибка. Если не прав — с интересом выслушаю вашу версию.
ARI ARI ARI... Arrivederci!
Re[12]: Зачем просят перевернуть строку на интервью?
От: σ  
Дата: 27.10.18 18:26
Оценка: -1 :)
Здравствуйте, Тёмчик, Вы писали:

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


Тё>>>Те же яйца (индекс), вид в профиль.


AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.


Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.

А то таким "хитрым" приёмом кучу алгоритмов можно превратить в якобы O(1) по памяти, храня состояние в стеке вызовов.
Отредактировано 27.10.2018 18:28 σ . Предыдущая версия .
Re[9]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 31.10.18 00:14
Оценка: :))
Здравствуйте, IncremenTop, Вы писали:

IT>И если мне с порога задают такие вопросы — значит, уровень того, кто меня собеседует достаточно низок. Значит, я не хочу, чтобы он был моим коллегой и тем более руководителем. У меня не резиновое время. И да — даже не помню, встречал ли подобную глупость за последние годы.


Гм, похоже эти вопросы ещё замечательно отсеивают примадонн.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[8]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 31.10.18 05:53
Оценка: -2
Здравствуйте, Тёмчик, Вы писали:

Тё>Можно напомнить школьную формулу, если подзабылось, а дальше пусть закодит эту формулу.


Т.е. ты сможешь решить интеграл сходу?

Тё>Это же максимально простая задача, цель не завалить сразу, а протестировать уровень. Следующий вопрос будет чуть сложнее и так пока не наступит предел компетенции соискателя. Если соискатель завалился в самом низу сложности- то о каких качествах инженера можно говорить?


Так будет потрачено все время неэффективно с максимально глупым подобием на экзамен. Если у вас не расписаны компетенции и в принципе план собеседования, то в принципе попытки рассуждать о чуть сложнее или легче — унылы.
Re[7]: Зачем просят перевернуть строку на интервью?
От: Lexey Россия  
Дата: 11.10.18 22:31
Оценка: 4 (1)
Здравствуйте, VVV, Вы писали:

VVV>Там не код, а псевдокод. Но всё же, где там ошибка?


У тебя там, по факту, сдвиг на m влево, а не вправо.
"Будь достоин победы" (c) 8th Wizard's rule.
Re: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 10.10.18 07:46
Оценка: :)
Тё>и сколько времени можно на это потратить у доски?

Секунд 10 должно хватить:
s[::-1]

Не благодари.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 08:06
Оценка: :)
Здравствуйте, Nuzhny, Вы писали:

N>Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.


А если очень давно учился, и забыл? Может быть такое?
Re[4]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 08:31
Оценка: :)
Здравствуйте, Nuzhny, Вы писали:

N>Казалось бы, что ты мог забыть? Как итерироваться по строке? Как узнать её длину? Сам алгоритм-то помнить не надо, он разве не очевиден?


У меня порвало все шаблоны.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 10.10.18 08:49
Оценка: +1
Здравствуйте, Transformerrr, Вы писали:

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


Ну, для меня это звучит странно. На досках и листочках пишу код постоянно, когда что-то обсуждаю с коллегами: схематично, не весь синтаксис расписываю, но всё равно пишем. И схемы, и графы всякие. что тут такого? У доски в школе учат отвечать и писать на ней, в вузе тоже. Неужели эти вещи вдруг стали какими-то заоблачными? Мы же говорим не о каком-то сложном коде, а о маленькой функции по инверсии строки. Понятно, что код в реальных проектах сложнее, больше и с кучей зависимостей, для этого тулзы и делают. Но тут!
Re[3]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 09:07
Оценка: +1
Здравствуйте, Тёмчик,

Тё>Зачем там рекурсия?


Для элегантности же!
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]: Зачем просят перевернуть строку на интервью?
От: 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: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[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[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>


Слишком запутанный код какой-то, преинкременты, постинкременты, не сразу понятна логика.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 11:58
Оценка: +1
Здравствуйте, koodeer, Вы писали:

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


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

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


В чём коварство?
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]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 10.10.18 13:41
Оценка: +1
Здравствуйте, Vladek, Вы писали:

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


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


Ты не поверишь...
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: Зачем просят перевернуть строку на интервью?
От: alexzzzz  
Дата: 10.10.18 17:46
Оценка: +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>

Пока первый не равен последнему и одновременно первый не равен не совсем последнему, менять между собой не совсем первый и последний. С++ будто заставляет программистов специально так писать, чтобы было сходу неочевидно и приходилось расшифровывать. Конечно, может быть, что так оно работает быстрее всего, но читать подобное обычно неприятно.
Re[3]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка: +1
Здравствуйте, Transformerrr, Вы писали:

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

На доске писать код реально неудобно, да.
Но с другой стороны кода тут совсем чуть чуть.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка: -1
Здравствуйте, De-Bill, Вы писали:

DB>
DB>s[::-1]
DB>


По условиям задачи на собеседованиях надо как раз in-place.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[10]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 19:10
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

Тё>>Комментарии там излишни, а 2 сравнения ==last и ==-last внутри одного условия уменьшают читабельность.

CC>Bullshit же!

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

CC>Это ты уже доколупываешься.
Ну зачем итераторы C++ пихать? Я то знаю, что массив можно скормить как 2 итератора-указателя. Но блин, в моей вселенной никому не нужен C++. Так почему бы не выпендриваться и не сделать с массивом и индексами.
Re: Зачем просят перевернуть строку на интервью?
От: vsb Казахстан  
Дата: 10.10.18 19:55
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

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


Что за язык? На Java такое без хаков не сделать.
Re[3]: Зачем просят перевернуть строку на интервью?
От: vsb Казахстан  
Дата: 10.10.18 19:58
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

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

CC>Любопытным отвечают что по условиям задачи строка ASCII. Задача не про это.

Кстати интересно перевернуть UTF-8 строку. В принципе решается аналогично словам, но всё же. Заодно и кругозор можно проверить (знает ли человек, как кодируется UTF-8).
Отредактировано 10.10.2018 19:59 vsb . Предыдущая версия .
Re[3]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 00:24
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, koodeer, Вы писали:


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

CC>Варианта 2:
CC>1. Выбери другой язык
CC>2. Переворачивай не строку а массив символов

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

CC>Любопытным отвечают что по условиям задачи строка ASCII. Задача не про это.

Абсолютно верно. Это типичная задача для отсева непрограмиистов. Следующая обычно — разворот списка. На тех, кто не справился — просто нет смысла тратить время. Они не умеют программировать. Можно сделать небольшие подсказки, уточнения в процессе решения. Скидку на волнение, но в целом это маст хэв, так сказать.
Re[4]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 03:08
Оценка: +1
Здравствуйте, De-Bill, Вы писали:

CC>>По условиям задачи на собеседованиях надо как раз in-place.

DB>Начнём с того, что условие in-place Артёмка приписал уже после моего ответа.

Начнём с того что это настолько бородатая задача что условия эти давно известны.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 03:14
Оценка: -1
CC>Начнём с того что это настолько бородатая задача что условия эти давно известны.

А с чего ты взял, что это именно та бородатая задача? Без условия на in-place это может быть вполне задачей на отсев любителей заморочится на пустом месте.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 11.10.18 06:08
Оценка: +1
Здравствуйте, mgu,

mgu> Потому что в реальном проекте нужно будет переставлять кровати.


Бинго! Только в реальном проекте менеджер требует переставлять кровати, а заказчику-то нужно совсем другое....
Re[3]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 11.10.18 07:31
Оценка: +1
Здравствуйте, AleksandrN,

AN>Это типичные задачи для студентов 1-го курса.


Ты не поверишь! Даже с такими простыми задачами справляются не только лишь все. Даже с заявленным в резюме "опытом работы".
Re[2]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:06
Оценка: -1
Здравствуйте, RussianFellow, Вы писали:

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


Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.
Re[4]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:10
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>Кстати интересно перевернуть UTF-8 строку. В принципе решается аналогично словам, но всё же. Заодно и кругозор можно проверить (знает ли человек, как кодируется UTF-8).


Вот попалось бы такое на интервью сказал бы, что примерно знаю как utf-8 кодируется, но без подглядывания в справочник по нему точно не вспомню на ходу, просто не нужно это было обычно.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:14
Оценка: +1
Здравствуйте, zverjuga, Вы писали:

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


Проверка наличия способности программировать вообще. Именно программировать, а не лепить google-driven код. Тест практически тривиальный, если для ascii только.
Re: Зачем просят перевернуть строку на интервью?
От: a_g_99 США http://www.hooli.xyz/
Дата: 11.10.18 14:36
Оценка: :)
Здравствуйте, Тёмчик, Вы писали:

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


Я приму такое решение через 15 мин без всяких проблем. Вообще время это что то малокритичное на собеседовании в пределах получаса.
Те если бы я интервьюировал я бы сделал так —
— для начала обьясните решение на словах. как вы это видите, какая сложность и какие структуры данных вы используете
— давайте напишем псевдокод на доске. забудьте про контроль памяти, лямбды и сборку мусора. покажите мне вашу идею в коде
— давайте сделаем реализацию вашего алгоритма, берите ваш лаптоп, пишите. гуглите если надо. покажите мне рабочую реализацию. если надо давайте подумаем про тесты, подумаем про то как подать строку на вход и вывести результат.

во время всех этих шагов человек может попить, отдохнуть сделать перерыв. порассуждать о своей работе, погоде, алгоритмах и тп. среднее время на которое я рассчитываю около часа
Re[4]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 11.10.18 15:09
Оценка: +1
Здравствуйте, IID, Вы писали:

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


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


IID>и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.


Не знаю кто куда пошел и зачем, но в Java изменяемая строка — это java.lang.StringBuilder, спокойно берешь и разворачиваешь Надо язык узнать, прежде чем бездарно хейтить.
Re[17]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 20:26
Оценка: :)
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Я не очень понимаю, о чем ты.

Это не тебе.
Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[10]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 06:49
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Это тест на понимание битовых операций.

На понимание битовых есть другие, нормальные тесты, которые именно на понимание что как и почему.
Этот же просто бесполезный трик.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:18
Оценка: :)
Здравствуйте, AleksandrN, Вы писали:

AN>А если делать без индексов и перестановку без временных элементов

AN>
AN>void reverse( char *s )
AN>{
AN>    if ( !s )
AN>        return;

AN>    char *e = s + strlen( s ) - 1;
AN>    while ( s < e )
AN>    {
AN>        *e ^= *s;
AN>        *s ^= *e;
AN>        *e-- ^= *s++;
AN>    }
AN>}
AN>

Те же яйца (индекс), вид в профиль. Последняя строчка некрасивая- лучше всё запихнуть в for. Что ж вы всё на указатели мастурбируете типа это прибавляет значимости?
Re[9]: Зачем просят перевернуть строку на интервью?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 12.10.18 10:24
Оценка: -1
Здравствуйте, AleksandrN, Вы писали:

AN>А если делать без индексов и перестановку без временных элементов


Вот поэтому и не надо соглашаться на эти извращения! Потому что этот код мало что выглядит ужасно, но и тесты не пройдёт.
Re[10]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 10:48
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

AN>>А если делать без индексов и перестановку без временных элементов


N>Вот поэтому и не надо соглашаться на эти извращения! Потому что этот код мало что выглядит ужасно, но и тесты не пройдёт.


Цикл можно было сделать и красивей, но то вкусовщина. А вот у тебя проблема с C++ — код рабочий.
https://ideone.com/p0mNHc

Без индексов так и не выложил никто
Re[8]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 13:23
Оценка: +1
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, anton_t, Вы писали:


_>>Дальше 2+2 каждый может сложить сам.


IID>Зачем же строке метод toString ?


IID>Так-то сырой кусок байт тоже "sequence" и тоже может рассматриваться как строка. Тем паче что любая строка (глубоко внутри) это тоже просто набор байт.


До тебя, похоже, начинает доходить смысл слова "абстракция".

IID>Но только это не строка, невзирая на жонглирование терминологией.


Тогда назови свое определение строки.
Re[10]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 12.10.18 17:40
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>

IK>>Для массива 1 2 3 4 5 6 7 при сдвиге на 3 позиции должно получиться
IK>>5 6 7 1 2 3 4.

Тё>У тебя получится 4 5 6 7 1 2 3.

Вы просто не умеете их готовить! Сдвиг _циклический_, поэтому работает как влево, так и вправо.

Пример:
https://ideone.com/Fw7ugX

Где ошибка в индексах? сама функция не менялась .
Re[10]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 23:58
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Мало того, что у тебя ограниченный кругозор что даже сишные фишки не знаешь (не говоря про математику), — ты ещё и гордишься этим.

Уууу, включился классический Артёмка: дрочим на фишку, не понимая её смысла.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 05:00
Оценка: -1
Здравствуйте, Nuzhny, Вы писали:

N>Поскипано, потому что без аргументов.

потому что ты слился.

Тё>>Похоже ты не имеешь представления, как устроена память и что такое структуры данных.

N>Аргументов,как всегда, не будет. У меня будет:
N>
N>/**
N>    *  This is an uglified reverse(_BidirectionalIterator,
N>    *                              _BidirectionalIterator)
N>    *  overloaded for bidirectional iterators.
N>   */
N>   template<typename _BidirectionalIterator>
N>     void
N>     __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last,
N>               bidirectional_iterator_tag)
N>     {
N>       while (true)
N>         if (__first == __last || __first == --__last)
N>           return;
N>         else
N>           {
N>             std::iter_swap(__first, __last);
N>             ++__first;
N>           }
N>  }
N>


N>Жду заявлений, что и эти разработчики "не имеешь представления, как устроена память и что такое структуры данных". Или что С++ отстой. Пофиг, главное не аргументировано.


Я тебе написал, что ты не имеешь представления, т.к. ты передал указатель на адрес в неизменяемой области памяти в функцию, которая reverse inplace. Ошибка не в том, что область защищена от рукожопых- а в том, что константную строку не надо изменять. Я исправил твой код и выложил ссылку- там всё работает. А ты зачем-то прикрываешься левым куском кода ни к месту.
Про строку с символами разной длины. Ты можешь сделать курсор для корректного прохода по этим символам. В C++ это называется iterator, я в курсе. Но если ты попытвешься с этим итератором скормить его в std:reverse с наивной имплементацией как в куске кода, что ты мне привёл, ты не получишь корректный результат. Потому что иногда полезно думать, а не мастурбировать на «крутизну» C++.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 13.10.18 08:55
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

S>>Несогласные: на вход функция принимает итераторы, которые могут находиться в любом состоянии, у функции нет контракта чтобы левый итератор был строго в начале строки, а правый — в конце.

CC>Дадада, а ещё "у функции нет контракта" что оба итератора показывают в один и тот же сегмент, да и вообще процесс к той памяти может не иметь доступ на чтение/запись, страницы не обязательно подмаплены и т.п.
CC>Всё что угодно можно довести до маразма.
CC>Маразм же обсуждать не интересно.

Ага, интересно потом читать про уязвимости, появившиеся за-за таких профессионалов С++.

Вот скажите, если функция предназначена именно для переворачивания строки, и требует вполне конкретных начальных параметров итераторов, нахрена выпендриваться и принимать в качестве аргументов итераторы, а не строку? А потом эти люди ещё и на C# с Java наезжают, хотя они спроектированы специально чтобы уменьшить вред от для таких специалистов.
ARI ARI ARI... Arrivederci!
Отредактировано 13.10.2018 11:56 Somescout . Предыдущая версия . Еще …
Отредактировано 13.10.2018 8:55 Somescout . Предыдущая версия .
Re[5]: Зачем просят перевернуть строку на интервью?
От: koodeer  
Дата: 13.10.18 14:43
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, koodeer, Вы писали:


K>> Понимание кодировок — плюс. Представление об умляутах и пр. — большой плюс (но не в каждой области нужно, поэтому незнание в минус не пойдет).


S>Но это ведь уже знания не о строках, а об Unicode. Если это изначально не выставлялось как требование для кандидата, то вставлять такое в задачу — странно.



Все зависит от должности, на которую собеседуется претендент.

Если он не способен перевернуть строку (и связный список) — значит вообще не может в программирование. Отметаем.
Джуниор должен быть способен написать такой код (и знать о готовых функциях, имеющихся в языке/платформе).
Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные) и о кодировках (одно- и многобайтовые).
Знание о композиции юникодных символов и т. п. — это, конечно, нужно только в специфических случаях (фирма разрабатывает текстовый процессор наподобие Word или лингвистический софт).

Но в том-то и дело, что изначально в задании вообще не сказано, чего ждут от претендента, на кого он собеседуется. И меня сильно удивило, что многие кинулись обсуждать именно переворот байтов, оставив остальные проблемы побоку.
А я постарался привлечь внимание именно к этим вопросам.
Re[2]: Зачем просят перевернуть строку на интервью?
От: TimurSPB Интернет  
Дата: 15.10.18 13:05
Оценка: -1
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>Так, что ли?
Это с выделением памяти под "с".
Make flame.politics Great Again!
Re: Зачем просят перевернуть строку на интервью?
От: Skorodum Россия  
Дата: 18.10.18 07:41
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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

Да какие 15 минут? Меня пару раз такое спрашивали вживую, давай пиши сразу (на доске или в чем-то расшаренном). Нормальная задача.

Это даже хорошо, т.к. есть уверенность, что коллеги хотя бы минимальными навыками инженерного мышления обладают, а то бывает, что в требованиях сплошной "rocket science", а по факту многие коллеги подобные задачи без гугла решить не могут
Re: Зачем просят перевернуть строку на интервью?
От: scf  
Дата: 26.10.18 07:00
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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


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


Вот самое эффективное, дубовое и в то же время изящное решение:
    int i = 0;                 // first char
        int j = array.length - 1;  // last char
        char tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 26.10.18 12:19
Оценка: :)
Здравствуйте, scf, Вы писали:

scf>Вот самое эффективное, дубовое и в то же время изящное решение:

scf>
scf>    int i = 0;                 // first char
scf>        int j = array.length - 1;  // last char
scf>        char tmp;
scf>        while (j > i) {
scf>            tmp = array[j];
scf>            array[j] = array[i];
scf>            array[i] = tmp;
scf>            j--;
scf>            i++;
scf>        }
scf>

Это и ожидалось. Я просто не могу понять, КАК обладатель бакалавра, honors и потом мастера в CS с опыиом тимлидера 20 минут рожал какую-то чушь и ждал подсказок.
Re[4]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 27.10.18 14:17
Оценка: :)
Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>Ну что же ты такой непонятливый Это твое второе собеседование что ли ?


Люди часто ошибаются в стрессовых ситуациях.


CAF> что задача плохая, что на работе они списки не переворачивают. Что они и так круты, потому что умные слова выучили.


Правильно ответили. Это означает, что вы не умеет проводить собеседования, да и в принципе решать задачи.
Re: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 28.10.18 19:23
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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


А если требуется архитектор для проектирования Sydney Opera House V2.0, то на собеседовании нужно кандидатов просить замешать куб бетона лопатой в корыте.
www.blinnov.com
Re: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 29.10.18 13:55
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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


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


std::reverse(str.begin(), str.end());
И каждый день — без права на ошибку...
Re[6]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 29.10.18 14:51
Оценка: -1
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Угу, впадают в ступор. Но это их проблемы.


Это означает, что тест некорректный.

CAF>Если человек не может сделать простейших вещей, то пусть ищет работу в другом месте.


Можно любого человека завалить на школьной программе.

CAF>Какая связь между тем как я решаю задачи и тем что я вижу на собеседованиях?


Собеседование — в том числе инженерная задача. Если ты ее пытаешься решить таким способом, то не умеешь решать задачи. Быть может умеешь гномиков решать или переворачивать строку, а решать инженерные задачи — нет.
Re[15]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 31.10.18 21:18
Оценка: :)
Здравствуйте, B0FEE664, Вы писали:

BFE>>>Короче-то, оно, короче, только не скомпилируется и стиль дурной.

Тё>>Не хватает говнеца?
BFE>Это вы о чём?
О том, что "дурной стиль" это отсутствие говнокода в сравнении с вашим вариантом.

Тё>>>>Опять много буков и зачем-то две функции вместо одной.

BFE>>>Зато в два раза эффективней по памяти и несколько эффективней по скорости.
Тё>>Хватит бредить.
BFE>Т.е. вы даже не догадываетесь сколько памяти уходит на хранение временных переменных на стеке при рекурсивном вызове?
Что вы прицепились к "хранение переменных на стеке". Погуглите tail recursion что-ли, если хотите деталей во что оно будет скомпилировано.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 08:04
Оценка:
Здравствуйте, De-Bill, Вы писали:

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


DB>Секунд 10 должно хватить:

DB>
DB>s[::-1]
DB>

DB>Не благодари.

без выделения новой строки
Re[2]: Зачем просят перевернуть строку на интервью?
От: Transformerrr  
Дата: 10.10.18 08:16
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


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


N>Просто проверить, что человек может писать код. Кажется, что тест неплохой. Сколько потратить времени? Думаю, что это должно ограничиваться не обдумыванием задачи, а умением писать на доске. Пишешь быстро — времени тратишь мало.


Бывает так,что человек может писать код, но не у доски. Со всякими collaborate тулзами то же самое.
Re: Зачем просят перевернуть строку на интервью?
От: LaptevVV Россия  
Дата: 10.10.18 08:44
Оценка:
В книге Бентли "Жемчужины программирования" в разделе 2.3 Мощь элементарного на странице 32-33
рассматривается этот алгоритм.
И приводится удивительно элегантное рекурсивное решение.
Кен Томпсон использовал этот вариант в 1971 году, и говорил, что уже тогда эта функция была легендарной.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 08:46
Оценка:
Здравствуйте, De-Bill, Вы писали:

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


DB>Надо сказать, вопрос вообще говно, если привязываться к языку программирования.

DB>Для некоторых языков он не проверяет ничего (Питон, например). Для некоторых языков написать на доске нормальное решение практически невозможно. Например C#:
DB>
DB>public static string Reverse( string s )
DB>{
DB>    char[] charArray = s.ToCharArray();
DB>    Array.Reverse( charArray );
DB>    return new string( charArray );
DB>}
DB>

DB>Я, блин, ToCharArray и Array.Reverse использую раз в 10 лет. Для некоторых языков может начаться мрак из-за кодировок. В-общем, если собеседующий захочет докапаться, то он сможет это сделать.

Сколько времени нужно, чтобы написать реализацию Array.reverse() из этого примера?
Re[3]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 10.10.18 09:04
Оценка:
Тё>Сколько времени нужно, чтобы написать реализацию Array.reverse() из этого примера?

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

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


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


Не докапывайтесь к словам. Последовательность символов — не обязательно immutable класс String, это может быть массив, ArrayList и т.д.
Re: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 10.10.18 10:01
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


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


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

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


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


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

_>

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


У нас принято говорить о кандидатах "Адекватный" — одно из важнейших качеств. Вообще говоря, если программист умный, адекватный, в меру энергичный — то пофиг на его бэкграунд. Так что история про слесаря — очень в точку.
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 до меня, говорят таки да, ответ на экзамен готовили на доске и потом отвечали как на школьном экзамене/уроке. Мы готовились на листочке бумаги, садились рядом с преподавателем и отвечали на вопросы билета и показывали решение задач если они были в билете преподавателю лично.

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

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


Да не на экзамене, на семинарах. Мел, доска, матрицы, дифуры, все дела. Не думаю, что доска уже ушла из высшей школы. Возможно, что мел заменили маркеры или интерактивные доски, но всё равно — доски.
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[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[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[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[2]: Зачем просят перевернуть строку на интервью?
От: Vlad_SP  
Дата: 10.10.18 13:42
Оценка:
Здравствуйте, Stanislav V. Zudin,

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


И сразу вспомним анекдот про суровых челябинских мужиков и японскую бензопилу
Re[3]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 10.10.18 13:46
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

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


V_S>И сразу вспомним анекдот про суровых челябинских мужиков и японскую бензопилу


Я подозреваю, что условие задачи Тёма сильно упростил , а может и неправильно понял.
_____________________
С уважением,
Stanislav V. Zudin
Re: Зачем просят перевернуть строку на интервью?
От: zverjuga Беларусь  
Дата: 10.10.18 15:42
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>не выделяя новой памяти (кроме временных переменных).


и вот зачем это? сразу отметается возможность использования уже готовых решений, встроенных во фрэймворк. к реальной жизни и работе этот тест не имеет никакого отношения, так как никто не будет париться чтобы писать самодельную переворачивалку.
проклятый антисутенерский закон
Re[4]: Зачем просят перевернуть строку на интервью?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 10.10.18 15:59
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


Ни в школе ни в университете не было принято отвечать у доски. Правда, специфика — Канада.
Ce n'est que pour vous dire ce que je vous dis.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 10.10.18 16:20
Оценка:
Здравствуйте, AndyCyp, Вы писали:

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

SVZ>>Т.е. "один два три" --> "три два один".

AC>Элементарно, Ватсон! Сначала разворачиваем всю строку, потом каждое слово в отдельности. Блумберг на телефонном интервью спрашивал (На С++ позицию)


Вот взял и всю интригу испортил
Мне в АМД её задавали, писать код не требовалось.
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>А если очень давно учился, и забыл? Может быть такое?

Это сразу досвидос, тест на профпригодность завален.
Если инженер не может такой элементарный алгоритм из головы родить — "это не инженер а говно" (тм)
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Не надо её переворачивать, всегда можно взять rend().

Нельзя. По условиям задачи надо именно изменить данные.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, De-Bill, Вы писали:

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

Артёмка тут как раз прав.
Не надо докапываться.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Комментарии там излишни, а 2 сравнения ==last и ==-last внутри одного условия уменьшают читабельность.

Bullshit же!

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

Это ты уже доколупываешься.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, RussianFellow, Вы писали:

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


Как бы да, но...
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 18:55
Оценка:
Здравствуйте, koodeer, Вы писали:

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

Варианта 2:
1. Выбери другой язык
2. Переворачивай не строку а массив символов

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

Любопытным отвечают что по условиям задачи строка ASCII. Задача не про это.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 19:03
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

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

SVZ>Т.е. "один два три" --> "три два один".

Это было задание. Когда чел совсем застопорился, я упростил в надежде, что он подхватит идею быстро и потом вторую половину сделает. Но он и упрощённое делал с подсказками и 15 минут. Мастер в компьютер саенс в европейском университете, говорит связно, на вид неглупый. Как такое может быть, я хз. Но я там вообще случайно оказался- челу можно сказать, не повезло.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 10.10.18 19:53
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>А если очень давно учился, и забыл? Может быть такое?


Забыл, как думать?
Re[4]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 20:06
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Забыл, как думать?


Утверждал в резюме, что знает tensorflow. Надо было по data mining поспрашивать, но я испугался проявить невежество в том вопросе.
Re[11]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 10.10.18 21:27
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну зачем итераторы C++ пихать?

А почему нет? Итератор это всего то абстракция. Если девелопер не способен её понять — у меня для него плохие новости.

Тё>Но блин, в моей вселенной никому не нужен C++.

Restrictions надо оговаривать отдельно а главное заранее.

Тё> Так почему бы не выпендриваться и не сделать с массивом и индексами.

Лично я увидев в этой задаче индексы даже на С засчитал бы как небольшой минус и попросил бы переписать решение так, чтобы от индексов избавиться.
Из моего опыта — любители индексов в массе пишут спагетти код.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 10.10.18 21:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Что за язык? На Java такое без хаков не сделать.


Строка — это не обязательно класс String.
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 10.10.18 21:45
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, landerhigh, Вы писали:


L>>Ну давай, расскажи, как ты перевернешь строку без выделения новой памяти, которая была засунута в RO сегмент микроконтроллера в целях экономии оперативной памяти :trollface:

CC>Куда то тебя понесло уж очень вдаль...

Почему вдаль? Вполне рядовая ситуация. Я имею в виду строку в RO, а не необходимость ее переворота.
www.blinnov.com
Re[12]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 10.10.18 22:24
Оценка:
Здравствуйте, CreatorCray, Вы писали:

Тё>>Ну зачем итераторы C++ пихать?

CC>А почему нет? Итератор это всего то абстракция. Если девелопер не способен её понять — у меня для него плохие новости.

Тё>>Но блин, в моей вселенной никому не нужен C++.

CC>Restrictions надо оговаривать отдельно а главное заранее.
Ок. Если правильно написал сигнатуру функции с итераторами, и продемонстрировал алгоритм + swap ручками (а без временной переменной ещё лучше), и показал, как скормишь туда массив символов- я засчитаю. Даже если у нас искали со знанием ts и java. У меня ещё в очереди вопросы поинтересней.

Тё>> Так почему бы не выпендриваться и не сделать с массивом и индексами.

CC>Лично я увидев в этой задаче индексы даже на С засчитал бы как небольшой минус и попросил бы переписать решение так, чтобы от индексов избавиться.
Почему минус? Один тест на одну способность. Хочешь проверить знание арифметики указателей- делай отдельный тест.

CC>Из моего опыта — любители индексов в массе пишут спагетти код.

Ты как-то предвзято относишься. Зачем так.
Re[3]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 00:32
Оценка:
CC>Ты теряешь главный нюанс этого вопроса: просят написать алгоритм, который собственно переворачивание будет делать полностью сам.
CC>Язык и правда не важен, встроенные переворачиваторы в решении использовать нельзя.

Вот именно эти детали и должны быть уточнены: 1) пишем алгоритм, а не функцию на конкретном языке программирования, 2) строка изменяемая с доступом к символам по индексу, 3) есть функция вычисления длины строки, работающая без дополнительной памяти. Не во всех языках программирования и ситуациях эти условия выполняются.
Re[4]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 00:34
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>>>В книге Бентли "Жемчужины программирования" в разделе 2.3 Мощь элементарного на странице 32-33

LVV>>>рассматривается этот алгоритм.
LVV>>>И приводится удивительно элегантное рекурсивное решение.
Тё>>Зачем там рекурсия?
LVV>Прошу пардону.
LVV>Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02


А как рекурсивно?
Re[4]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 00:43
Оценка:
Здравствуйте, De-Bill, Вы писали:

CC>>Ты теряешь главный нюанс этого вопроса: просят написать алгоритм, который собственно переворачивание будет делать полностью сам.

CC>>Язык и правда не важен, встроенные переворачиваторы в решении использовать нельзя.

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


Угу, ты еще стоимость рандомного доступа по индеску обсуди. Может только итератор можно. Кто знает, какая там память.

А вообще не надо выдумавать проблем, там где их нет. Никто на собесе никого не хочет завалить, нет смысла придираться. Это же не форум на рсдн.
Re[2]: Зачем просят перевернуть строку на интервью?
От: mgu  
Дата: 11.10.18 01:19
Оценка:
Здравствуйте, qxWork, Вы писали:

W>Идиотен тест.


Для интервьюеров или для соискателя?
Re[13]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 01:21
Оценка:
Здравствуйте, Тёмчик, Вы писали:

CC>>Из моего опыта — любители индексов в массе пишут спагетти код.

Тё>Ты как-то предвзято относишься. Зачем так.
Потому что опыт.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 01:34
Оценка:
Здравствуйте, VVV, Вы писали:

LVV>>Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).


VVV>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Там в коде ошибка.

VVV>А как рекурсивно?

Вместо for-loop впихнуть tail recursion. Imho это изврат- но возможно, для проверки умения кандидата в рекурсию подойдёт, хотя лучше эту проверку отдельной простой задачей сделать.
Re[5]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 01:36
Оценка:
CAF>А вообще не надо выдумавать проблем, там где их нет. Никто на собесе никого не хочет завалить, нет смысла придираться.

При собеседовании у Тёмки, возможно. Но я знаю вполне конкретные конторы (так как там мои знакомые собеседуют), где за решение задачи без уточнения условий (вопросов со стороны соискателя) будет серьёзный минус.
Re[3]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 01:40
Оценка:
CC>По условиям задачи на собеседованиях надо как раз in-place.

Начнём с того, что условие in-place Артёмка приписал уже после моего ответа.
Re[2]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 01:42
Оценка:
Здравствуйте, koodeer, Вы писали:
K>Бегло просмотрел ответы в теме. Большинство провалили тест. Сказано же:

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


Не сказано. Если посмотришь историю изменений сообщения Тёмки, то увидишь, что про "не выделение новой памяти" было дописано уже после.
Re[3]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 01:42
Оценка:
Тё>без выделения новой строки

В начальной версии твоего сообщения такого требования не было.
Re[10]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 11.10.18 02:20
Оценка:
Здравствуйте, Nuzhny, Вы писали:

Тё>>

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

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

Тё>>


Вот, что у меня получилось за 15 минут в 4 часа утра:

Node* reverse(Node *head) 
{
  if ( nullptr == head )
    return head;

  Node* pPrev = nullptr;
  Node* pNext = head->next;

  while(nullptr != pNext)
  {
    head->next = pPrev;
    pPrev      = head;
    head       = pNext;
    pNext      = head->next;
  } 
  return head;
}

или
Node* reverse2(Node *head) 
{
  if ( nullptr != head->next )
    return head;

  Node* pNewHead = reverse2(head->next);
  head->next = head;

  return pNewHead;
}  

Node* reverse(Node *head) 
{
  if ( nullptr == head )
    return head;

  Node* pNewHead = reverse2(head->next);
  head->next = nullptr;

  return pNewHead;
}

И каждый день — без права на ошибку...
Re[4]: Зачем просят перевернуть строку на интервью?
От: Ziaw Россия  
Дата: 11.10.18 02:26
Оценка:
Здравствуйте, De-Bill, Вы писали:

DB>есть функция вычисления длины строки, работающая без дополнительной памяти


Чисто спортивный интерес. В каком языке вычисление длины строки требует выделения памяти?
Re[5]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 11.10.18 02:48
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>А как рекурсивно?


Я не знаю, что там в жемчужинах, но элементарно же:

void reverse(char* first, char* last)
{
  if ( first < last )
  {
    reverse(first + 1, last - 1);
    std::swap(*first, *last);
  }
}
И каждый день — без права на ошибку...
Re[6]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 02:49
Оценка:
Здравствуйте, De-Bill, Вы писали:

CAF>>А вообще не надо выдумавать проблем, там где их нет. Никто на собесе никого не хочет завалить, нет смысла придираться.


DB>При собеседовании у Тёмки, возможно. Но я знаю вполне конкретные конторы (так как там мои знакомые собеседуют), где за решение задачи без уточнения условий (вопросов со стороны соискателя) будет серьёзный минус.


Именно этой задачи или вообще?

Я имел ввиду, что в задаче обычно не ожидается ничего более сложнее индексации. И что чаще всего это простой тест для отсева полных нулей,
без всяких подвохов. В этом был КМК вопрос Темы. Конечно в данном случае можно уточнить какой язык/что используешь, но без фанатизма.

Я кстати давным давно проверял десятки кандидатов решающих и переворот строки и списка. К сожалению не все способны перевернуть и строку. А список вообще швах

Если человек использует функции — можно спросить что внутри должно быть по его мнению. Если рекурсию — пусть про стек расскажет, чем плохо в днном случае. Кодировки меня признаюсь не волновали. Если вопрос а как же на джаве, то предлагался голый массив или буфер. Да пусть хоть в нотации пишет.
Я кстати еще и на тестирование смотрел, когда проверял. (Конечно его почти никогда не было)
Re[7]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 03:04
Оценка:
CAF>Именно этой задачи или вообще?

В том числе и именно этой.

CAF>Я имел ввиду, что в задаче обычно не ожидается ничего более сложнее индексации. И что чаще всего это простой тест для отсева полных нулей,

CAF>без всяких подвохов. В этом был КМК вопрос Темы. Конечно в данном случае можно уточнить какой язык/что используешь, но без фанатизма.

Даже если взять эту конкретную задачу на этом конкретном форуме. Изначально у Тёмы не было условия in-place (можно посмотреть историю правок его начального сообщения). Потом in-place появилось. И это полностью изменило задачу, а для некоторых языков программирования делало решение невозможным нормальным способом. А маленькое дополнительное требование (но вполне реальное в бизнесе) переворачивать строки типа "приве́т" (с ударением на e), может вообще поменять всё.
А так да, у многих собеседующих в голове прошито решение задачи. В их голове — это задача на индексацию. Но в реальности задачей на индексацию она является только при куче дополнительных условий и ограничений.
Отредактировано 11.10.2018 3:08 De-Bill . Предыдущая версия .
Re[8]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 03:31
Оценка:
Здравствуйте, De-Bill, Вы писали:

CAF>>Именно этой задачи или вообще?


DB>В том числе и именно этой.


CAF>>Я имел ввиду, что в задаче обычно не ожидается ничего более сложнее индексации. И что чаще всего это простой тест для отсева полных нулей,

CAF>>без всяких подвохов. В этом был КМК вопрос Темы. Конечно в данном случае можно уточнить какой язык/что используешь, но без фанатизма.

DB>Даже если взять эту конкретную задачу на этом конкретном форуме. Изначально у Тёмы не было условия in-place (можно посмотреть историю правок его начального сообщения). Потом in-place появилось. И это полностью изменило задачу, а для некоторых языков программирования делало решение невозможным нормальным способом. А маленькое дополнительное требование (но вполне реальное в бизнесе) переворачивать строки типа "приве́т" (с ударением на e), может вообще поменять всё.


Про память — да существенное условие. А всяких ударений не предусмотреть. Можно всего понапридумать, и ударение, и строки длиной больше предела в языке. И кстати в бизнесе тоже, но задумывать о трубованиях бизнеса это перебор.

DB>А так да, у многих собеседующих в голове прошито решение задачи. В их голове — это задача на индексацию. Но в реальности задачей на индексацию она является только при куче дополнительных условий и ограничений.


В реальности это зависит только от собеседующего. Я написал, то что мне кажется наиболее типичным.
Re[9]: Зачем просят перевернуть строку на интервью?
От: De-Bill  
Дата: 11.10.18 03:39
Оценка:
CAF>Про память — да существенное условие.
Это то, что делает из одной задачи другую.
CAF>А всяких ударений не предусмотреть.
Не предусмотреть. Поэтому и важно примерно отметить ограничения, при которых решение будет работать.
CAF>В реальности это зависит только от собеседующего. Я написал, то что мне кажется наиболее типичным.
Согласен. Некоторые собеседующие могут считать: "Это же бородатая задача, значит in-place по умолчанию, зачем обговаривать дополнительно?". Другие будут считать, что задача намного глубже, чем кажется. И если соискатель начинает накидывать решение даже без малейших уточнений, то это минус.
Re[11]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 03:48
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Тё>>>

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

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

Тё>>>


BFE>Вот, что у меня получилось за 15 минут в 4 часа утра:


BFE>
BFE>Node* reverse(Node *head) 
BFE>{
BFE>  if ( nullptr == head )
BFE>    return head;

BFE>  Node* pPrev = nullptr;
BFE>  Node* pNext = head->next;

BFE>  while(nullptr != pNext)
BFE>  {
    head->>next = pPrev;
BFE>    pPrev      = head;
BFE>    head       = pNext;
BFE>    pNext      = head->next;
BFE>  } 
BFE>  return head;
BFE>}
BFE>


Есть лишние буквы. Так короче:
reverse(head *Node){

Node *prev = 0;
while(head) {
  Node *next = head.next;
  head.next = prev;
  prev = head;
  head = next;
}
return prev;
}



BFE>или

BFE>
BFE>Node* reverse2(Node *head) 
BFE>{
BFE>  if ( nullptr != head->next )
BFE>    return head;

BFE>  Node* pNewHead = reverse2(head->next);
  head->>next = head;

BFE>  return pNewHead;
BFE>}  

BFE>Node* reverse(Node *head) 
BFE>{
BFE>  if ( nullptr == head )
BFE>    return head;

BFE>  Node* pNewHead = reverse2(head->next);
  head->>next = nullptr;

BFE>  return pNewHead;
BFE>}
BFE>

BFE>

Опять много буков и зачем-то две функции вместо одной.

reverse(head *Node, reversedHead *& Node) {

  if(head && head.next){
    Node *reversedTail = reverse(head.next, reversedHead);
    reversedTail.next = head;
    head.next = 0;
  } else {
    reversedHead = head;
  }
  return head;
}
Отредактировано 11.10.2018 4:52 Артём . Предыдущая версия . Еще …
Отредактировано 11.10.2018 3:52 Артём . Предыдущая версия .
Re[10]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 03:53
Оценка:
Здравствуйте, De-Bill, Вы писали:

CAF>>Про память — да существенное условие.

DB>Это то, что делает из одной задачи другую.
CAF>>А всяких ударений не предусмотреть.
DB>Не предусмотреть. Поэтому и важно примерно отметить ограничения, при которых решение будет работать.
CAF>>В реальности это зависит только от собеседующего. Я написал, то что мне кажется наиболее типичным.
DB>Согласен. Некоторые собеседующие могут считать: "Это же бородатая задача, значит in-place по умолчанию, зачем обговаривать дополнительно?". Другие будут считать, что задача намного глубже, чем кажется. И если соискатель начинает накидывать решение даже без малейших уточнений, то это минус.

Я уже сказал, я написал о том чего ждет большинство с моей точки зрения. Особенно для вполне среднего уровня. Да — если ты идешь в супер R&D, то при виде такой задачи — должно в голове щелкнуть, что что-то не так. Что цель не продемонстрировать навыки итерации и индексации. (Может самому придется догадаться и делать строки оптимизированные для разворота). Да-да, меня такое про бинарный поиск спрашивали. Но в общем как мне кажется, мы друг друга поняли. По крайней мере я думаю, что тебя понял.

Кстати, вспомнил. Достаточно часто эта задача — начало длинной беседы. А что если так, а так, а так. (Но тут есть свой минус) Но простой переворот — маст хев.
Re[12]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 05:11
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


Тё>>Ну зачем итераторы C++ пихать?

CC>А почему нет? Итератор это всего то абстракция. Если девелопер не способен её понять — у меня для него плохие новости.

Тё>>Но блин, в моей вселенной никому не нужен C++.

CC>Restrictions надо оговаривать отдельно а главное заранее.

Тё>> Так почему бы не выпендриваться и не сделать с массивом и индексами.

CC>Лично я увидев в этой задаче индексы даже на С засчитал бы как небольшой минус и попросил бы переписать решение так, чтобы от индексов избавиться.

Вот кстати:
А какое решение быстрее (я слабо знаком с оптимизациями компиляторов, поэтому любые комменты от опытных тов приветствуются)
индекс
— вычитать потом надо
+ loop unrolling
+ четкий икнремент по индексу может оптимизироваться
пара итераторов
+ параллельно икремент/декремент в конвейре

Можно конечно на асм посмотреть, но я все равно не пойму кто быстрее. Так что смтотреть без толку. Писать бенчмарки есс-но лень. Есть идеи?
Ну и конечно на десерт, можно ли еще быстрее ?


CC>Из моего опыта — любители индексов в массе пишут спагетти код.


Это мнение субъективное Спорить с таким утверждением бессмысленно.
Re[3]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 06:17
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Здравствуйте, mgu,


mgu>> Потому что в реальном проекте нужно будет переставлять кровати.


V_S>Бинго! Только в реальном проекте менеджер требует переставлять кровати, а заказчику-то нужно совсем другое....


Да, и поэтому не надо уметь программировать Так вам с мгу дорога в менеджмент, в этом вы разбираетесь лучше всех.
Re[2]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 11.10.18 07:00
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>А если серьёзно, то это первое, что нашлось в интернетах с готовым ответом. Как-то ни разу не сталкивался с вариациями, например, поменять левую часть строки с правой.


Это типичные задачи для студентов 1-го курса.
Отредактировано 11.10.2018 7:01 AleksandrN . Предыдущая версия .
Re[3]: Зачем просят перевернуть строку на интервью?
От: AlexGin Беларусь  
Дата: 11.10.18 07:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, kaa.python, Вы писали:


KP>>Не надо её переворачивать, всегда можно взять rend().

CC>Нельзя. По условиям задачи надо именно изменить данные.

Считать данные из строки через:
https://en.cppreference.com/w/cpp/iterator/reverse_iterator

сохранить в новой (временной) строке,
затем заменить имеющуюся на новую.

Что НЕ так ?
Re[4]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 07:14
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Здравствуйте, CreatorCray, Вы писали:


CC>>Здравствуйте, kaa.python, Вы писали:


KP>>>Не надо её переворачивать, всегда можно взять rend().

CC>>Нельзя. По условиям задачи надо именно изменить данные.

AG>Считать данные из строки через:

AG>https://en.cppreference.com/w/cpp/iterator/reverse_iterator

AG>сохранить в новой (временной) строке,

AG>затем заменить имеющуюся на новую.

AG>Что НЕ так ?

Нельзя память выделять. (Кроме переменных)
Re[4]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 07:39
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Здравствуйте, AleksandrN,


AN>>Это типичные задачи для студентов 1-го курса.


V_S>Ты не поверишь! Даже с такими простыми задачами справляются не только лишь все. Даже с заявленным в резюме "опытом работы".


А ты вообще тред читал ?
Re[13]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 08:18
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>А какое решение быстрее (я слабо знаком с оптимизациями компиляторов, поэтому любые комменты от опытных тов приветствуются)

Как правило компилятор всё равно преобразует кашу с индексами в адресную арифметику.

Ради интереса скормил код онлайн компилеру https://godbolt.org/ x86-64 gcc (trunk) -O3
1.Nuzhny
Автор: Nuzhny
Дата: 10.10.18
, малость адаптирован чтоб таки скомпилить

#include <algorithm>

void revert(char* first, char* last)
{
    while ((first != last) && (first != --last)) {
        std::iter_swap (first++, last);
    }
}


2.RussianFellow
Автор: RussianFellow
Дата: 10.10.18
, для честности вынес strlen наружу как параметр

#include <stddef.h>

void revert(char* s, size_t n)
{
    for (auto i=0; i<n/2; i++)
    {
        auto c = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = c;
    }
}


Итого:

1.
revert(char*, char*):
        cmp     rdi, rsi
        jne     .L3
        jmp     .L1
.L6:
        add     rdi, 1
        movzx   edx, BYTE PTR [rsi]
        movzx   eax, BYTE PTR [rdi-1]
        mov     BYTE PTR [rdi-1], dl
        mov     BYTE PTR [rsi], al
        cmp     rsi, rdi
        je      .L1
.L3:
        sub     rsi, 1
        cmp     rsi, rdi
        jne     .L6
.L1:
        ret


2.
revert(char*, unsigned long):
        mov     rdx, rsi
        shr     rdx
        je      .L1
        lea     rax, [rdi-1+rsi]
        lea     rsi, [rdi+rdx]
.L4:
        movzx   ecx, BYTE PTR [rax]
        movzx   edx, BYTE PTR [rdi]
        add     rdi, 1
        sub     rax, 1
        mov     BYTE PTR [rdi-1], cl
        mov     BYTE PTR [rax+1], dl
        cmp     rdi, rsi
        jne     .L4
.L1:
        ret


Забавно что если взять другие компиляторы то 1й вариант меняется незначительно, а вот второй генерит вот такой вот пц:

Clang (trunk) -O3
revert(char*, unsigned long):                           # @revert(char*, unsigned long)
        mov     rcx, rsi
        shr     rcx
        je      .LBB0_6
        mov     r8d, ecx
        and     r8d, 1
        cmp     rcx, 1
        jne     .LBB0_7
        xor     ecx, ecx
        test    r8, r8
        jne     .LBB0_5
        jmp     .LBB0_6
.LBB0_7:
        lea     rdx, [rdi + 1]
        lea     r11, [rdi + rsi]
        add     r11, -1
        mov     r9, r8
        sub     r9, rcx
        xor     ecx, ecx
.LBB0_8:                                # =>This Inner Loop Header: Depth=1
        movzx   r10d, byte ptr [rdx - 1]
        movzx   eax, byte ptr [r11 + rcx]
        mov     byte ptr [rdx - 1], al
        mov     byte ptr [r11 + rcx], r10b
        movzx   r10d, byte ptr [rdx]
        movzx   eax, byte ptr [r11 + rcx - 1]
        mov     byte ptr [rdx], al
        mov     byte ptr [r11 + rcx - 1], r10b
        add     rdx, 2
        add     rcx, -2
        cmp     r9, rcx
        jne     .LBB0_8
        neg     rcx
        test    r8, r8
        je      .LBB0_6
.LBB0_5:
        mov     r8b, byte ptr [rdi + rcx]
        mov     rdx, rcx
        not     rdx
        add     rdx, rsi
        mov     al, byte ptr [rdi + rdx]
        mov     byte ptr [rdi + rcx], al
        mov     byte ptr [rdi + rdx], r8b
.LBB0_6:
        ret


CAF>Ну и конечно на десерт, можно ли еще быстрее?

Тут скорее не про быстрее стоит вести речь а про вменяемее.

CC>>Из моего опыта — любители индексов в массе пишут спагетти код.

CAF>Это мнение субъективное Спорить с таким утверждением бессмысленно.
Ну так там так и написано "Лично я увидев в этой задаче индексы..."
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:00
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


А если строка в utf8?
Re[3]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:08
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Любопытным отвечают что по условиям задачи строка ASCII. Задача не про это.


Тогда задача тривиальная и действительно на идиотен-тест похожа.
Re[5]: Зачем просят перевернуть строку на интервью?
От: vsb Казахстан  
Дата: 11.10.18 09:44
Оценка:
Здравствуйте, Michael7, Вы писали:

vsb>>Кстати интересно перевернуть UTF-8 строку. В принципе решается аналогично словам, но всё же. Заодно и кругозор можно проверить (знает ли человек, как кодируется UTF-8).


M>Вот попалось бы такое на интервью сказал бы, что примерно знаю как utf-8 кодируется, но без подглядывания в справочник по нему точно не вспомню на ходу, просто не нужно это было обычно.


Ну там же простая логичная схема Если в байте старший бит 1, смотрим на второй бит. Если он 1, это начало нового символа, если он 0, значит это продолжение предыдущего символа (если старший бит 0, значит это символ из одного байта). Может это только я всякую ненужную фигню зачем-то запоминаю.
Отредактировано 11.10.2018 9:45 vsb . Предыдущая версия .
Re[3]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 09:48
Оценка:
Здравствуйте, Michael7, Вы писали:

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


M>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов


1) wchar спасёт отца русской демократии. В жаве, кстати, char уже широкий.

2) в случае с переменной длиной, итератор не поможет. Там нужно «менять порядок слов».
Re[6]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 09:55
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Ну там же простая логичная схема Если в байте старший бит 1, смотрим на второй бит. Если он 1, это начало нового символа, если он 0, значит это продолжение предыдущего символа (если старший бит 0, значит это символ из одного байта). Может это только я всякую ненужную фигню зачем-то запоминаю.


Память штука такая. Вот ты сказал, я запомнил. Но могу и забыть точно через какое-то время, какие биты что означают, а вот сам принцип кодирования остается.
Re[4]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 10:00
Оценка:
Здравствуйте, Тёмчик, Вы писали:

M>>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов


Тё>1) wchar спасёт отца русской демократии. В жаве, кстати, char уже широкий.


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

Тё>2) в случае с переменной длиной, итератор не поможет. Там нужно «менять порядок слов».


Или использовать высокоуровневые функции, явно выделяющие подстроки, в данном случае из одного символа. В C# Substring, Insert, Remove
Re[5]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 10:08
Оценка:
Здравствуйте, Michael7, Вы писали

M>>>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов


Тё>>1) wchar спасёт отца русской демократии. В жаве, кстати, char уже широкий.


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


Ок не спасёт, так не спасёт. Я был был бы удовлетворён вариантом рашнфелоу на 100%. И задал бы следующий вопрос

Тё>>2) в случае с переменной длиной, итератор не поможет. Там нужно «менять порядок слов».


M>Или использовать высокоуровневые функции, явно выделяющие подстроки, в данном случае из одного символа. В C# Substring, Insert, Remove


Нельзя.
Re[6]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 10:15
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ок не спасёт, так не спасёт. Я был был бы удовлетворён вариантом рашнфелоу на 100%. И задал бы следующий вопрос


Для целей проверки кандидата, наверное и в самом деле достаточно.
Кстати, чем действительно еще хорош тест, что такое переворачивание в реальной работе редко встречается (я даже и не помню), так что использовать память не получится, надо немного подумать.
Re[6]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 11.10.18 10:48
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ок не спасёт, так не спасёт. Я был был бы удовлетворён вариантом рашнфелоу на 100%. И задал бы следующий вопрос


Какой? Оптимизировать, сделать не указателях, без использования индекса массива или про UTF-8?
Re[7]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 10:52
Оценка:
Здравствуйте, AleksandrN, Вы писали:

Тё>>Ок не спасёт, так не спасёт. Я был был бы удовлетворён вариантом рашнфелоу на 100%. И задал бы следующий вопрос


AN>Какой? Оптимизировать, сделать не указателях, без использования индекса массива или про UTF-8?


Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.

Что-нибудь про radix sort или развернуть односвязный список.
Re[7]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 10:55
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Для целей проверки кандидата, наверное и в самом деле достаточно.

M>Кстати, чем действительно еще хорош тест, что такое переворачивание в реальной работе редко встречается (я даже и не помню), так что использовать память не получится, надо немного подумать.
Встречается. Только не просто переворачивание, а например сдвиг. Кстати сдвиг возможен и за 1(N)- но он более муторный.
Re[5]: Зачем просят перевернуть строку на интервью?
От: Michael7 Россия  
Дата: 11.10.18 11:02
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>"А XML будем парсить regexp-ами" (С)


Я однажды так делал И даже не регэкспами, а просто построчно с поиском подстроки.
Жуткий говнокод, конечно, но требовали так срочно, что "еще вчера" и нужно было просто достать пару значений, а сам xml-файл генерировался тоже чем-то говнокодистым и был не то, что не валиден по схеме или dtd, а даже не well-formed. Ничего, насколько я знаю, уже больше 10 лет ЭТО работает.
Re[5]: Зачем просят перевернуть строку на интервью?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 11.10.18 11:10
Оценка:
Здравствуйте, Тёмчик, Вы писали:

I>>Забыл, как думать?


Тё>Утверждал в резюме, что знает tensorflow. Надо было по data mining поспрашивать, но я испугался проявить невежество в том вопросе.


Непонятно. Знает tensorflow это как понять ? Это machine learning как основной скилл или второстепенный?
Вообще имеет смысл готовиться к каждому интервью. Если у человека основной профиль такой, то нужен специалист интервьюер. Если второстепенный, то хватит и заранее заготовленых вопросов.
Re: Зачем просят перевернуть строку на интервью?
От: sergey2b ЮАР  
Дата: 11.10.18 14:54
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


в MS давали задание поменять порядок слов а не символов без дополнительной памяти
три два один
Re[3]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 11.10.18 15:02
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, Nuzhny, Вы писали:


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


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


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


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


Есть исследования, которые говорят об обратном: https://developers.slashdot.org/story/17/05/09/2019222/only-36-percent-of-indian-engineers-can-write-compilable-code-says-study
Не думаю, что у нас сильно лучше.
Re[6]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 15:21
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, VVV, Вы писали:


VVV>>А как рекурсивно?


BFE>Я не знаю, что там в жемчужинах, но элементарно же:


BFE>
BFE>void reverse(char* first, char* last)
BFE>{
BFE>  if ( first < last )
BFE>  {
BFE>    reverse(first + 1, last - 1);
BFE>    std::swap(*first, *last);
BFE>  }
BFE>}
BFE>


Не, не, не. В этой подветке речь уже идёт о другом алгоритме:

Прошу пардону.
Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

Re[6]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 15:26
Оценка:
Здравствуйте, Тёмчик, Вы писали:


VVV>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>Там в коде ошибка.
Там не код, а псевдокод. Но всё же, где там ошибка?

VVV>>А как рекурсивно?

Тё>Вместо for-loop впихнуть tail recursion. Imho это изврат- но возможно, для проверки умения кандидата в рекурсию подойдёт, хотя лучше эту проверку отдельной простой задачей сделать.

Речь всё ещё о циклическом сдвиге строки?
Re[14]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 15:29
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>А какое решение быстрее (я слабо знаком с оптимизациями компиляторов, поэтому любые комменты от опытных тов приветствуются)

CC>Как правило компилятор всё равно преобразует кашу с индексами в адресную арифметику.

с одним итератором, а на двумя


CC>Ради интереса скормил код онлайн компилеру https://godbolt.org/ x86-64 gcc (trunk) -O3

CC>1.Nuzhny
Автор: Nuzhny
Дата: 10.10.18
, малость адаптирован чтоб таки скомпилить


CC>
CC>#include <algorithm>

CC>void revert(char* first, char* last)
CC>{
CC>    while ((first != last) && (first != --last)) {
CC>        std::iter_swap (first++, last);
CC>    }
CC>}
CC>


CC>2.RussianFellow
Автор: RussianFellow
Дата: 10.10.18
, для честности вынес strlen наружу как параметр


CC>
CC>#include <stddef.h>

CC>void revert(char* s, size_t n)
CC>{
CC>    for (auto i=0; i<n/2; i++)
CC>    {
CC>        auto c = s[i];
CC>        s[i] = s[n-1-i];
CC>        s[n-1-i] = c;
CC>    }
CC>}
CC>


CC>Итого:


CC>1.

CC>
CC>revert(char*, char*):
CC>        cmp     rdi, rsi
CC>        jne     .L3
CC>        jmp     .L1
CC>.L6:
CC>        add     rdi, 1
CC>        movzx   edx, BYTE PTR [rsi]
CC>        movzx   eax, BYTE PTR [rdi-1]
CC>        mov     BYTE PTR [rdi-1], dl
CC>        mov     BYTE PTR [rsi], al
CC>        cmp     rsi, rdi
CC>        je      .L1
CC>.L3:
CC>        sub     rsi, 1
CC>        cmp     rsi, rdi
CC>        jne     .L6
CC>.L1:
CC>        ret
CC>


CC>2.

CC>
CC>revert(char*, unsigned long):
CC>        mov     rdx, rsi
CC>        shr     rdx
CC>        je      .L1
CC>        lea     rax, [rdi-1+rsi]
CC>        lea     rsi, [rdi+rdx]
CC>.L4:
CC>        movzx   ecx, BYTE PTR [rax]
CC>        movzx   edx, BYTE PTR [rdi]
CC>        add     rdi, 1
CC>        sub     rax, 1
CC>        mov     BYTE PTR [rdi-1], cl
CC>        mov     BYTE PTR [rax+1], dl
CC>        cmp     rdi, rsi
CC>        jne     .L4
CC>.L1:
CC>        ret
CC>


CC>Забавно что если взять другие компиляторы то 1й вариант меняется незначительно, а вот второй генерит вот такой вот пц:


CC>Clang (trunk) -O3

CC>
CC>revert(char*, unsigned long):                           # @revert(char*, unsigned long)
CC>        mov     rcx, rsi
CC>        shr     rcx
CC>        je      .LBB0_6
CC>        mov     r8d, ecx
CC>        and     r8d, 1
CC>        cmp     rcx, 1
CC>        jne     .LBB0_7
CC>        xor     ecx, ecx
CC>        test    r8, r8
CC>        jne     .LBB0_5
CC>        jmp     .LBB0_6
CC>.LBB0_7:
CC>        lea     rdx, [rdi + 1]
CC>        lea     r11, [rdi + rsi]
CC>        add     r11, -1
CC>        mov     r9, r8
CC>        sub     r9, rcx
CC>        xor     ecx, ecx
CC>.LBB0_8:                                # =>This Inner Loop Header: Depth=1
CC>        movzx   r10d, byte ptr [rdx - 1]
CC>        movzx   eax, byte ptr [r11 + rcx]
CC>        mov     byte ptr [rdx - 1], al
CC>        mov     byte ptr [r11 + rcx], r10b
CC>        movzx   r10d, byte ptr [rdx]
CC>        movzx   eax, byte ptr [r11 + rcx - 1]
CC>        mov     byte ptr [rdx], al
CC>        mov     byte ptr [r11 + rcx - 1], r10b
CC>        add     rdx, 2
CC>        add     rcx, -2
CC>        cmp     r9, rcx
CC>        jne     .LBB0_8
CC>        neg     rcx
CC>        test    r8, r8
CC>        je      .LBB0_6
CC>.LBB0_5:
CC>        mov     r8b, byte ptr [rdi + rcx]
CC>        mov     rdx, rcx
CC>        not     rdx
CC>        add     rdx, rsi
CC>        mov     al, byte ptr [rdi + rdx]
CC>        mov     byte ptr [rdi + rcx], al
CC>        mov     byte ptr [rdi + rdx], r8b
CC>.LBB0_6:
CC>        ret
CC>


CAF>>Ну и конечно на десерт, можно ли еще быстрее?

CC>Тут скорее не про быстрее стоит вести речь а про вменяемее.
Я имел ввиду именно быстрее. Допустим — это критичная функция для приложения (ну так надо этому злобному бизнесу).
т.е. не до красоты — пиши что хочешь, но выдай результат

CC>>>Из моего опыта — любители индексов в массе пишут спагетти код.

CAF>>Это мнение субъективное Спорить с таким утверждением бессмысленно.
CC>Ну так там так и написано "Лично я увидев в этой задаче индексы..."
Re: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 15:32
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


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


Так что же с тобой случилось? От волнения ты забыл как мел в руках держать или тебе доску мылом намазали?
Или это были злобные знакомые Де-Билла ("даст же бог фаимилию") и они тебя замучали?
Мне кажется в любом другом случае, ты бы забыл об этом вопросе к концу собеседования
Re[6]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 11.10.18 16:15
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Непонятно. Знает tensorflow это как понять ?


Это один из баззвордов, на которые Тёмчик делает стойку.
kalsarikännit
Re[5]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 11.10.18 16:19
Оценка:
Здравствуйте, anton_t, Вы писали:

IID>>и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.


_>Не знаю кто куда пошел и зачем, но в Java изменяемая строка — это java.lang.StringBuilder, спокойно берешь и разворачиваешь Надо язык узнать, прежде чем бездарно хейтить.


Ты точно программист ?
StringBuilder это совсем не строка
И когда он в строку преобразуется (методом ToString) — строка порождается новая.
kalsarikännit
Re[10]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 11.10.18 16:32
Оценка:
Здравствуйте, Michael7, Вы писали:

M>А если строка в utf8?


а тогда это задание половина отметившихся не осилит
kalsarikännit
Re[5]: Зачем просят перевернуть строку на интервью?
От: LaptevVV Россия  
Дата: 11.10.18 17:02
Оценка:
LVV>>Прошу пардону.
LVV>>Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).
VVV>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

VVV>А как рекурсивно?
Да, циклический сдвиг — нерекурсивно делается с помощью реверса строки.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[15]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 11.10.18 17:18
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>с одним итератором, а на двумя

Ты асм читал?

2.
    movzx   ecx, BYTE PTR [rax]
    movzx   edx, BYTE PTR [rdi]
...
    mov     BYTE PTR [rdi-1], cl
    mov     BYTE PTR [rax+1], dl


Я вижу два.

CAF>Я имел ввиду именно быстрее. Допустим — это критичная функция для приложения (ну так надо этому злобному бизнесу).

Крайне странный критерий. Я не знаю ни одного собеседования где бы искали по критерию "умеет быстро говнокодить".

PS. Письма с From: Аноним <forum@rsdn.org> я удаляю не читая — анонимная кукушка может отдыхать.
Хочешь пообщаться — зарегайся, я не собираюсь даже читать сообщения на которые нельзя адресно ответить.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[16]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 11.10.18 17:52
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>с одним итератором, а на двумя

CC>Ты асм читал?

CC>2.

CC>
CC>    movzx   ecx, BYTE PTR [rax]
CC>    movzx   edx, BYTE PTR [rdi]
CC>...
CC>    mov     BYTE PTR [rdi-1], cl
CC>    mov     BYTE PTR [rax+1], dl
CC>


CC>Я вижу два.

Сорри, как-то я пропустил выкладки, не внимателен был. Т.е компилятор тоже за пару итераторов...

CAF>>Я имел ввиду именно быстрее. Допустим — это критичная функция для приложения (ну так надо этому злобному бизнесу).

CC>Крайне странный критерий. Я не знаю ни одного собеседования где бы искали по критерию "умеет быстро говнокодить".
Я имел ввиду скорость реализации, а не написания.

CC>PS. Письма с From: Аноним <forum@rsdn.org> я удаляю не читая — анонимная кукушка может отдыхать.

CC>Хочешь пообщаться — зарегайся, я не собираюсь даже читать сообщения на которые нельзя адресно ответить.
Я не очень понимаю, о чем ты. Я писем не писал, если оно пустое или с белибердой — то может по-ошибке с телефона?
Re[4]: Зачем просят перевернуть строку на интервью?
От: Vladek Россия Github
Дата: 11.10.18 18:32
Оценка:
Здравствуйте, anton_t, Вы писали:

_>Здравствуйте, Vladek, Вы писали:


V>>Здравствуйте, Nuzhny, Вы писали:


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


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


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


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


_>Есть исследования, которые говорят об обратном: https://developers.slashdot.org/story/17/05/09/2019222/only-36-percent-of-indian-engineers-can-write-compilable-code-says-study

_>Не думаю, что у нас сильно лучше.

Я говорил о тех, кто может пройти тест Fizz Buzz — то есть тест, который отсеивает левых людей. На вакансию программиста может откликнуться кто угодно.

Вообще научить программировать мелкие задачи можно кого угодно — люди будут вполне успешно писать скрипты, автоматизирующие что-то. Это банальный ликбез. Но настоящую программу нельзя склеить из отдельных скриптов или писать как большой скрипт, рано или поздно зайдёшь в тупик — нужны другие способности, способность к выведению абстракций и структурированию связей между ними, это уже не программирование с использованием готовых абстракций, это их изобретение. И тут выясняется, кто-то способен это делать, а кто-то нет и весь код их похож на бесконечные скрипты и они жутко не любят решать задачи иначе.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 19:35
Оценка:
Здравствуйте, a_g_99, Вы писали:

__>Я приму такое решение через 15 мин без всяких проблем. Вообще время это что то малокритичное на собеседовании в пределах получаса.

Т.е. то, что кандидат морозит чушь на доске и «справился» с подсказками «тянем за уши» на половине от изначальной проблемы за 15 минут- это засчитываем? Вообще-то мы не школьника собеседовали- а чела с весьма крутым резюме и с бакалавром + мастером в компьютерных науках, и с знанием нейросетей, тензорфло. Читая его резюме, сразу хочется взять такого крутого перца.
Re[7]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 11.10.18 19:38
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>>Там в коде ошибка.
VVV>Там не код, а псевдокод. Но всё же, где там ошибка?
В индексах.

VVV>>>А как рекурсивно?

Тё>>Вместо for-loop впихнуть tail recursion. Imho это изврат- но возможно, для проверки умения кандидата в рекурсию подойдёт, хотя лучше эту проверку отдельной простой задачей сделать.

VVV>Речь всё ещё о циклическом сдвиге строки?

«псевдокод» использует reverse строки. Речь об имплементации reverse без for-loop.
Re[8]: Зачем просят перевернуть строку на интервью?
От: Lexey Россия  
Дата: 11.10.18 22:18
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну разве про swap без временной переменной


Што?

Тё>и вообще без индексов.


Што?
Маразм крепчал?
"Будь достоин победы" (c) 8th Wizard's rule.
Re[8]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 22:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


VVV>>>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>>>Там в коде ошибка.
VVV>>Там не код, а псевдокод. Но всё же, где там ошибка?
Тё>В индексах.

Покажи где в индексах? https://ideone.com/ckJDhV

VVV>>Речь всё ещё о циклическом сдвиге строки?

Тё>«псевдокод» использует reverse строки. Речь об имплементации reverse без for-loop.

В этой подветке речь идёт о _циклическом_сдвиге_строки. Начато ЛаптевымВВ:

LVV>>И приводится удивительно элегантное рекурсивное решение.
Тё>Зачем там рекурсия?
Прошу пардону.
Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

К сожалению, я понял так, что всё же речь идёт про рекурсивный алгоритм сдвига строки, а т.к. я про него много раз слышал, но ни разу не видел (и сам не пытался, т.к. знаю нерекурсивный), то и спросил показать. Сейчас уже понял, что идёт речь как раз о том алгоритме, что я и привёл. Как-то так.
Re[8]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 11.10.18 23:09
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, VVV, Вы писали:


VVV>>Там не код, а псевдокод. Но всё же, где там ошибка?


L>У тебя там, по факту, сдвиг на m влево, а не вправо.


Это ж был ответ на:

Там реверс строки используется для реализации циклического сдвига строки на n позиций за О(n).

и тут не оговаривалось в какую сторону.. (хотя, спасибо за прочтение исходного сообщения и внимательность!)

а если брать исходное сообщение 2002, то там был _псевдокод_, который только демонстрировал _идею_, не реализацию. Ну и при _циклическом_ сдвиге можно двигать хоть вправо, хоть влево.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 00:14
Оценка:
Здравствуйте, Lexey, Вы писали:

Тё>>Ну разве про swap без временной переменной


L>Што?


Тё>>и вообще без индексов.


L>Што?

L>Маразм крепчал?

Мало того, что у тебя ограниченный кругозор что даже сишные фишки не знаешь (не говоря про математику), — ты ещё и гордишься этим.
А потом приходят такие "с опытом" и впадают в meltdown на школьной задачке.
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 12.10.18 00:19
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>>>>>Знаю как не рекурсивно (и очень элегантно) : http://rsdn.org/forum/other/124244.1
Автор: VVV
Дата: 01.11.02

Тё>>>>Там в коде ошибка.
VVV>>>Там не код, а псевдокод. Но всё же, где там ошибка?
Тё>>В индексах.

VVV>Покажи где в индексах? https://ideone.com/ckJDhV


IK>Для массива 1 2 3 4 5 6 7 при сдвиге на 3 позиции должно получиться
IK>5 6 7 1 2 3 4.

У тебя получится 4 5 6 7 1 2 3.
Re[10]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 06:19
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").
Т.е. очков кандидату может добавить, но определяющим не является.
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 12.10.18 06:31
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, RussianFellow, Вы писали:


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


M>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.


А как правильно тогда будет?
1613 г. = 2024 г.
Re[4]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 06:53
Оценка:
Здравствуйте, RussianFellow, Вы писали:

M>>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.


RF>А как правильно тогда будет?


Правильно будет уточнять условие задачи до начала решения. Может и не потребуется решать замороченный вариант. И произведешь хорошее впечатление на интервьюера.
_____________________
С уважением,
Stanislav V. Zudin
Re[18]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 12.10.18 07:03
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Я не очень понимаю, о чем ты.

CC>Это не тебе.
CC>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.
А что пишет то?
Re[19]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 07:45
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CC>>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.

CAF>А что пишет то?
Я давно уже их не читаю, удаляю сразу как вижу что от анонима с rsdn.
Некоторые тут постили, им тоже приходило.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[19]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 07:55
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CC>>Тут есть анонимная кукушка, которая ходит и подкладывает своё "ценное мнение" приватными мессагами от анонима.

CAF>А что пишет то?

Иногда скромно присылает свое решение

Как раз сегодня прочитал данную тему и написал на своем персональном форуме соответствующее решение. за 15 минут

Правда, я не заморачивался кодировкой и использовал базовую кодировку.

Смотрите "Как выполнить инверсию отдельных слов в объекте класса std::string" по ссылке http://cpp.forum24.ru/?1-1-0-00000106-000-0-0

--------------------------------------------------

Можете опубликовать мой комментарий, если хотите.


А иногда приходит такая пурга, за которую на форуме банят.

ЗЫ. Может это кто-то из навечно забаненных?
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Зачем просят перевернуть строку на интервью?
От: alzt  
Дата: 12.10.18 08:57
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


CC>Как бы да, но... Image: gallery_746_4_1592.gif


от сишника ждут немного другую реализацию.
Re[12]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 12.10.18 09:09
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


SVZ>>Не, Тёма, это не на понимание, а на проверку, читал ли "Hacker's Delight" (в нашем переводе "Алгоритмические трюки").

SVZ>>Т.е. очков кандидату может добавить, но определяющим не является.

Тё>Если не может придумать, значит не понимает битовые операции. Пусть складывает свои лего (и дрочит на указатели) в более других компаниях .


Категорически не согласен.
Есть знания, которые можно вывести, а есть те, которые надо просто знать (или знать, где подсмотреть).

Вот слабо сходу,не подглядывая в первоисточник, написать функцию реверса битов?
Тыж типа не говнокодер, в "лего" не играешь
_____________________
С уважением,
Stanislav V. Zudin
Re[8]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 09:57
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


Тё>Там нечего оптимизировать- всё правильно сделано. Ну разве про swap без временной переменной и вообще без индексов.


Иногда встречал собеседующих, которые любят позанудствовать. В этом случае можно докопаться до двукратного вычисления n-1-i, хотя современный компилятор это, наверняка, хорошо оптимизирует.

А если делать без индексов и перестановку без временных элементов
void reverse( char *s )
{
    if ( !s )
        return;

    char *e = s + strlen( s ) - 1;
    while ( s < e )
    {
        *e ^= *s;
        *s ^= *e;
        *e-- ^= *s++;
    }
}
Отредактировано 12.10.2018 10:06 AleksandrN . Предыдущая версия .
Re[2]: Зачем просят перевернуть строку на интервью?
От: Dair Россия https://dair.spb.ru
Дата: 12.10.18 10:39
Оценка:
Здравствуйте, RussianFellow, Вы писали:

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


Усложняем задачу: теперь даже без временных переменных!
Re[10]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 10:46
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Те же яйца (индекс), вид в профиль. Последняя строчка некрасивая- лучше всё запихнуть в for. Что ж вы всё на указатели мастурбируете типа это прибавляет значимости?


Представь свой вариант переворота C-строки в однобайтной кодировке.
Re[12]: Зачем просят перевернуть строку на интервью?
От: AleksandrN Россия  
Дата: 12.10.18 11:41
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Без индексов так и не выложил никто (c) Тёмчик
Re[6]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 12:46
Оценка:
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, anton_t, Вы писали:


IID>>>и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.


_>>Не знаю кто куда пошел и зачем, но в Java изменяемая строка — это java.lang.StringBuilder, спокойно берешь и разворачиваешь Надо язык узнать, прежде чем бездарно хейтить.


IID>Ты точно программист ?


Уже после этого перехода на личности можно засчитывать слив.

IID>StringBuilder это совсем не строка

IID>И когда он в строку преобразуется (методом ToString) — строка порождается новая.

Открываем википедию https://en.wikipedia.org/wiki/String_(computer_science) , читаем первое предложение:

In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable.

Теперь открываем JavaDoc для StringBuilder, читаем первое предложение:

A mutable sequence of characters.

К тому же StringBuilder реализует интерфейс CharSequence, который является абстракцией строки.
Дальше 2+2 каждый может сложить сам.
Re[5]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 12.10.18 12:48
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, anton_t, Вы писали:


_>>Здравствуйте, Vladek, Вы писали:


V>>>Здравствуйте, Nuzhny, Вы писали:


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


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


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


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


_>>Есть исследования, которые говорят об обратном: https://developers.slashdot.org/story/17/05/09/2019222/only-36-percent-of-indian-engineers-can-write-compilable-code-says-study

_>>Не думаю, что у нас сильно лучше.

V>Я говорил о тех, кто может пройти тест Fizz Buzz — то есть тест, который отсеивает левых людей. На вакансию программиста может откликнуться кто угодно.


V>Вообще научить программировать мелкие задачи можно кого угодно — люди будут вполне успешно писать скрипты, автоматизирующие что-то. Это банальный ликбез. Но настоящую программу нельзя склеить из отдельных скриптов или писать как большой скрипт, рано или поздно зайдёшь в тупик — нужны другие способности, способность к выведению абстракций и структурированию связей между ними, это уже не программирование с использованием готовых абстракций, это их изобретение. И тут выясняется, кто-то способен это делать, а кто-то нет и весь код их похож на бесконечные скрипты и они жутко не любят решать задачи иначе.


С этим соглашусь.
Re[7]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 12:56
Оценка:
Здравствуйте, anton_t, Вы писали:

_>Дальше 2+2 каждый может сложить сам.


Зачем же строке метод toString ?

Так-то сырой кусок байт тоже "sequence" и тоже может рассматриваться как строка. Тем паче что любая строка (глубоко внутри) это тоже просто набор байт.
Но только это не строка, невзирая на жонглирование терминологией.

Считаю дальнейший диалог бессмысленным.
kalsarikännit
Re[20]: Зачем просят перевернуть строку на интервью?
От: IID Россия  
Дата: 12.10.18 16:50
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

CAF>>А что пишет то?


SVZ>Иногда скромно присылает свое решение


Охренеть там тараканы!
Особенно впечатлила "Изба-говорильня", где один-единственный сыроежка поражается путинскому режиму и прочим интересным вещам.

Верит ли он в бога ?

kalsarikännit
Re[4]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 12.10.18 17:28
Оценка:
Здравствуйте, koodeer, Вы писали:

K> Понимание кодировок — плюс. Представление об умляутах и пр. — большой плюс (но не в каждой области нужно, поэтому незнание в минус не пойдет).


Но это ведь уже знания не о строках, а об Unicode. Если это изначально не выставлялось как требование для кандидата, то вставлять такое в задачу — странно.
ARI ARI ARI... Arrivederci!
Re[4]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 18:47
Оценка:
Здравствуйте, alzt, Вы писали:

A>от сишника ждут немного другую реализацию.

Да от кого угодно ждут другую. Это школьная реализация "в лоб".
Но по крайней мере с неё можно начать говорить дальше.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[12]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 18:47
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Мда... А как дышал.
Артёмка, даже RussianFellow написал код лучше чем этот пц.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[10]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 18:47
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Занимает лишний регистр.



Тё>Похоже ты не имеешь представления, как устроена память и что такое структуры данных.

Ох Артёмка, не позорился бы...
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[21]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 12.10.18 20:19
Оценка:
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, Stanislav V. Zudin, Вы писали:


CAF>>>А что пишет то?


SVZ>>Иногда скромно присылает свое решение


IID>Охренеть там тараканы!

IID>Особенно впечатлила "Изба-говорильня", где один-единственный сыроежка поражается путинскому режиму и прочим интересным вещам.

Мне тоже пришло письмо Странный товарищ.
Спасибо, что предупредили, не надо думать что это значит, можно просто удалить.
Re[10]: Зачем просят перевернуть строку на интервью?
От: Lexey Россия  
Дата: 12.10.18 20:53
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Мало того, что у тебя ограниченный кругозор что даже сишные фишки не знаешь (не говоря про математику), — ты ещё и гордишься этим.


Тема, ты в очередной раз показал, что ты классический moron. Впрочем, после твоих постов в авто я другого и не ожидал.

P.S. Специально для тебя на тему "трюков": https://github.com/Lexey/lzsav/blob/master/LZSAV.MAC. Это рабочая программа, если что. Ей "старшие товарищи" вполне успешно ужимали размеры своих "экзешников" на 30-50%. Во времена 360-килобайтных дискет это был очень приличный выигрыш.
"Будь достоин победы" (c) 8th Wizard's rule.
Отредактировано 12.10.2018 22:32 Lexey . Предыдущая версия .
Re[3]: Зачем просят перевернуть строку на интервью?
От: Masterspline  
Дата: 12.10.18 21:40
Оценка:
D>Усложняем задачу: теперь даже без временных переменных!

Товарищ готов привести пример реального процессора с реальным ABI, где при вызове функции не будет предоставляться некоторое количество регистров для нужд работы этой функции и где имеет смысл экономить регистры? В любом ABI прописано, что внутри функции вот этот список регистров можно использовать, а вот эти тоже можно, но их содержимое предварительно нужно сохранить, чтобы при выходе восстановить. Так что пока единственный смысл не использовать временные переменные — это если в результате эта функция будет встроена по месту вызова.

Я это к тому, что если программист не полный теоретик, услышав такой вопрос он встанет в ступор, как если бы его попросили написать программу, которая будет выполняться вообще без компьютера. Временные переменные есть по умолчанию! От них не уйти!
Re[12]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 13.10.18 02:03
Оценка:
Здравствуйте, Тёмчик, Вы писали:


AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.


Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Мне так страшно ещё никогда не было..
Re[13]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 02:09
Оценка:
Здравствуйте, AleksandrN, Вы писали:

Тё>>

Тё>>void reverse( char[] s, int start, int length)
Тё>>{
Тё>>    if (length > 1) {
Тё>>    s[start] ^= s[start+length-1];
Тё>>    s[start+length-1] ^= s[start];
Тё>>    s[start] ^= s[start+length-1];
Тё>>    reverse(s, start+1, length-2);
Тё>>    }
Тё>>}

Тё>>


AN>Без индексов так и не выложил никто (c) Тёмчик


Русский язык меня покидает Конечно же без цикла (и без временных переменных под индексы/указатели).
Отредактировано 13.10.2018 2:21 Артём . Предыдущая версия .
Re[11]: Зачем просят перевернуть строку на интервью?
От: VVV Россия  
Дата: 13.10.18 02:26
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>Пример:

VVV>https://ideone.com/Fw7ugX

VVV>Где ошибка в индексах? сама функция не менялась .


Обоснуй свой минус — с чем не согласен? И "ГДЕ ОШИБКА В ИНДЕКСАХ"?
Re[12]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 03:26
Оценка:
Здравствуйте, VVV, Вы писали:

VVV>>Пример:

VVV>>https://ideone.com/Fw7ugX

VVV>>Где ошибка в индексах? сама функция не менялась .


VVV>Обоснуй свой минус — с чем не согласен? И "ГДЕ ОШИБКА В ИНДЕКСАХ"?


Ты условие задачи читал? Твоя имплементация выдала неправильный результат.
Тё>
IK>>Для массива 1 2 3 4 5 6 7 при сдвиге на 3 позиции должно получиться
IK>>5 6 7 1 2 3 4.
Тё>У тебя получится 4 5 6 7 1 2 3.
Re[12]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 13.10.18 04:53
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


Тё>>>Это тест на понимание битовых операций. Если у чела опыт C или C++ — должен понимать. Ибо говнокодеры нам не нужны.


IID>>Это провал теста на понимание работы компилятора и процессора.

IID>>Т.к. "временная переменная" это не какая-то обязательная сущность, она будет оптимизирована в загрузку регистра. Так же, как и твои трюки с битами.

Тё>В условии не выделять память под временную переменную ничего не сказано про «работу компилятора и процессора». Попытка отписавшихся тут замаскировать собственную профнепригодность «компилятор за меня всё сделает», на собеседовани выглядит жалко.


Да ты расскажи уж чье это собеседование было? Результат каков?
Re[4]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 05:05
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

Тё>>Зачем там рекурсия?


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


До меня позже дошло. Чтобы увидеть, как опытный программист не может ее написать.
Re[13]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 05:20
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Да ты расскажи уж чье это собеседование было? Результат каков?


Я случайно попал Результат мне неизвестен- я лишь отчитался потом о заданных т.н. «алгоритмических» вопросах (до более интересных вопросов, к сожалению, не дошло).
Re[14]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 13.10.18 05:42
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Да ты расскажи уж чье это собеседование было? Результат каков?


Тё>Я случайно попал Результат мне неизвестен- я лишь отчитался потом о заданных т.н. «алгоритмических» вопросах (до более интересных вопросов, к сожалению, не дошло).

Ну хочу тебя расстраивать, но ты видимо не программист на С++ . Может для data science ты лучшу подходишь? Но в программирование лучше нее лезь.Не твое это. Ничего стращного.
Re[8]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 13.10.18 08:50
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Несогласные: на вход функция принимает итераторы, которые могут находиться в любом состоянии, у функции нет контракта чтобы левый итератор был строго в начале строки, а правый — в конце.

Дадада, а ещё "у функции нет контракта" что оба итератора показывают в один и тот же сегмент, да и вообще процесс к той памяти может не иметь доступ на чтение/запись, страницы не обязательно подмаплены и т.п.
Всё что угодно можно довести до маразма.
Маразм же обсуждать не интересно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[3]: Зачем просят перевернуть строку на интервью?
От: a_g_99 США http://www.hooli.xyz/
Дата: 13.10.18 19:37
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


__>>Я приму такое решение через 15 мин без всяких проблем. Вообще время это что то малокритичное на собеседовании в пределах получаса.

Тё>Т.е. то, что кандидат морозит чушь на доске и «справился» с подсказками «тянем за уши» на половине от изначальной проблемы за 15 минут- это засчитываем? Вообще-то мы не школьника собеседовали- а чела с весьма крутым резюме и с бакалавром + мастером в компьютерных науках, и с знанием нейросетей, тензорфло. Читая его резюме, сразу хочется взять такого крутого перца.

Вы сейчас звучите как — "к нам пришел крутой перец с образованием, опытом и скиллсетом в 100 раз лучше чем у меня! Ну я покажу ему какой он дурак и какой я дАртаньян!"

А цель то собеседования какая? Для меня нанять правильного человека. А для вас? Показать что вы не дурак?
Re[6]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 13.10.18 22:57
Оценка:
Здравствуйте, koodeer, Вы писали:

K>Здравствуйте, Somescout, Вы писали:


S>>Здравствуйте, koodeer, Вы писали:


K>>> Понимание кодировок — плюс. Представление об умляутах и пр. — большой плюс (но не в каждой области нужно, поэтому незнание в минус не пойдет).


S>>Но это ведь уже знания не о строках, а об Unicode. Если это изначально не выставлялось как требование для кандидата, то вставлять такое в задачу — странно.



K>Все зависит от должности, на которую собеседуется претендент.


K>Если он не способен перевернуть строку (и связный список) — значит вообще не может в программирование. Отметаем.

K>Джуниор должен быть способен написать такой код (и знать о готовых функциях, имеющихся в языке/платформе).
K>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные) и о кодировках (одно- и многобайтовые).
K>Знание о композиции юникодных символов и т. п. — это, конечно, нужно только в специфических случаях (фирма разрабатывает текстовый процессор наподобие Word или лингвистический софт).

Не думаю, что здесь кто-то хорошо знает, внутреннее устройство "строки" (j.l.String) в джаве Но есть и миддлы и синьоры и ведущие, и ничего — справляются как-то!

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

K>А я постарался привлечь внимание именно к этим вопросам.
Re[6]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 23:00
Оценка:
Здравствуйте, koodeer, Вы писали:

K>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Что?
Re[7]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 13.10.18 23:02
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


K>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>Что?

Ты знаешь как устроены строки в java?
Re[8]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 23:30
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

K>>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>>Что?

CAF>Ты знаешь как устроены строки в java?


From top of my head — Java String — Объект с ссылкой на char[], смещение, длина.

Теперь жду ответа на мой вопрос.
Re[9]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 13.10.18 23:35
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


K>>>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>>>Что?

CAF>>Ты знаешь как устроены строки в java?


Тё>From top of my head — Java String — Объект с ссылкой на char[], смещение, длина.

Ну это как то очень неточно.

Тё>Теперь жду ответа на мой вопрос.

См
https://docs.oracle.com/javase/10/docs/api/java/lang/String.html

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.

Так понятнее стало с иммутабельностью?
Re[10]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 14.10.18 03:57
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

K>>>>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>>>>Что?

CAF>>>Ты знаешь как устроены строки в java?


Тё>>From top of my head — Java String — Объект с ссылкой на char[], смещение, длина.

CAF>Ну это как то очень неточно.

Тё>>Теперь жду ответа на мой вопрос.

CAF>См
CAF>https://docs.oracle.com/javase/10/docs/api/java/lang/String.html

CAF>Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.


CAF>Так понятнее стало с иммутабельностью?


Попок-дурачков не берём
Re[11]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 14.10.18 04:12
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


K>>>>>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>>>>>Что?

CAF>>>>Ты знаешь как устроены строки в java?


Тё>>>From top of my head — Java String — Объект с ссылкой на char[], смещение, длина.

CAF>>Ну это как то очень неточно.

Тё>>>Теперь жду ответа на мой вопрос.

CAF>>См
CAF>>https://docs.oracle.com/javase/10/docs/api/java/lang/String.html

CAF>>Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.


CAF>>Так понятнее стало с иммутабельностью?


Тё>Попок-дурачков не берём

Не понял, ты это к чему?
Re[6]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 14.10.18 05:53
Оценка:
Здравствуйте, koodeer, Вы писали:

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


Сколько собеседований ты провёл?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[11]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 14.10.18 06:03
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Попок-дурачков не берём

Тебя же как то взяли
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: Зачем просят перевернуть строку на интервью?
От: sqrt  
Дата: 14.10.18 06:28
Оценка:
Здравствуйте, IID, Вы писали:

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


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


IID>и тут жаба с г-шарпом пошли горько рыдать в уголок к питону.


В C# можно без выделения новой строки через unsafe

static unsafe string Reverse(string str)
{
    fixed(char* s = str)
    {
        int len = str.Length;
        for (int i = 0; i < len / 2; i++)
        {
            char c = s[i];
            s[i] = s[len - i - 1];
            s[len - i - 1] = c;
        }
    }
    return str;
}
Re[9]: Зачем просят перевернуть строку на интервью?
От: anton_t Россия  
Дата: 15.10.18 12:57
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


K>>>>Миддл должен иметь представление о внутреннем устройстве строк (изменяемые/иммутабельные)

Тё>>>Что?

CAF>>Ты знаешь как устроены строки в java?


Тё>From top of my head — Java String — Объект с ссылкой на char[], смещение, длина.


Уже несколько лет как в строке содержится только ссылка на char[], без смещения и длинны. А начиная с 9-й версии там теперь ссылка на byte[] afair.
Re: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 18.10.18 04:54
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Спросили мою оценку домашнему заданию, на ангулар 6. Знания ngrx на порядок лучше, чем у меня (пару мес опыта с ангулар). Нужно было реализовать поиск по тексту. Я ожидал реакцию на каждую букву, наивный поиск в suffix tree, подсветку слов в тексте.
Чел сделал только по enter, поиск путём фильтра в лоб lines.toString().contains, где 150 обьектов с массивом строк lines.

Чувствую, что поднасрал челу и мне бы такое не понравилось, если кто-то докопался к интересной ему теме. Но блин, простить нулевое знание алгоритмов не могу.

Размышлял на эту тему. Чел мне сразу не понравился за слабость в алгоритмах, я не хотел ему давать тест чтобы зря не тратил свои силы. Сделано оно чисто и хорошо- по большому счёту отвечает размытым требованиям (где полёт фантазии неограничен), но ещё раз показало 0 в алгоритмах.
Отредактировано 18.10.2018 10:04 Артём . Предыдущая версия .
Re[4]: Зачем просят перевернуть строку на интервью?
От: serb Россия  
Дата: 18.10.18 06:02
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, Don Reba, Вы писали:


vsb>>>Что за язык? На Java такое без хаков не сделать.


DR>>Строка — это не обязательно класс String.


vsb>Обязательно.


Вся эта дискуссия это просто срыв шаблонов!!!
Re: Зачем просят перевернуть строку на интервью?
От: C0x  
Дата: 18.10.18 08:01
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


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


Задача школьного уровня конца 90-х годов. Решение описывалось в учебнике по программирования во Введение в программирование. Перед Рекурсивными алгоритмами. Как сейчас помню.
Re[2]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 19.10.18 02:30
Оценка:
Здравствуйте, C0x, Вы писали:

C0x>Задача школьного уровня конца 90-х годов. Решение описывалось в учебнике по программирования во Введение в программирование. Перед Рекурсивными алгоритмами. Как сейчас помню.


Надеюсь, не слишком нарушаю nda. Чела ещё раз пособеседовали другие люди, более вышестоящие (т.е. получается, что мы его не отфильтровали раньше и зря потратили время важных персон). Чел нашим вышестоящим сразу не понравился за полный ноль в алгоритмах- я ещё мягко с ним обошелся. Позиция техлид(!), но его бы и на кодера не взяли, когда вскрылось с переворотом. А всё из-за мега-супер-резюме с крутым опытом и образованием возились. Хз как ему удавалось до сих пор работать и дорасти до лида.
Re[2]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 19.10.18 03:14
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


Тё>Спросили мою оценку домашнему заданию, на ангулар 6. Знания ngrx на порядок лучше, чем у меня (пару мес опыта с ангулар). Нужно было реализовать поиск по тексту. Я ожидал реакцию на каждую букву, наивный поиск в suffix tree, подсветку слов в тексте.

Тё>Чел сделал только по enter, поиск путём фильтра в лоб lines.toString().contains, где 150 обьектов с массивом строк lines.

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


Тё>Размышлял на эту тему. Чел мне сразу не понравился за слабость в алгоритмах, я не хотел ему давать тест чтобы зря не тратил свои силы. Сделано оно чисто и хорошо- по большому счёту отвечает размытым требованиям (где полёт фантазии неограничен), но ещё раз показало 0 в алгоритмах.


Не все твои слова я понял Но такая оценка знания алгоритмов от человека имеющего проблемы с переворотом строки вызывают смешанные чувства. У меня кстати при словах поиск по тексту сразу всплыло смутно КМП. Думал, что бред, ан нет, просто хорошо забытое слово
Re[5]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 19.10.18 03:21
Оценка:
Здравствуйте, serb, Вы писали:

S>Здравствуйте, vsb, Вы писали:


vsb>>Здравствуйте, Don Reba, Вы писали:


vsb>>>>Что за язык? На Java такое без хаков не сделать.


DR>>>Строка — это не обязательно класс String.


vsb>>Обязательно.


S>Вся эта дискуссия это просто срыв шаблонов!!!

S>

Да ну? По-моему очевидно, что строка это не класс. строка — это строка, а класс — это класс и не надо их путать
Re[3]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 19.10.18 04:00
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Не все твои слова я понял Но такая оценка знания алгоритмов от человека имеющего проблемы с переворотом строки вызывают смешанные чувства. У меня кстати при словах поиск по тексту сразу всплыло смутно КМП. Думал, что бред, ан нет, просто хорошо забытое слово


Ты намекаешь, что у меня проблема с переворотом строки?
Насчёт кнута-морриса-пратта, это хорошо что ты ещё помнишь название алгоритма поиска подстроки. Плохо, что у тебя проблема с отличием O(N) от O(log N). Говоришь, работаешь в Долине? Ты правда программист?
Re[4]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 19.10.18 04:38
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Не все твои слова я понял Но такая оценка знания алгоритмов от человека имеющего проблемы с переворотом строки вызывают смешанные чувства. У меня кстати при словах поиск по тексту сразу всплыло смутно КМП. Думал, что бред, ан нет, просто хорошо забытое слово


Тё>Ты намекаешь, что у меня проблема с переворотом строки?

Конечно же нет, сам не понимаю, зачем ты завел этот топик
Тё>Насчёт кнута-морриса-пратта, это хорошо что ты ещё помнишь название алгоритма поиска подстроки. Плохо, что у тебя проблема с отличием O(N) от O(log N).
Это было бы очень плохо, согласен. А при чем, тут извиняюсь, O(log N)?
Я распознал только про поиск подсктроки, и вспомнил про КМП (как расшифровать уже и не вспомнил, но нагунлил). И радостно об этом написал Ты знаешь как можно подстроку в тексте за logN найти? Поделись, плз, познаниями, в жизни все пригодится.

Или может "Нужно было реализовать поиск по тексту." предполагает нечто иное нежели нежели поски подстроки в строке? Тогда так и пиши. Ты как задание написал, так я и понял. А то может эта задача совсем и не этом?

Тё>А что Говоришь, работаешь в Долине? Ты правда программист?

Конечно же нет Неужели не понятно?
Re[5]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 19.10.18 09:21
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>>>Не все твои слова я понял Но такая оценка знания алгоритмов от человека имеющего проблемы с переворотом строки вызывают смешанные чувства. У меня кстати при словах поиск по тексту сразу всплыло смутно КМП. Думал, что бред, ан нет, просто хорошо забытое слово


Тё>>Ты намекаешь, что у меня проблема с переворотом строки?

CAF>Конечно же нет, сам не понимаю, зачем ты завел этот топик
Тё>>Насчёт кнута-морриса-пратта, это хорошо что ты ещё помнишь название алгоритма поиска подстроки. Плохо, что у тебя проблема с отличием O(N) от O(log N).
CAF>Это было бы очень плохо, согласен. А при чем, тут извиняюсь, O(log N)?
CAF>Я распознал только про поиск подсктроки, и вспомнил про КМП (как расшифровать уже и не вспомнил, но нагунлил). И радостно об этом написал Ты знаешь как можно подстроку в тексте за logN найти? Поделись, плз, познаниями, в жизни все пригодится.


Я ожидал реакцию на каждую букву, наивный поиск в suffix tree, подсветку слов в тексте.

Напомню, домашнее задание на выходные. Гуглом все пользовались, всплывпющие подсказки видели. Тут уж написать на доске suffix tree не требовалось. Хотя неплохо бы знать, что это такое.


CAF>Или может "Нужно было реализовать поиск по тексту." предполагает нечто иное нежели нежели поски подстроки в строке? Тогда так и пиши. Ты как задание написал, так я и понял. А то может эта задача совсем и не этом?

Предполагает показать свои умения. Склеить 150 раз по 100 строк и применить к ним substring демонстрирует отсутствие понимания bigO.
Re[6]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 19.10.18 15:17
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>>>Не все твои слова я понял Но такая оценка знания алгоритмов от человека имеющего проблемы с переворотом строки вызывают смешанные чувства. У меня кстати при словах поиск по тексту сразу всплыло смутно КМП. Думал, что бред, ан нет, просто хорошо забытое слово


Тё>>>Ты намекаешь, что у меня проблема с переворотом строки?

CAF>>Конечно же нет, сам не понимаю, зачем ты завел этот топик
Тё>>>Насчёт кнута-морриса-пратта, это хорошо что ты ещё помнишь название алгоритма поиска подстроки. Плохо, что у тебя проблема с отличием O(N) от O(log N).
CAF>>Это было бы очень плохо, согласен. А при чем, тут извиняюсь, O(log N)?
CAF>>Я распознал только про поиск подсктроки, и вспомнил про КМП (как расшифровать уже и не вспомнил, но нагунлил). И радостно об этом написал Ты знаешь как можно подстроку в тексте за logN найти? Поделись, плз, познаниями, в жизни все пригодится.


Тё>

Тё>Я ожидал реакцию на каждую букву, наивный поиск в suffix tree, подсветку слов в тексте.

Тё>Напомню, домашнее задание на выходные. Гуглом все пользовались, всплывпющие подсказки видели. Тут уж написать на доске suffix tree не требовалось. Хотя неплохо бы знать, что это такое.
Напомню??? Я не видел условия вообще. А предположить, что кто-то все еще дает задание на выходные у меня воображения не хватило.

Какие всплывающие подсказки? Причем тут гугл?
CAF>>Или может "Нужно было реализовать поиск по тексту." предполагает нечто иное нежели нежели поски подстроки в строке? Тогда так и пиши. Ты как задание написал, так я и понял. А то может эта задача совсем и не этом?
Тё>Предполагает показать свои умения. Склеить 150 раз по 100 строк и применить к ним substring демонстрирует отсутствие понимания bigO.
По-моему без условия этого не понять.
Re: Зачем просят перевернуть строку на интервью?
От: rm822 Россия  
Дата: 23.10.18 23:39
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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

затем что
-30% слушает не что от них хотят, а голоса в своей голове, и сделают все что угодно, кроме задачи
-еще 30% раздолбаи, они недослушают условия, выделят память, вылезут за границы массива и т.п.
-у 5% случиться истерика, когда им укажут на ошибки
-10% оскорбяться слишком простой задачей для их "заоблачной квалификации"
-15% исправят ошибки с 3го раза, у них уровень — код компиляется, я свою работу сделал

90% бракуется просто потому что они не способны выполнить самую элементарную задачу своего руководства
И чтобы этих баранов сразу выгнать, выбирается максимально простая, абсолютно стандартная задача, с минимумом возможных трактовок.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 06:49
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>По условиям задачи на собеседованиях надо как раз in-place.


Только вот обычная строка в питоне — иммутабельная.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 06:53
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>помоему в сервиси говорят пассажирская и водительская сторона


Если учесть, что есть машины с правым или левым рулём и с одинаковыми деталями
Re[3]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 06:53
Оценка:
Здравствуйте, Tourist, Вы писали:

T>ну, если смотреть на машину в лоб, то лево\право как бы меняються, если смотреть с заду на нее. В общем зависит от точки зрения\отсчета. Знания где лево\право может и не помочь.


Принято смотреть по ходу движения. Для зануд — движения вперёд.
Re[6]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 06:56
Оценка:
Здравствуйте, 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>


Лаконично. И похоже, даже будет работать правильно.
Re[3]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 07:02
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Все бы ничего, но на utf-8 и даже на utf-16 в общем случае этот алгоритм сработает неправильно из-за переменной длины символов.


Этого можно избежать, если работать со строкой как с последовательностью code point'ов, а не как с последовательностью байтов в конкретной кодировке.
Re[14]: Зачем просят перевернуть строку на интервью?
От: Hobbes Россия  
Дата: 24.10.18 07:13
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Русский язык меня покидает Конечно же без цикла (и без временных переменных под индексы/указатели).


А аргументы функции reverse это не временные переменные?
Re[4]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 24.10.18 15:36
Оценка:
Здравствуйте, Hobbes, Вы писали:

H>Только вот обычная строка в питоне — иммутабельная.

Значит либо бери необычную либо бери не питон.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: Pyromancer  
Дата: 25.10.18 07:56
Оценка:
Здравствуйте, rm822, Вы писали:

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


Так и при чем тут переворот строки? У этой задачи-то множество трактовок в зависимости от языка выполнения, типа строки и символов в ней; и простота соответственно от "10 минут студенту 1 курса" до "невозможно в рамках поставленых условий"
Re[3]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 26.10.18 05:36
Оценка:
Здравствуйте, Pyromancer, Вы писали:

P>Здравствуйте, rm822, Вы писали:


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


P>Так и при чем тут переворот строки? У этой задачи-то множество трактовок в зависимости от языка выполнения, типа строки и символов в ней; и простота соответственно от "10 минут студенту 1 курса" до "невозможно в рамках поставленых условий"


Это не мешает выгонять баранов.

А вот кстати я тут подумал. А как перевернуть строку "in-place" j.l.String в Java?
Понятно, что это занятие абсолютно бессмысленное и вредное. Но разве не для этого мы здесь собрались?
Вот навскидку 3 варианта (один бредовее другого, даже пытаться проверять не хочется):
1) unsafe -> доступ к char[]
2) class redefinition for j.l.String, который приоткроет нам завесы
3) JNI/JVMTI присоска, которая делает это в С, надо только объект залочить от GC на время(забыл как)

Скорее всего любой из них просто все сломает наглухо. Интернированные строки как?

Есть еще идеи?
Изменение исходников, байткода не считается
Re[4]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 26.10.18 06:32
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Это не мешает выгонять баранов.


CAF>А вот кстати я тут подумал. А как перевернуть строку "in-place" j.l.String в Java?

CAF>Понятно, что это занятие абсолютно бессмысленное и вредное.

Всё очень просто.
Превратить строку в массив байт, поиздеваться над массивом, а потом создать новую строку. Не совсем inplace, но задача решается ожидаемым способом.

А по-хорошему, надо взять алгоритмическую задачу сравнимой сложности, нативно решаемую на Яве.
_____________________
С уважением,
Stanislav V. Zudin
Re[5]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 26.10.18 06:34
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Это не мешает выгонять баранов.


CAF>>А вот кстати я тут подумал. А как перевернуть строку "in-place" j.l.String в Java?

CAF>>Понятно, что это занятие абсолютно бессмысленное и вредное.

SVZ>Всё очень просто.

SVZ>Превратить строку в массив байт, поиздеваться над массивом, а потом создать новую строку. Не совсем inplace, но задача решается ожидаемым способом.

SVZ>А по-хорошему, надо взять алгоритмическую задачу сравнимой сложности, нативно решаемую на Яве.



Фуу, какая пошлость.
Re[3]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 27.10.18 03:59
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


scf>>Вот самое эффективное, дубовое и в то же время изящное решение:

scf>>
scf>>    int i = 0;                 // first char
scf>>        int j = array.length - 1;  // last char
scf>>        char tmp;
scf>>        while (j > i) {
scf>>            tmp = array[j];
scf>>            array[j] = array[i];
scf>>            array[i] = tmp;
scf>>            j--;
scf>>            i++;
scf>>        }
scf>>

Тё>Это и ожидалось. Я просто не могу понять, КАК обладатель бакалавра, honors и потом мастера в CS с опыиом тимлидера 20 минут рожал какую-то чушь и ждал подсказок.

Ну что же ты такой непонятливый Это твое второе собеседование что ли ? Такое очент часто бывает, ну не программист он да и все. Куча людей, именующих себя программистами. не может перевернуть список, удалить элемент списка. Особо одаренные еще и возникают, что задача плохая, что на работе они списки не переворачивают. Что они и так круты, потому что умные слова выучили.

Не понимаю, зачем об этом задумываться, да еще и на форуме писать. Жги лучше про телочек и мотики
Re[2]: Зачем просят перевернуть строку на интервью?
От: rm822 Россия  
Дата: 27.10.18 11:36
Оценка:
scf>Вот самое эффективное, дубовое и в то же время изящное решение:
scf>
scf>    int i = 0;                 // first char
scf>        int j = array.length - 1;  // last char
scf>        char tmp;
scf>        while (j > i) {
scf>            tmp = array[j];
scf>            array[j] = array[i];
scf>            array[i] = tmp;
scf>            j--;
scf>            i++;
scf>        }
scf>


а теперь строка будет UTF-8
Re[5]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 27.10.18 20:09
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Здравствуйте, 0xCAFEDEAD, Вы писали:



CAF>>Ну что же ты такой непонятливый Это твое второе собеседование что ли ?


IT>Люди часто ошибаются в стрессовых ситуациях.


Угу, впадают в ступор. Но это их проблемы.

CAF>> что задача плохая, что на работе они списки не переворачивают. Что они и так круты, потому что умные слова выучили.


IT>Правильно ответили. Это означает, что вы не умеет проводить собеседования, да и в принципе решать задачи.


Если человек не может сделать простейших вещей, то пусть ищет работу в другом месте.

Какая связь между тем как я решаю задачи и тем что я вижу на собеседованиях?
Re[4]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 28.10.18 09:14
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Ну что же ты такой непонятливый Это твое второе собеседование что ли ? Такое очент часто бывает, ну не программист он да и все. Куча людей, именующих себя программистами. не может перевернуть список, удалить элемент списка. Особо одаренные еще и возникают, что задача плохая, что на работе они списки не переворачивают. Что они и так круты, потому что умные слова выучили.

Я понимаю, когда чел — хреновый кодер, ну сидит внизу пищевой цепочки, выполняет несложные задачи. В данном случае крутое профильное образование и опыт тимлидом в крутой конторе (правда не здесь).

CAF>Не понимаю, зачем об этом задумываться, да еще и на форуме писать. Жги лучше про телочек и мотики

Тёлочке это заезженная тема. На моте пока нечем похвастать, дрифтить и виллить ещё не готов.
Re[2]: Зачем просят перевернуть строку на интервью?
От: pagid Россия  
Дата: 28.10.18 19:44
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>А если требуется архитектор для проектирования Sydney Opera House V2.0,

На конкурс нужно будет предоставить свой проект Sydney Opera House V2.0. Но это был бы конкурс проектов, так что не в тему.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 28.10.18 19:54
Оценка:
Здравствуйте, pagid, Вы писали:

L>>А если требуется архитектор для проектирования Sydney Opera House V2.0,

P>На конкурс нужно будет предоставить свой проект Sydney Opera House V2.0. Но это был бы конкурс проектов, так что не в тему.

Воот, кажется, ты начал что-то подозревать
www.blinnov.com
Re[4]: Зачем просят перевернуть строку на интервью?
От: pagid Россия  
Дата: 28.10.18 19:57
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Воот, кажется, ты начал что-то подозревать

Не, это у тебя пример не годный.

Ну вот придет на рабочим устраиваться, и вполне могут спросить как лучше замесить куб бетона
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: Зачем просят перевернуть строку на интервью?
От: landerhigh Пират  
Дата: 28.10.18 20:11
Оценка:
Здравствуйте, pagid, Вы писали:

L>>Воот, кажется, ты начал что-то подозревать

P>Не, это у тебя пример не годный.

Ага, потому что неудобный, да.
Кстати, "проект Opera House V2.0" сам по себе стоит не один (десяток) миллион денег.

P>Ну вот придет на рабочим устраиваться, и вполне могут спросить как лучше замесить куб бетона


Так вот и сеньеры приходят вовсе не бетон месить устраиваться.
www.blinnov.com
Re[6]: Зачем просят перевернуть строку на интервью?
От: pagid Россия  
Дата: 28.10.18 20:16
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Так вот и сеньеры приходят вовсе не бетон месить устраиваться.

С готовыми проектами приходят?

Бросай уже негодные аналогии.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Зачем просят перевернуть строку на интервью?
От: aik Австралия  
Дата: 28.10.18 20:20
Оценка:
Здравствуйте, scf, Вы писали:

scf>Вот самое эффективное, дубовое и в то же время изящное решение:

scf>
scf>    int i = 0;                 // first char
scf>        int j = array.length - 1;  // last char
scf>


Для изящности не хватает нормальных имен переменных, типа first/last, head/tail, start/end, чтоб не надо было добавлять комментарии в такую мощную функцию.
Re[8]: Зачем просят перевернуть строку на интервью?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 29.10.18 07:26
Оценка:
Здравствуйте, landerhigh, Вы писали:

P>>Бросай уже негодные аналогии.

L>Ты хотел сказать "неудобные" аналогии, да?

Удобные, просто довольно нелепые и ни для чего кроме раздувания щек не подходящие
Re[12]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 29.10.18 13:38
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Есть лишние буквы. Так короче:

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

Тё>Node *prev = 0;
Тё>while(head) {
Тё>  Node *next = head.next;
Тё>  head.next = prev;
Тё>  prev = head;
Тё>  head = next;
Тё>}
Тё>return prev;
Тё>}
Тё>


Короче-то, оно, короче, только не скомпилируется и стиль дурной.

Тё>Опять много буков и зачем-то две функции вместо одной.

Зато в два раза эффективней по памяти и несколько эффективней по скорости.
И каждый день — без права на ошибку...
Re[7]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 29.10.18 16:14
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Угу, впадают в ступор. Но это их проблемы.


IT>Это означает, что тест некорректный.


Для таких людей следуя твоей логике все "некорректно".

CAF>>Если человек не может сделать простейших вещей, то пусть ищет работу в другом месте.


IT>Можно любого человека завалить на школьной программе.


Завалить??? Я говорю о простейших задачах. Без подковырок, без подводных камней.

CAF>>Какая связь между тем как я решаю задачи и тем что я вижу на собеседованиях?


IT>Собеседование — в том числе инженерная задача. Если ты ее пытаешься решить таким способом, то не умеешь решать задачи. Быть может умеешь гномиков решать или переворачивать строку, а решать инженерные задачи — нет.


Ого, ну давай, в качестве разнообразия расскажи как же надо решать такую задачу? Причем желательно мне, в моей группе Раз уж ты знаешь, что я не умею этого делать.

Сдается мне, что ты из тех, кто отсеивается подобными задачками... И очень за это на всех обижен. Другого объяснения я не вижу. Для всех остальных — это просто вопрос, не заслуживающий горячего обсуждения.
Re[5]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 29.10.18 16:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Ну что же ты такой непонятливый Это твое второе собеседование что ли ? Такое очент часто бывает, ну не программист он да и все. Куча людей, именующих себя программистами. не может перевернуть список, удалить элемент списка. Особо одаренные еще и возникают, что задача плохая, что на работе они списки не переворачивают. Что они и так круты, потому что умные слова выучили.

Тё>Я понимаю, когда чел — хреновый кодер, ну сидит внизу пищевой цепочки, выполняет несложные задачи. В данном случае крутое профильное образование и опыт тимлидом в крутой конторе (правда не здесь).
Ну в РФ, например, из практически любого тех. вуза можно выпуститься не умея программировать. Не думаю, что в остальном мире лучше.
Тим лид — это вообще ничего в тех плане не значит. Это скорее об работе с командой.

А может это был программист на хаскеле или на прологе каком-нибудь? Привык, что данные менять нельзя и хлопал беспомощно глазами считая тебя за садиста?


CAF>>Не понимаю, зачем об этом задумываться, да еще и на форуме писать. Жги лучше про телочек и мотики

Тё>Тёлочке это заезженная тема. На моте пока нечем похвастать, дрифтить и виллить ещё не готов.

Да ты уже похвастался какими-то словами я вообще не знаю что это за слова. Да, не надо про мотоциклы и телочек.
Re[8]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 30.10.18 07:22
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Для таких людей следуя твоей логике все "некорректно".


Нет. Есть элементарные психологические практики. Даже девочки-психологи в курсе них, но ты даже не задался вопросом о их существовании. В силу отсутствия инженерной культуры.

CAF>Завалить??? Я говорю о простейших задачах. Без подковырок, без подводных камней.


Да, завалить на решении интегралов или диффуров. Можно даже на решении обычных уравнений.

CAF>Раз уж ты знаешь, что я не умею этого делать.


Я должен выполнять за тебя твою работу? Если готов оплатить по x2 ставке, то решу за тебя.

CAF>Сдается мне, что ты из тех, кто отсеивается подобными задачками... И очень за это на всех обижен. Другого объяснения я не вижу. Для всех остальных — это просто вопрос, не заслуживающий горячего обсуждения.


Я из тех, для кого собеседование — двусторонний процесс. И если мне с порога задают такие вопросы — значит, уровень того, кто меня собеседует достаточно низок. Значит, я не хочу, чтобы он был моим коллегой и тем более руководителем. У меня не резиновое время. И да — даже не помню, встречал ли подобную глупость за последние годы.
Re[9]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 30.10.18 07:52
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Для таких людей следуя твоей логике все "некорректно".


IT>Нет. Есть элементарные психологические практики. Даже девочки-психологи в курсе них, но ты даже не задался вопросом о их существовании. В силу отсутствия инженерной культуры.


CAF>>Завалить??? Я говорю о простейших задачах. Без подковырок, без подводных камней.


IT>Да, завалить на решении интегралов или диффуров. Можно даже на решении обычных уравнений.


Ты о чем??? Я не собирался никого заваливать.

CAF>>Раз уж ты знаешь, что я не умею этого делать.


IT>Я должен выполнять за тебя твою работу? Если готов оплатить по x2 ставке, то решу за тебя.


Ты сказал, что я что-то делаю неправильно. Почему и как правльно не сказал. И что теперь?

CAF>>Сдается мне, что ты из тех, кто отсеивается подобными задачками... И очень за это на всех обижен. Другого объяснения я не вижу. Для всех остальных — это просто вопрос, не заслуживающий горячего обсуждения.


IT>Я из тех, для кого собеседование — двусторонний процесс. И если мне с порога задают такие вопросы — значит, уровень того, кто меня собеседует достаточно низок. Значит, я не хочу, чтобы он был моим коллегой и тем более руководителем. У меня не резиновое время. И да — даже не помню, встречал ли подобную глупость за последние годы.


Ну времени писать на форуме тебе хватает. В общем, кроме балабольства ничего не вижу

И да, конечно, ты уже готов оценить мой уровень Ну давай, продолжай, я с удовольствием почитаю твое авторитетное мнение
Re[10]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 30.10.18 08:19
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Ты о чем??? Я не собирался никого заваливать.


Иного смысла задавать такой вопрос нет.

CAF>Ты сказал, что я что-то делаю неправильно. Почему и как правльно не сказал. И что теперь?


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

CAF>Ну времени писать на форуме тебе хватает. В общем, кроме балабольства ничего не вижу


Ты будешь мне указывать, как мне соблюдать режим отдыха и работы?
Re[11]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 30.10.18 08:29
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Ты о чем??? Я не собирался никого заваливать.


IT>Иного смысла задавать такой вопрос нет.


Ты серьезно думаешь, что перевернуть строку или список — это вопроос завалить кого-то?? А что вообще программист должен уметь?

CAF>>Ты сказал, что я что-то делаю неправильно. Почему и как правльно не сказал. И что теперь?


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


А ты лучше меня знаешь мою реальность????

CAF>>Ну времени писать на форуме тебе хватает. В общем, кроме балабольства ничего не вижу


IT>Ты будешь мне указывать, как мне соблюдать режим отдыха и работы?

Тут ты прав, делай что хочешь.
Re[13]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 30.10.18 23:17
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Тё>>Есть лишние буквы. Так короче:

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

Тё>>Node *prev = 0;
Тё>>while(head) {
Тё>>  Node *next = head.next;
Тё>>  head.next = prev;
Тё>>  prev = head;
Тё>>  head = next;
Тё>>}
Тё>>return prev;
Тё>>}
Тё>>


BFE>Короче-то, оно, короче, только не скомпилируется и стиль дурной.


Не хватает говнеца?

Тё>>Опять много буков и зачем-то две функции вместо одной.

BFE>Зато в два раза эффективней по памяти и несколько эффективней по скорости.
Хватит бредить.
Re[7]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 31.10.18 01:13
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Можно любого человека завалить на школьной программе.

Можно напомнить школьную формулу, если подзабылось, а дальше пусть закодит эту формулу.

IT>Собеседование — в том числе инженерная задача. Если ты ее пытаешься решить таким способом, то не умеешь решать задачи. Быть может умеешь гномиков решать или переворачивать строку, а решать инженерные задачи — нет.

Это же максимально простая задача, цель не завалить сразу, а протестировать уровень. Следующий вопрос будет чуть сложнее и так пока не наступит предел компетенции соискателя. Если соискатель завалился в самом низу сложности- то о каких качествах инженера можно говорить?
Re[10]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 31.10.18 05:43
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Гм, похоже эти вопросы ещё замечательно отсеивают примадонн.


Т.е. человек устроил из собеседования — экзамен, а я еще примадонна? Замечательная логика у вас.
Re[11]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 31.10.18 06:12
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Т.е. человек устроил из собеседования — экзамен, а я еще примадонна? Замечательная логика у вас.


Безотносительно того что тут Артёмка устраивает кардебалет и чешет свои личные комплексы — моя логика простая: если кандидат на интервью на простейший разминочный вопрос ответить настолько впадлу (АКА "И если мне с порога задают такие вопросы — значит, уровень того, кто меня собеседует достаточно низок"), что он потом устроит когда ему выпадет разобраться в вроде бы до банальности простом но доставляющим геморрой кастомерам баге?

У этой задачи нет какого то "ultimate правильного решения", это всего лишь повод поговорить над предложенным вариантом решения и оценить инженерное мышление кандидата.
Артёмка просто утянул классическую задачку у "старших товарищей" и не имея понимания что в этой задаче к чему начал додумывать в меру своего понимания: "а теперь догадайся что я хочу чтоб ты написал через XOR/индексы/whatever".
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 31.10.18 06:27
Оценка:
Здравствуйте, IncremenTop, Вы писали:

IT>Так будет потрачено все время неэффективно с максимально глупым подобием на экзамен.

Практика показывает что таки нет.

IT> Если у вас не расписаны компетенции и в принципе план собеседования, то в принципе попытки рассуждать о чуть сложнее или легче — унылы.

Please!
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[9]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 31.10.18 06:41
Оценка:
Здравствуйте, IncremenTop, Вы писали:

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


Тё>>Можно напомнить школьную формулу, если подзабылось, а дальше пусть закодит эту формулу.


IT>Т.е. ты сможешь решить интеграл сходу?


Тё>>Это же максимально простая задача, цель не завалить сразу, а протестировать уровень. Следующий вопрос будет чуть сложнее и так пока не наступит предел компетенции соискателя. Если соискатель завалился в самом низу сложности- то о каких качествах инженера можно говорить?


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


Но как более правильно, ты естественно не расскажешь. У тебя 1000 причин для отмазки найдется. Я угадал?
Re[9]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 31.10.18 07:04
Оценка:
Здравствуйте, IncremenTop, Вы писали:

Тё>>Можно напомнить школьную формулу, если подзабылось, а дальше пусть закодит эту формулу.


IT>Т.е. ты сможешь решить интеграл сходу?

Собеседование на программиста. Если бы на инженера или кванта- конечно должен был решить интеграл сходу.

Тё>>Это же максимально простая задача, цель не завалить сразу, а протестировать уровень. Следующий вопрос будет чуть сложнее и так пока не наступит предел компетенции соискателя. Если соискатель завалился в самом низу сложности- то о каких качествах инженера можно говорить?


IT>Так будет потрачено все время неэффективно с максимально глупым подобием на экзамен.

А смысл начинать сразу с нормального вопроса? Спросить сначала про radix sort и потом про перевернуть строку?

IT> Если у вас не расписаны компетенции и в принципе план собеседования, то в принципе попытки рассуждать о чуть сложнее или легче — унылы.

Я накидал из головы список вопросов за 10 минут- из того, что я бы ответил, не задумываясь. И их начиная с самого лёгкого пытался задавать. Но кандидат на первом же вопросе входит в ступор.
Re[10]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 31.10.18 07:19
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


Тё>>>Можно напомнить школьную формулу, если подзабылось, а дальше пусть закодит эту формулу.


IT>>Т.е. ты сможешь решить интеграл сходу?

Тё>Собеседование на программиста. Если бы на инженера или кванта- конечно должен был решить интеграл сходу.

Угу, прямо таки сходу порешать все интегралы, включая неберущиеся

Тё>>>Это же максимально простая задача, цель не завалить сразу, а протестировать уровень. Следующий вопрос будет чуть сложнее и так пока не наступит предел компетенции соискателя. Если соискатель завалился в самом низу сложности- то о каких качествах инженера можно говорить?


IT>>Так будет потрачено все время неэффективно с максимально глупым подобием на экзамен.

Тё>А смысл начинать сразу с нормального вопроса? Спросить сначала про radix sort и потом про перевернуть строку?

Ты же задал сначала задачу кандитате, а только потом создал тему "Зачем просят перевернуть строку на интервью?"
Может ты все в обратном порядке делаешь, кто знает

IT>> Если у вас не расписаны компетенции и в принципе план собеседования, то в принципе попытки рассуждать о чуть сложнее или легче — унылы.

Тё>Я накидал из головы список вопросов за 10 минут- из того, что я бы ответил, не задумываясь. И их начиная с самого лёгкого пытался задавать. Но кандидат на первом же вопросе входит в ступор.

Кидай сюда свой поток сознания, пусть IncremenTop выпадет в осадок, от того как в Австралии людей пытают
Re[12]: Зачем просят перевернуть строку на интервью?
От: IncremenTop  
Дата: 31.10.18 07:56
Оценка:
Здравствуйте, CreatorCray, Вы писали:


CC>Безотносительно того что тут Артёмка устраивает кардебалет и чешет свои личные комплексы — моя логика простая: если кандидат на интервью на простейший разминочный вопрос ответить настолько впадлу (АКА "И если мне с порога задают такие вопросы — значит, уровень того, кто меня собеседует достаточно низок"), что он потом устроит когда ему выпадет разобраться в вроде бы до банальности простом но доставляющим геморрой кастомерам баге?


Кандидат тоже оценивает работодателя. Мне бы просто жаль было бы тратить время с обоих сторон на такую лажу. И я при собеседовании никогда не просил ни гомиков перемножать, ни матрицы, ни переворачивать — за час вполне можно другими вопросами оценить компетенцию, а больше собеседование по времени — просто не целесообразно.

CC>Артёмка просто утянул классическую задачку у "старших товарищей" и не имея понимания что в этой задаче к чему начал додумывать в меру своего понимания: "а теперь догадайся что я хочу чтоб ты написал через XOR/индексы/whatever".


Вангую, что Артемка, как акын — что видит, то и поет. Судя по моему опыту — многие начинают извращаться, особенно желая опустить планку зп.
Re[14]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 31.10.18 08:35
Оценка:
Здравствуйте, Тёмчик, Вы писали:

BFE>>Короче-то, оно, короче, только не скомпилируется и стиль дурной.

Тё>Не хватает говнеца?
Это вы о чём?

Тё>>>Опять много буков и зачем-то две функции вместо одной.

BFE>>Зато в два раза эффективней по памяти и несколько эффективней по скорости.
Тё>Хватит бредить.
Т.е. вы даже не догадываетесь сколько памяти уходит на хранение временных переменных на стеке при рекурсивном вызове?
И каждый день — без права на ошибку...
Re[15]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 31.10.18 09:09
Оценка:
Здравствуйте, B0FEE664, Вы писали:

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


BFE>>>Короче-то, оно, короче, только не скомпилируется и стиль дурной.

Тё>>Не хватает говнеца?
BFE>Это вы о чём?

Тё>>>>Опять много буков и зачем-то две функции вместо одной.

BFE>>>Зато в два раза эффективней по памяти и несколько эффективней по скорости.
Тё>>Хватит бредить.
BFE>Т.е. вы даже не догадываетесь сколько памяти уходит на хранение временных переменных на стеке при рекурсивном вызове?
Так это ж ты же и привел пример рекурсии
Re[16]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 31.10.18 09:24
Оценка:
Здравствуйте, 0xCAFEDEAD, Вы писали:

CAF>Так это ж ты же и привел пример рекурсии


В моей рекурсии расход памяти в два (или в полтора, зависит от компилятора) раза меньше, чем в рекурсивной версии Тёмчика.
И каждый день — без права на ошибку...
Re[17]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 31.10.18 09:31
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, 0xCAFEDEAD, Вы писали:


CAF>>Так это ж ты же и привел пример рекурсии


BFE>В моей рекурсии расход памяти в два (или в полтора, зависит от компилятора) раза меньше, чем в рекурсивной версии Тёмчика.


Понял, не доглядел деталей.
Re[20]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 31.10.18 13:41
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>

SVZ>Смотрите "Как выполнить инверсию отдельных слов в объекте класса std::string" по ссылке http://cpp.forum24.ru/?1-1-0-00000106-000-0-0

SVZ>ЗЫ. Может это кто-то из навечно забаненных?

Да это же Сыроежка!
И каждый день — без права на ошибку...
Re[21]: Зачем просят перевернуть строку на интервью?
От: Stanislav V. Zudin Россия  
Дата: 31.10.18 14:26
Оценка:
Здравствуйте, B0FEE664, Вы писали:

SVZ>>ЗЫ. Может это кто-то из навечно забаненных?


BFE>Да это же Сыроежка!


Силёёён! Я бы не нашел.
Вот Тарасевича помню (Человечищще!), а Сыроежка совсем не запомнился.
_____________________
С уважением,
Stanislav V. Zudin
Re[16]: Зачем просят перевернуть строку на интервью?
От: 0xCAFEDEAD  
Дата: 31.10.18 21:35
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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


BFE>>>>Короче-то, оно, короче, только не скомпилируется и стиль дурной.

Тё>>>Не хватает говнеца?
BFE>>Это вы о чём?
Тё>О том, что "дурной стиль" это отсутствие говнокода в сравнении с вашим вариантом.

Тё>>>>>Опять много буков и зачем-то две функции вместо одной.

BFE>>>>Зато в два раза эффективней по памяти и несколько эффективней по скорости.
Тё>>>Хватит бредить.
BFE>>Т.е. вы даже не догадываетесь сколько памяти уходит на хранение временных переменных на стеке при рекурсивном вызове?
Тё>Что вы прицепились к "хранение переменных на стеке". Погуглите tail recursion что-ли, если хотите деталей во что оно будет скомпилировано.

А увурен, что тут именно хвостовая рекурсия, и что раскрутится???? Ни шибко то похоже

Вот твой слегка подправленный пример(я не проверял работоспособность) и что-то не сходится у gcc/clang.

#include <stddef.h>

struct Node {
Node* next;
};

Node* reverse(Node* head, Node * reversedHead) {

if(head && head->next){
Node *reversedTail = reverse(head->next, reversedHead);
reversedTail->next = head;
head->next = 0;
} else {
reversedHead = head;
}
return head;
}

====>

reverse(Node*, Node*): # @reverse(Node*, Node*)
pushq %rbx
movq %rdi, %rbx
testq %rdi, %rdi
je .LBB0_3
movq (%rbx), %rdi
testq %rdi, %rdi
je .LBB0_3
callq reverse(Node*, Node*)
movq %rbx, (%rax)
movq $0, (%rbx)
.LBB0_3:
movq %rbx, %rax
popq %rbx
retq
Re[16]: Зачем просят перевернуть строку на интервью?
От: B0FEE664  
Дата: 31.10.18 21:40
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>О том, что "дурной стиль" это отсутствие говнокода в сравнении с вашим вариантом.

Объявление переменной внутри цикла — дурной стиль.

Тё>Что вы прицепились к "хранение переменных на стеке". Погуглите tail recursion что-ли, если хотите деталей во что оно будет скомпилировано.


Ну и где у вас tail recursion?
И каждый день — без права на ошибку...
Re[17]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 31.10.18 22:50
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Тё>>О том, что "дурной стиль" это отсутствие говнокода в сравнении с вашим вариантом.

BFE>Объявление переменной внутри цикла — дурной стиль.
Чта?

Тё>>Что вы прицепились к "хранение переменных на стеке". Погуглите tail recursion что-ли, если хотите деталей во что оно будет скомпилировано.


BFE>Ну и где у вас tail recursion?

Давайте я соглашусь, что передавать указатель вторым аргументом было плохая идея- а вы согласитесь, что reverse2- плохое название. И эти ваши pHead, pNext, "обьявление переменной снаружи цикла" да и вообще склонность к многострочию не оч хорошо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.