24.02.2012 13:23, Паблик Морозов пишет:
> Но это в месяц.
Мало. Если у тебя такие задачи на собеседовании то, тыс на 500 (р.р.) в
месяц может быть и соглашусь, за меньшее в подобную контору даже не сунусь.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, Ахмед, Вы писали:
А>А почему у вас в организации принимают решения "годен" или "негоден" на основе попадания в шаблонное решение для одной задачи? Не следует ли такого интервьюера уволить?
Где я такое писал?
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, Ахмед, Вы писали:
А>Может хватит превращать этот форум в троллоферму? Тут почти каждый месяц создаются топики "почему кандидаты не могут решить простую задачу?" и "почему интервьюеры задают задачи, дико оторванные от реальной жизни?". ИМХО и то и другое — отсутствие опыта проведения/прохождения собеседований и жизненного опыта вообще.
Потому, что решение задач из реальной жизни занимает сильно больше времени. Это как минниммум. Можно давать тестовые задания на дом но тут уже неоднократно поднимали срач на эту тему. И да, в небольших компаниях нет профессиональных интервьеров. У меня тупо нет времени и объема чтоб прокачать эти скилы, набрать статистику кореляции отвеченных/не отвеченных вопросов и оценки реальной работы.
WBR, Igor Evgrafov
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, GarryIV, Вы писали:
A>>List в Java это массив, а не список. В списке, например, операция получения размера линейно зависит от времени, поэтому её обычно не реализуют.
GIV>В Java List бывает и на основе массива и на основе связанного списка. Впрочем сложность size() в обоих случаях O(1).
На основе списка — это не список.
Как реализуется size() за O(1)? Надо как минимум хранить размер списка дополнительно, а это уже не похоже на классический список.
Плюс у List есть произвольный доступ к элементам. Как это быстро и эффективно реализовать в виде связанного списка? Всё равно какая-то вариация на тему массива будет.
Re[6]: Задача на собеседовании - обращение списка.
24.02.2012 13:30, Lloyd пишет:
> Меня однажды спросили про то, как интеграл численно считается.
Если ты шел на контору, где это нужно по работе, то нормально. Но,
честно, тоже вопрос идиотский. Ничего не проверяет и ничего не дает
собеседующему.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, elmal, Вы писали:
E>Такое б прокатило — или ошибка, no hire?
Не no hire, но близко к этому, потому что человек даже близко знает, что такое типы и структуры данных ( http://ru.wikipedia.org/wiki/список_(информатика) ). Давать таким ответсвенные задачи — опасно.
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, Ахмед, Вы писали:
А>А почему у вас в организации принимают решения "годен" или "негоден" на основе попадания в шаблонное решение для одной задачи? Не следует ли такого интервьюера уволить?
задача крайне сложна и оторвана от реальной жизни?
...coding for chaos...
Re[7]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
>> Меня однажды спросили про то, как интеграл численно считается. V>Если ты шел на контору, где это нужно по работе, то нормально.
Да я и не утверждаю, что это ненормально. Меня удивило, что, оказывается, большое кол-во соискателей не в состоянии даже на такую элементарщину ответить.
V>Но, V>честно, тоже вопрос идиотский. Ничего не проверяет и ничего не дает V>собеседующему.
Неужели?
Re[3]: Задача на собеседовании - обращение списка.
24.02.2012 13:36, Паблик Морозов пишет:
> А как тогда отсеять людей, не способных программировать?
Хотел высказаться жестче, но в баню можно отправиться. Отвечу по сути.
Попросите набросать (посвторю, набросать, именно набросать, а не писать
std::string) класс vector, matrix, string и обсудите с ним его решение
(интерфейс класса, работу с памятью,...).
Считаю самым лучшим способом собеседования расспросы о том, что было сделано на предыдущих местах работы и углубление по ходу в технические детали. Почему было принято такое решение? Как была решена вон та проблема, почему? И так далее. Но такой способ собеседования предъявляет серьёзные требования к собеседующему, т.к. он должен иметь хороший кругозор и свободно общаться на разные технические темы.
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, alzt, Вы писали:
A>Здравствуйте, GarryIV, Вы писали:
A>>>List в Java это массив, а не список. В списке, например, операция получения размера линейно зависит от времени, поэтому её обычно не реализуют.
GIV>>В Java List бывает и на основе массива и на основе связанного списка. Впрочем сложность size() в обоих случаях O(1).
A>На основе списка — это не список.
В Java List это вообще не структура данных, это интерфейс упорядоченного множества элементов.
A>Как реализуется size() за O(1)? Надо как минимум хранить размер списка дополнительно, а это уже не похоже на классический список.
Классического списка в стандартной библиотеке Java и вправду нет. Но он обычно и не нужен, нужна структура данных с O(1) вставкой/удалением в произвольную позицию, это LinkedList обеспечивает.
А в каком популярном языке программирования есть "классический" список? Чтобы прямо были prev/next, возможность делать всякие графы на их основе. Т.е., скажем, возможность сделать кольцевой список.
A>Плюс у List есть произвольный доступ к элементам. Как это быстро и эффективно реализовать в виде связанного списка? Всё равно какая-то вариация на тему массива будет.
Никто не обещал быстрый и эффективный доступ к элементам. Чудес не бывает, у LinkedList get имеет сложность O(N). Правда в этом конкретном случае мог бы и O(1) иметь, если бы хранил указатель на предыдущий запрошенный узел, но в Sun JDK этой оптимизации нет.
Re[3]: Задача на собеседовании - обращение списка.
24.02.2012 14:05, GarryIV пишет:
> Да, че там. За каждый ответ на собесодовании надо платить! По типу «Кто > хочет стать миллионером?»
Хорошая идея для ТС. Найдет именно тех, кто ему нужен.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не no hire, но близко к этому, потому что человек даже близко знает, что такое типы и структуры данных ( http://ru.wikipedia.org/wiki/список_(информатика) ). Давать таким ответсвенные задачи — опасно.
Специально ArrayList поставил, между прочим . Но, следует заметить, что реализация разворота списка именно на месте для связанного списка — это на порядок более серьезная ошибка, чем те 4 (а точнее 3.5 — именно для данного языка ArrayList ошибкой не является, так как возвращаю я интерфейс List), которые я привел в этом решении. Ибо квадратичная сложность на ровном месте — это что то. И думаю тот, кто вот такое написал, сделав 3.5 ошибки на бумажке, более достоин работать, чем тот, кто написал без единой ошибки циклы с тремя переменными с квадратичной сложностью. Ибо:
1) Запутанный код на ровном месте (3 переменные, цикл, деление интервала пополам — ошибиться элементарно);
2) Тормоза на ровном месте.
Лично я не могу себе представить ситуацию, когда я в продакшен в либы захреначу алгоритм с квадратичной сложностью, при этом написав более запутанный код.
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали: ПМ>http://ru.wikipedia.org/wiki/список_(информатика)
По-моему, глупо собеседовать по википедии. В конкретном языке "список" ("list") или любое другое понятие может иметь значение, не совпадающее с мнением википедии.
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, elmal, Вы писали:
E>Специально ArrayList поставил, между прочим . Но, следует заметить, что реализация разворота списка именно на месте для связанного списка — это на порядок более серьезная ошибка, чем те 4 (а точнее 3.5 — именно для данного языка ArrayList ошибкой не является, так как возвращаю я интерфейс List), которые я привел в этом решении. Ибо квадратичная сложность на ровном месте — это что то. И думаю тот, кто вот такое написал, сделав 3.5 ошибки на бумажке, более достоин работать, чем тот, кто написал без единой ошибки циклы с тремя переменными с квадратичной сложностью. Ибо: E>1) Запутанный код на ровном месте (3 переменные, цикл, деление интервала пополам — ошибиться элементарно); E>2) Тормоза на ровном месте. E>Лично я не могу себе представить ситуацию, когда я в продакшен в либы захреначу алгоритм с квадратичной сложностью, при этом написав более запутанный код.
Квадратичная сложность в развороте связного списка? Ты чего-то путаешь. O(N).
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, alzt, Вы писали:
A>Этот подход хорош тем, что он позволяет объективно оценить кандидатов.
Просто — согласен, но вот объективно... Я не буду спорить — такой подход работает, но он ориентирован на отсев, а не на поиск. Про низкую его эффективность уже написано тонны постов на этом форуме, не вижу смысла снова это перетирать.
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, hrensgory, Вы писали:
H>>А как выглядит "правильное решение" этой задачи?
ПМ>Да никакого подвоха. Просто дан односвязный или двусвязный список, и надо его обратить (развернуть указатели на элементы), или как-нибудь поменять элементы местами (я обычно делаю небольшие вариации, чтобы не заучивали). Алгоритм — цикл на 4-5 строчек. Никаких специальных знаний не требуется. Можно и с рекурсией написать, если человеку так удобнее, но за этим последуют дополнительные вопросы. Переворот строки — из той же серии, просто я её уже не дают, поскольку уже не все помнять, что такое null-terminated строки и как писать на Си, а на джаве или сишарпе её писать не интересно.
И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка. Чтобы менять указатели между елементами нужен доступ к внутренней структуре хранения списка: type* next; type* prev; но что то не припомню чтобы STL давал доступ к таким вещам возможно из-за того чтобы не привязывать разработчика к конкретной реализации списка.
Re[4]: Задача на собеседовании - обращение списка.