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[10]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 12.10.18 23:58
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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

Уууу, включился классический Артёмка: дрочим на фишку, не понимая её смысла.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
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]: Зачем просят перевернуть строку на интервью?
От: Тёмчик Австралия жж
Дата: 13.10.18 02:19
Оценка: -3
Здравствуйте, IID, Вы писали:

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


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

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

В условии не выделять память под временную переменную ничего не сказано про «работу компилятора и процессора». Попытка отписавшихся тут замаскировать собственную профнепригодность «компилятор за меня всё сделает», на собеседовани выглядит жалко.
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[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[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[7]: Зачем просят перевернуть строку на интервью?
От: Somescout  
Дата: 13.10.18 08:31
Оценка: -2
Здравствуйте, Somescout, Вы писали:

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


Несогласные: на вход функция принимает итераторы, которые могут находиться в любом состоянии, у функции нет контракта чтобы левый итератор был строго в начале строки, а правый — в конце. Соответственно для null-terminated string, либо если BiDirectionalIterator инициализирован за концом обычной строки — всё отработает нормально. Но в произвольном случае будет ошибка. Если не прав — с интересом выслушаю вашу версию.
ARI ARI ARI... Arrivederci!
Re[8]: Зачем просят перевернуть строку на интервью?
От: CreatorCray  
Дата: 13.10.18 08:50
Оценка:
Здравствуйте, Somescout, Вы писали:

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

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

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


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

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

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

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