Здравствуйте, Паблик Морозов, Вы писали: ПМ>Здравствуйте, Mr.Cat, Вы писали: ПМ>Причем здесь мнение википедии? Человек или обладает системными знаниями, или нет. Типы и структуры данных — это то, с чего начинается изучение программирования в школах и институтах.
А при чем здесь системные знания? Допустим, я иду на собеседование, допустим, на джава-разработчика. То, что имеет в джаве конкретное значение (списки, ссылки и т.п.) я в этом значении и понимаю. Какое мне дело до чьих-то системных знаний?
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, alzt, Вы писали:
A>>>List в Java это массив, а не список. В списке, например, операция получения размера линейно зависит от времени, поэтому её обычно не реализуют.
GIV>>В Java List бывает и на основе массива и на основе связанного списка. Впрочем сложность size() в обоих случаях O(1).
A>На основе списка — это не список.
java.util.LinkedList это не список? Глубокомыслено.
A>Как реализуется size() за O(1)? Надо как минимум хранить размер списка дополнительно, а это уже не похоже на классический список.
Это не отменяет необходимости знать как реализована та или иная структура данных в стандартной библиотеке используемого языка.
A>Плюс у List есть произвольный доступ к элементам. Как это быстро и эффективно реализовать в виде связанного списка? Всё равно какая-то вариация на тему массива будет.
Никто и не обещал доступ по индексу за O(1) у LinkedList. Это тоже надо знать.
WBR, Igor Evgrafov
Re[9]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
>> Да я и не утверждаю, что это ненормально. Меня удивило, что, >> оказывается, большое кол-во соискателей не в состоянии даже на такую >> элементарщину ответить. V>Ничего себе элементарщина...
Численно посчитать интеграл?! Вы в каком классе учетесь уважаемый? В моей далеко не самой продвинутой школе интегралы проходили в 9 классе.
>> Неужели? V>Да. Если нужен программист, который хорошо знает математику в некоторой V>области, то и говорить надо по этой области. Но, простыми задачками V>ничего не выяснишь. Просто надо выяснить, насколько устойчиво человек в V>этой области себя чувствует или плавает сильно — а это беседа.
А если нужен человек, от которого нужно знание математики хотя бы в рамках школьного курса? Тоже ничего не дает?
Re[5]: Задача на собеседовании - обращение списка.
24.02.2012 15:04, Паблик Морозов пишет: > А пока от программистов требуется умение писать хороший, > понятный и эффективный код для эффективного менеджера.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Но как-то они же работали на предыдущих работах несколько лет?
значит плохо работали, если не могут решить задачи про задачи про переливание воды, цветные шары и особенно про гномов в кепках. Может у них вообще какие устарелые и невостребованные скизлы типа С++, а про гномиков — не знают.
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Паблик Морозов, Вы писали:
GIV>>>Да, че там. За каждый ответ на собесодовании надо платить! По типу «Кто хочет стать миллионером?» ПМ>>Боюсь тогда большинство людей будут приходить на собеседование ради самого процесса, а не ради того, чтобы усроиться на работу.
BFE>А разве в «Кто хочет стать миллионером?» не берут деньги за первые 10 вопросов ещё до попадания кандидата в студию?
Я как-то всегда начинал смотреть с момента попадания кандидата в студию
WBR, Igor Evgrafov
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, UA, Вы писали:
UA>И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка.
Зачем так сложно? Достаточно пробежаться от начала списка к концу и подобавлять элементы в начало нового списка. Методы для этого в std:list есть (push_front), специально посмотрел.
Re[7]: Задача на собеседовании - обращение списка.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Почему-то все считают, что структуры данных ограничены стандартной библиотекой, предоставляемой языком. Паралич мышления?
Блин. Типа того . Точно паралич мышления
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Ты еще спроси как деревья балансировать. Это надо хорошо разбираться в структурах данных и алгоритмах. Большинство разработчиков работают на более высоком уровне абстракции и навык теряется, даже если люди знают. Это примерно как быстрая сортировка.
ПМ>Чтобы деревья балансировать, надо действительно алгоритм знать, сам человек его за пять минут не изобретёт.
А чем разворот списка хуже?
ПМ>Быстрая сортировка — примитивнейший алгоритм, если человек его хоть раз в жизни видел, то напишет без проблем.
Далеко не каждый способен "за 5 минут" написать алгоритм, который "видел хоть раз в жизни".
Я вот уверен что большинство сходу не напишет поиск максимальной подпоследовательности за O(n), хотя почти все его видели.
Или например выбор N случайных элементов из массива.
Потому что это сложные алгоритмы, как и разворот списка на месте. Правильная их реализация не совпадает с наивной. Оптимизированная быстрая сортировка — тоже.
Хотя если не знает, о чем речь, то может и не написать (хотя незнание алгоритма быстрой сортировки — тоже хреновый показатель).
G>>А ты опиши задачу так чтобы предметная область не требовалась. Что бы вы не делали — все сводится к набору структур данных, алгоритмов и используемых библиотек. ПМ>Вот я и предложил одну из самых примитивных структур данных и один из самых примитивных алгоритмов над ней. Если это не может, в чём смысл давать что-то сложнее?
Есть смысл давать что-то что ближе к реальной задаче
Еще раз повторю что разворот списка не пишут. Ты наверное и сам его в production не писал ни разу.
G>>Это ты думаешь что проще, а на деле не проще. Потому что требует знаний, которые люди не используют каждый день. ПМ>каких знаний требует задача обращения списка??
Больших как ни странно.
G>>Она также на 50% "эффективна" в другую сторону, то есть отсеивает тех, кого не должна. ПМ>Это кого, например?
Это например тех кто не гуглил перед собеседованием вопросы и не умеет соображать быстро в стрессовой ситуации. Среди них кстати могут быть и очень хорошие специалисты.
Re[7]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, UA, Вы писали:
UA>>С голыми списками работают только на первом курсе университета чтобы понять как оно работает но в реальной работе велосипедостроение не приветствуется.
ПМ>Понятно, что не приветсвуется, я же написал, что задача нужна только для того, чтобы проверить, сможет ли человек написать примитивный алгоритм. Ведь давать реальные задачи невозможно по вполне очевидным причинам.
Значит вам нужно искать студента в которого это свежо в памяти, люди с опытом сразу детектят ваш быдлоподход к делу/людям и возможно спецом валят задание чтобы поскорее от вас уйти.
Re[6]: Задача на собеседовании - обращение списка.
, совсем недавно,
3) Андрей Орлов, "Записки автоматизатора. Профессиональная исповедь", глава "HR",
4) Фил Портер, "Искусство корпоративной политики",
5) Виктор Дольник, "Непослушное дитя биосферы", глава "Правила знакомства".
и т.д. и т.п.
У вас официальный приём. Вы легко можете "разболтать" соискателя (его обманывать не надо — он сам обманываться рад) и подкинуть ему задачку из той области, где он работал последние несколько лет. Ну не обращает он списки. Зато, может, вы узнаете, что он SQL-запросы с группировками умеет составлять и тем был бы полезен.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, kaa.python, Вы писали:
KP>>Кого ищите то? Те же плюсисты, обычно, решают в лет. У разработчиков более высокоуровневых языков часто вызывает проблемы, сам не знаю почему.
ПМ>C#/Java. Среди программистов на C#/Java больше идиотов (может и правда плюсистов брать и переучивать)?
Не стоит. Тогда будет еще больше идиотов.
Re[10]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>2. Если сраз нафиг, то как грамотно построить интервью, чтобы дать эту задачу в самом начале, не слишком сильно человека шокировав, и распрощаться втечение пяти минут, не слишком обидев?
А вы можете её сами написать за 5 минут? Я вот по часам засекал, за 12 минут вот такой результат:
Здравствуйте, UA, Вы писали:
UA>Значит вам нужно искать студента в которого это свежо в памяти, люди с опытом сразу детектят ваш быдлоподход к делу/людям и возможно спецом валят задание чтобы поскорее от вас уйти.
А что такого быдланского в этом подходе? Как еще отсеять людей, котыре не могут писать код, не нагружая их многочасовыми тестовыми задачами?
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, UA, Вы писали:
UA>>И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка.
L>Зачем так сложно? Достаточно пробежаться от начала списка к концу и подобавлять элементы в начало нового списка. Методы для этого в std:list есть (push_front), специально посмотрел.
Можна и так согласен.
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
V>24.02.2012 14:57, Паблик Морозов пишет:
>> На такие вакансии мы кандидатов по сайтам резюме не ищем, для этого >> существуют другие каналы. V>9 из 10 кандидатов на вакансию, бла-бла-бла. Это не твой пост самый V>первый в этой теме?
Я же написал >немного выше, если отсортировать вакансии с HH по зарплате и пропустить жöлтенькие
Ты написал про 500 т.р. Я ответил, что на вансии с з.п. 500 т.р. мы кандидатов на публичных сайтах вакансий не ищем.
Re[8]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, gandjustas, Вы писали:
G>>>>Это задача дается для проверки понимания как алгоритмы отображаются на конкретные особенности системы типов и рантайма. L>>>Чего?
G>>Ну напиши работающий код, который string в C# разворачивает.
В haskell всегда была. В .NET она IEnumerable<char>, что есть тоже список, но не "односвязный линейный список".
L>1. Давно ли строка стала списком? L>2. L>
L>var sb = new SringBuilder(s.Length);
L>for (int i = s.Length-1; i >=0; i--)
L>{
L> sb.Append(s[i]);
L>}
L>return sb.ToString();
L>
L>или перегнать в char[], перевернуть массив и построить новую строку.
L>Зачем тут рекурсия? Причем тут особенности системы типов и рантайма?
Рекурсия для списков, а не для строк C#.
А в своем коде ты используешь довольно много знаний о рантайме .NET. Например то что string — immutable, и то что множество манипуляций с immutable строками работает медленно. Поэтому для начала строку надо привести к какой-либо mutable структуре, а потом уже проводить манипуляции.
Просто у тебя эти знания уже в подкорку головного мозга забились, как разворот линейного односвязного списка у некоторых.
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, gandjustas, Вы писали:
ПМ>>>Почему 9 из 10 соискателей не могут её решить? Причём у людей минимум от 3-х лет опыта разработки, позиционируют они себя, как сеньёр-девелоперы, ЗП вроде конкурентноспособная (немного выше, если отсортировать вакансии с HH по зарплате и пропустить жöлтенькие).
G>>Потому что это задача не практическая, как и программирование сортировки. Все уже давно в либах есть и на практике никогда (в смысле вообще никогда) не приходится её писать.
SVZ>Ну задача самая, что ни на есть практическая.
Да ну?
SVZ>Приходилось использовать разворот списка в боевом проекте.
Сколько раз? Много таких?