Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, batu, Вы писали:
L>>>Уже обсосали со всех сторон. Не надоело? L>>>P.S. Со связанным списком ненамного сложнее. B>>Я больше не буду Но разница все-таки есть..Молчу, молчу..
L>На разных платформах принята разная терминология. И это, кстати, тоже обсуждалось.
Значит задача поставлена не корректно! Вот в чем проблема собеседования
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Pyromancer, Вы писали:
M>>>>34 ? BFE>>>Я полагаю, что да. В 34-ом. BFE>>>Жаль, что Паблик Морозов так и не ответил.
P>>Это был бы правильный ответ, если бы он родился и правда в 1 году после. BFE> Как вы пришли к такому выводу?
P>>Только он взял и родился где-то между 2 и 7 до, в основном считается что в 4 году до рх и казнен был между 30 и 36. BFE> А вам не кажется, что этот ваш ответ похож на большинство ответов про обращение списка? Вы же не смогли ответить на элементарный вопрос...
Если задача сформулирована как "a оберните мне список" без определений что такое в этом случае список и что такое обернуть то да, наверняка. Возможно что вопрос как раз на это и если без уточнения условий хоть кандидат стал кидать понты что это не нужно, хоть начал писать код, все одно завалил вопрос.
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, batu, Вы писали:
L>>Какая рекурсия?! Тупо цикл от начала до середины с перествалением i-того от начала элемента с i-м с конца. B>Список и строки это разные вещи.. Чуток разница есть..
открываем Кнута или Дейкстру или Вирта, лень лезть уточнять, и обнаруживаем что список — это суть массив в котором на i месте лежит индекс следующего элемента, а на i+1 — ссылка на данные. Ну а строка всегда была массивом в котором по 0 индексу хранится длинна
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, jhfrek, Вы писали:
J>Здравствуйте, batu, Вы писали:
L>>>Какая рекурсия?! Тупо цикл от начала до середины с перествалением i-того от начала элемента с i-м с конца. B>>Список и строки это разные вещи.. Чуток разница есть..
J>открываем Кнута или Дейкстру или Вирта, лень лезть уточнять, и обнаруживаем что список — это суть массив в котором на i месте лежит индекс следующего элемента, а на i+1 — ссылка на данные. Ну а строка всегда была массивом в котором по 0 индексу хранится длинна
Я не вижу что в этой теме обсуждать.. Уже не рад что влез.. Сори.
Re[7]: Задача на собеседовании - обращение списка.
29.03.2012 16:27, Pyromancer написал:
> Если задача сформулирована как "a оберните мне список" без определений > что такое в этом случае список и что такое обернуть то да, наверняка. > Возможно что вопрос как раз на это и если без уточнения условий хоть > кандидат стал кидать понты что это не нужно, хоть начал писать код, все > одно завалил вопрос.
Тут что одни школьники и студенты собрались? Собеседования ты как
экзамен воспринимаешь?
Описанный тобой выше вариант наводит на мысль о том, что на конторе
отсутсвуют постановки задач. Нада тебе такая контора или нет — сам решай.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
V>29.03.2012 16:42, minorlogic написал:
>> >> Что вы этим термином называете ? V>Программировать — писать программы на языках программирования.
Постарайтесь более полно передать ваше определение.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, Сыроежка, Вы писали:
С>>Все подобные задачи выдумывают люди, которые на самом деле не являются программистами, или по крайней мере очень слабые программисты, и наивно думают, что программисты решают какие-то заковыристные задачи на работе. С>>Я вас разочарую, но в 99% работа программистов не связана с решение каких-либо логичесаких головоломок. Работа программистов вообще не в этом состоит! Работа программистов состоит в написании грамотного, легко читаемого кода!
SVZ>Вот что меня удивляет, так это то, что сейчас принято свое невежество преподносить как удаль. Взгляните на любое обсуждение собеседований, обязательно найдется дюжина-другая сообщений в этом стиле. SVZ>"Я, мол, необразованный, я таких задач не решаю и не умею решать, я этого ни разу не стесняюсь и даже книжку в руки не возьму, я — герой".
SVZ>Да, есть задачи, где достаточно мышкой контролы таскать на форму. И это работа программиста. SVZ>В моем проекте такому программисту работы не найдется (у П.Морозова — тоже). Но найдется в другом проекте. Ничего страшного нет. SVZ>Все найдут себе и работу, и работников по вкусу
Это как раз говорит о важем личном невежестве и не понимание работы программиста! Самое страшное — это когда проект возглавляют дураки, которые сами по жизни на самом деле никогда не были профессиональными прогораммистами, и именно поэтому полезли менеджерами проекта!
Если бы вы были хоть чуточку умнее, то понимали, что в проекте существует коллективный разум! Один может в данный момент решить одну задачу, а другой в другой момент — другую задачу. У одного человека голова может быть забита одним, а у другого — другим. И квалификация программиста не зависит от того, ответил ли он в данную минуту на ваш идиотский вопрос!
А если бы вы были еще умнее, то понимали, что программистов ставит в ступор такие задачии, так как они не видят в них никакого смысла! Если эта задача распространенная, тоу любого программиста возникает естественный вопрос, а почему тогда в библиотеки еще нет нужного интерфейса или алгоритма?! А если на практике эта задача не распространенная, то заяем тратить на нее время?
Но вы же не в состоянии это поянть! Как говорится, дуракам закон не писан! Они как с писаной торбой будут ко всем приставать со своей никчемной задачей, не понимая, что выглядят просто идиотами!
Я уже заметил закон жизни: чем человек менее профессионален, менее квалифицирован, то он обязательно лезет на верх по административной лестнице! Потому что для этого как раз нужны совершенно другие качества, а не профессионализм и квалификация!
Здравствуйте, msk78, Вы писали:
M>Здравствуйте, Vzhyk, Вы писали:
V>>24.02.2012 15:38, Паблик Морозов пишет:
>>> кандидатов на публичных сайтах вакансий не ищем. V>>В общем мы поняли, что не подходим друг другу. Чтобы сэкономить твое и V>>свое время было бы хорошо, чтобы ты озвучил контору, куда мне не следует V>>слать резюме. M>Могу дать ответ на этот вопрос M>Компания BrightConsult.
Оо.. имел я как-то дело с некоторыми людьми из числа тех. руководителей сией конторы. Под их началом никогда не стал бы работать
Re[4]: Задача на собеседовании - обращение списка.
Здравствуйте, Сыроежка, Вы писали:
С>Это как раз говорит о важем личном невежестве и не понимание работы программиста! Самое страшное — это когда проект возглавляют дураки, которые сами по жизни на самом деле никогда не были профессиональными прогораммистами, и именно поэтому полезли менеджерами проекта! С>Если бы вы были хоть чуточку умнее, то понимали, что в проекте существует коллективный разум! Один может в данный момент решить одну задачу, а другой в другой момент — другую задачу. У одного человека голова может быть забита одним, а у другого — другим. И квалификация программиста не зависит от того, ответил ли он в данную минуту на ваш идиотский вопрос! С>А если бы вы были еще умнее, то понимали, что программистов ставит в ступор такие задачии, так как они не видят в них никакого смысла! Если эта задача распространенная, тоу любого программиста возникает естественный вопрос, а почему тогда в библиотеки еще нет нужного интерфейса или алгоритма?! А если на практике эта задача не распространенная, то заяем тратить на нее время? С>Но вы же не в состоянии это поянть! Как говорится, дуракам закон не писан! Они как с писаной торбой будут ко всем приставать со своей никчемной задачей, не понимая, что выглядят просто идиотами! С>Я уже заметил закон жизни: чем человек менее профессионален, менее квалифицирован, то он обязательно лезет на верх по административной лестнице! Потому что для этого как раз нужны совершенно другие качества, а не профессионализм и квалификация!
Спасибо, за новый фильтр неадекватов.
Предлагаем кандидату обернуть список и смотрим на реакцию. Если глаза налились кровью, кандидат сжал кулаки и убежал хлопнув дверью, либо высказал похожую тираду — значит фильтр сработал.
Если серьезно — бывают ситуации, когда поиск библиотек не дал результатов либо существующие библиотеки не подходят по каким-либо причинам, либо стоят дорого, производительность не устраивает, либо архитектурно нецелесообразно подключать мощную библиотеку для решения небольшой но сложной задачи, и еще сотня причин, по которым придется решать "ничтожную" с вашей точки зрения задачу.
Если кандидат от такой задачи впадает в ступор — это больше его психологические проблемы.
С другой стороны, чтобы это не выглядело как экзамен, собеседующий мог бы прояснить контекст задачи: например "оборот списка используется в таком то алгоритме шифрования, давайте подумаем как можно его оптимально реализовать".
Если вы параноик — это еще не значит, что за вами никто не следит
Re[5]: Задача на собеседовании - обращение списка.
30.03.2012 9:52, c3p0 написал:
> С другой стороны, чтобы это не выглядело как экзамен, собеседующий мог > бы прояснить контекст задачи: например "оборот списка используется в > таком то алгоритме шифрования, давайте подумаем как можно его оптимально > реализовать".
И зачем там это надо?
Объясните хоть кто-то, зачем нужна задача обращения списка? Почему
нельзя пройти список с конца в начало? Или местное население уже дошло
до той стадии, когда знает только одно направление обхода?
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
V>И зачем там это надо? V>Объясните хоть кто-то, зачем нужна задача обращения списка? Почему V>нельзя пройти список с конца в начало? Или местное население уже дошло V>до той стадии, когда знает только одно направление обхода?
Вот зануда.
Вот тебе реальный пример использования этой задачи:
Графический редактор (САПР печатных плат).
Вершины полилинии хранятся в односвязном списке.
Односвязный список выбран по причине экономии памяти. Реализован односвязный список на базе массива (в качестве ссылки на следующий элемент списка используется индекс в массиве). Индекс вершины — ключевой атрибут, поэтому стандартный std::list, указатели и итераторы не годятся. Хранить вершины в массиве тоже не годится, т.к. при изменении числа вершин индексы поплывут.
При совпадении концов двух полилиний их нужно объединить в одну. Если соединяется "голова" с "головой" или "хвост" с "хвостом", то одну из полилиний нужно развернуть.
И вот здесь используется наш любимый разворот односвязного списка.
_____________________
С уважением,
Stanislav V. Zudin
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Может тогда Мастер расскажет, что позволено у него спрашивать на собеседовании?
Оххх. Никакого конструктива. Отправлю уж на общественный суд некоторый списочек, которого придерживаюсь.
Базовая:
1) О себе
2) Почему выбрали Java, какие сильные и слабые стороны ее, чего не хватает, какие еще языки знаете.
3) Как сами себя оцениваете, какой уровень, сколько опыта.
4) Какие наиболее интересные задачи доводилось решать, чем можете гордиться.
5) Какие навыки чаще всего были востребованы, кто такой хороший программист, что он должен знать.
Общее:
1) Какие парадигмы программирования поддерживает Java. Какой парадигме сами отдаете предпочтения
2) Можно ли писать в ООП стиле на Си?
3) Проектирование. SOLID, AOP. Декомпозиция, абстракция. Компромиссы, когда придерживаетесь рекомендуемых практик, когда нет.
4) Что такое мемоизация. Как будете делать на Java
5) Ajax — что такое. На уровне http
6) ESB, SOA — что такое.
7) Чем сервлет контейнер отличается от сервера приложений
Java
1) Исключения, бест практики, чекед и анчекед. Throwable — доводилось ли ловить, как отнесетесь, если в проекте будут ловить
2) Для чего переопределять хешкоды, каких практик придерживаетесь.
3) Приложение зависло, что будете делать, как будете определять. Дедлок, сталкивались ли на практике.
Фреймворки и БД
1) Стратегии наследования в хибернейт
2) Уровни изоляции транзакций
3) Базы данных, ОО базы. Нормализация, как относитесь, когда хорошо, когда плохо. Какие механизмы обновления структуры базы использовали.
4) Как будете решать проблемы с конкурирующим доступом к одним и тем же данным
5) Управление транзакциями, аспекты, как использовали, как они работают. Вложенные транзакции.
6) События в спринге — как относитесь, для чего применяются, применяли ли.
7) Как работают Lazy связи в hibernate. Разделение на слои типичного веб приложения, как особенности хибернейта влияют на архитектуру.
Опыт
1) Рефакторинг — как будете делать, какие бест практики выработали.
2) Тестирование — какие подходы применяли, какой по вашему должен быть процент покрытия тестами, фреймворки.
3) Какие паттерны применяли, когда паттерны хорошо, когда плохо.
4) Что такое хороший код, что плохой. Бест практики. Что видели самое страшное, что самое лучшее. Что делать, когда сроки жесткие и требуется все очень быстро.
5) Оптимизация по скорости. Что то тормозит — что будете делать. Кеши.
6) Что такое high load. Производительность — какие методы повышения производительности можете назвать.
Остальное:
Какие ресурсы регулярно посещаете. Какую книгу по специальности прочитали последний раз
Ну и в заключении — попросить высказать мнение о каком то куске кода, сказать предложения о его улучшении.
Правильных ответов на вопросы нет, главное не пороть откровенной чуши. Вопросы не экзаменационные — цель просто поговорить и поделиться опытом. Опыт может не совпадать, вопросы видоизменяются в этом случае, но суть не сильно меняется. Очень бы хотелось услышать какие новые для меня нестандартные подходы, но увы, умеющих обращать список на порядок больше тех, с кем интересно побеседовать — к сожалению к такому списку вопросов кандидаты совершенно не готовы. Типичный кандидат считает, что нужно кодить не думая, главное это знания языка и различных деталей, язык знает один — остальные от лукавого, уровень знания языка на уровне получения сертификата в лучшем случае. У кого формального опыта побольше — те давно уже не кодят, а типа водят руками и назначают таски между подчиненными-студентами, остаточных знаний чаще всего не густо, а последнюю книгу читали в институте (в лучшем случае читали доки по определенным технологиям). При этом внятно объяснить чем занимались не могут, в основном весь опыт — это багофиксинг системы 10летней давности, решений никаких не принимали и делали только то, что скажет заказчик. В лучшем случае из поводов для гордости, что процессы выстроили.
Re[7]: Задача на собеседовании - обращение списка.
30.03.2012 11:38, Stanislav V. Zudin написал:
> Вот зануда.
Обычный программист. По другому в нашей профессии нельзя. Хотя нонче уже
все можно.
> При совпадении концов двух полилиний их нужно объединить в одну. Если > соединяется "голова" с "головой" или "хвост" с "хвостом", то одну из > полилиний нужно развернуть.
Но если вы их объединяете в одну, зачем одну из них разворачивать.
Обойдите с конца в начало?
Posted via RSDN NNTP Server 2.1 beta
Re[8]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
>> При совпадении концов двух полилиний их нужно объединить в одну. Если >> соединяется "голова" с "головой" или "хвост" с "хвостом", то одну из >> полилиний нужно развернуть. V>Но если вы их объединяете в одну, зачем одну из них разворачивать. V>Обойдите с конца в начало?
Я специально отметил, что список _односвязный_, поэтому "с конца в начало" выливается в O(N^2).
Разве что воспользоваться дополнительным массивом, но это оверхед по памяти.
А разворот списка — операция линейная и без дополнительной памяти.
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: Задача на собеседовании - обращение списка.
Толковый список. Я надеялся, что michael_isu напишет что-то подобное.
E>
E>Общее:
E>4) Что такое мемоизация. Как будете делать на Java
E>5) Ajax — что такое. На уровне http
E>6) ESB, SOA — что такое.
E>7) Чем сервлет контейнер отличается от сервера приложений
E>Фреймворки и БД
E>1) Стратегии наследования в хибернейт
E>6) События в спринге — как относитесь, для чего применяются, применяли ли.
E>7) Как работают Lazy связи в hibernate. Разделение на слои типичного веб приложения, как особенности хибернейта влияют на архитектуру.
Однако среди общих вопросов есть и те, которые относятся к специфике твоих проектов. И правильно, а как иначе проверить, сможет кандидат выполнять свою работу или нет?
В проектах, где я участвовал, другая специфика, поэтому и вопросы по частностям немного другие.
E>Ну и в заключении — попросить высказать мнение о каком то куске кода, сказать предложения о его улучшении. E>Правильных ответов на вопросы нет, главное не пороть откровенной чуши. Вопросы не экзаменационные — цель просто поговорить и поделиться опытом. Опыт может не совпадать, вопросы видоизменяются в этом случае, но суть не сильно меняется. Очень бы хотелось услышать какие новые для меня нестандартные подходы, но увы, умеющих обращать список на порядок больше тех, с кем интересно побеседовать — к сожалению к такому списку вопросов кандидаты совершенно не готовы. Типичный кандидат считает, что нужно кодить не думая, главное это знания языка и различных деталей, язык знает один — остальные от лукавого, уровень знания языка на уровне получения сертификата в лучшем случае. У кого формального опыта побольше — те давно уже не кодят, а типа водят руками и назначают таски между подчиненными-студентами, остаточных знаний чаще всего не густо, а последнюю книгу читали в институте (в лучшем случае читали доки по определенным технологиям). При этом внятно объяснить чем занимались не могут, в основном весь опыт — это багофиксинг системы 10летней давности, решений никаких не принимали и делали только то, что скажет заказчик. В лучшем случае из поводов для гордости, что процессы выстроили.
Все верно, у многих богатое резюме, хотя, если судить по ответам, половина наврана. Умеющих, хотя бы на пальцах, рассказать, как перевернуть список — считанные единицы. Можно ли им поручить что-то посложнее? Не уверен, придется потом самому переписывать.
Даже языка, на котором пишут, толком не знают.
Здесь много раз выдвигался тезис, мол, зачем учить, когда все есть в гугле. Видимо, нам попадаются именно такие гуглопользователи — т.е. задачи решали разные, но глубина познаний — никакая. Т.е. не имеют ни малейшего представления, что происходит в их коде, чем чревато использование тех функций, которые они используют. Т.е. не удосужились даже страницу документации дочитать до конца. Гугл поможет, только если знаешь, что тебе надо, но забыл название или сигнатуру.
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, Vzhyk, Вы писали:
V>30.03.2012 9:52, c3p0 написал:
>> С другой стороны, чтобы это не выглядело как экзамен, собеседующий мог >> бы прояснить контекст задачи: например "оборот списка используется в >> таком то алгоритме шифрования, давайте подумаем как можно его оптимально >> реализовать". V>И зачем там это надо? V>Объясните хоть кто-то, зачем нужна задача обращения списка? Почему V>нельзя пройти список с конца в начало? Или местное население уже дошло V>до той стадии, когда знает только одно направление обхода?
Так в том-то и дело, что это — никчемная задача! То есть совершенно тупая задача, цель которой продемонстрировать, мол, какой интервьюир остроуминый.
естественно у любого программиста возникает вопрос, а зачем выбирали такую организацию данных, чтобы затем станвоиться в позу буквы "зю" и корячиться по совершенно не свойственному для этой организации данных алгоритму.
Весь каждый профессиональный программист, а этот c3p0 к ним никогда не относился и не относится хорошо понимает, что с каждой организацией данных связаны определенные алгоритмы. То есть не существуют сами по себе организации данных от тех алгоритмов, которые для нее предназначены.
Если бы этот c3p0 был хоть чуточку профессиоанльным программистом, и, например, когда-нибудь в жизни занимался проектированием баз аднных, то ззнал бы, что проектирование баз данных начинается с вопросов, какие запросы к этой ббазе данных будут выполняться. Отсюда и исходят при выборе организации базы данных. Если вы выбирраете организацию базы дданных, которая не эффективно выполняет ваши запросы, то это ошибка проектироващика.
Но это не дано понять c3p0. Ему главное — это продемонстрировать перед интервьюиром, какой он — умник/b]. Причем налицо [b]хамское отношение к собеседнику, Он почему-то наивно считает, что може задавать любые вопросы: идиотские или нет. С таким хамьем надо вести себя адекватно. Соглашаться с ним и в ответ говорить: "Хорошо, я решу вашу задачу. А вы решите мою задачу!" И посомтрите, как он себя поведет: хлопнет ли дверью или нет.
Как говорил один киногерой в фильме с участием со Шварцнеггером: "Я люблю умных людей, но не люблю умников."
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, Vzhyk, Вы писали:
V>>И зачем там это надо? V>>Объясните хоть кто-то, зачем нужна задача обращения списка? Почему V>>нельзя пройти список с конца в начало? Или местное население уже дошло V>>до той стадии, когда знает только одно направление обхода?
SVZ>Вот зануда. SVZ>Вот тебе реальный пример использования этой задачи:
SVZ>Графический редактор (САПР печатных плат). SVZ>Вершины полилинии хранятся в односвязном списке.
SVZ>Односвязный список выбран по причине экономии памяти. Реализован односвязный список на базе массива (в качестве ссылки на следующий элемент списка используется индекс в массиве). Индекс вершины — ключевой атрибут, поэтому стандартный std::list, указатели и итераторы не годятся. Хранить вершины в массиве тоже не годится, т.к. при изменении числа вершин индексы поплывут.
SVZ>При совпадении концов двух полилиний их нужно объединить в одну. Если соединяется "голова" с "головой" или "хвост" с "хвостом", то одну из полилиний нужно развернуть. SVZ>И вот здесь используется наш любимый разворот односвязного списка.
Да не фантазируйте! Какая экономия памяти?! Вы пишите плохой код, а потом корячитесь с ним всю оставшуюся жизнь! Вы ддаже не понимаете, что такая задача по инвертированию списка решается с помощью рекурсивного вызова функций, которые отнимают больше памяти, чем вы пытаетесь сэкономить, и причем эта память — стековая память! Что может вообще привести к аварийному завершению программы. Вы пишите бред идиота лишь бы любой ценой оправдать свою глупость! Мой вам совет: научитесь сначала программировать!