Re[5]: Задача на собеседовании - обращение списка.
От: Mr.Cat  
Дата: 24.02.12 12:23
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, Mr.Cat, Вы писали:
ПМ>Причем здесь мнение википедии? Человек или обладает системными знаниями, или нет. Типы и структуры данных — это то, с чего начинается изучение программирования в школах и институтах.
А при чем здесь системные знания? Допустим, я иду на собеседование, допустим, на джава-разработчика. То, что имеет в джаве конкретное значение (списки, ссылки и т.п.) я в этом значении и понимаю. Какое мне дело до чьих-то системных знаний?
Re[5]: Задача на собеседовании - обращение списка.
От: GarryIV  
Дата: 24.02.12 12:24
Оценка: 1 (1)
Здравствуйте, 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]: Задача на собеседовании - обращение списка.
От: Lloyd Россия  
Дата: 24.02.12 12:24
Оценка: +1
Здравствуйте, Vzhyk, Вы писали:

>> Да я и не утверждаю, что это ненормально. Меня удивило, что,

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

Численно посчитать интеграл?! Вы в каком классе учетесь уважаемый? В моей далеко не самой продвинутой школе интегралы проходили в 9 классе.

>> Неужели?

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

А если нужен человек, от которого нужно знание математики хотя бы в рамках школьного курса? Тоже ничего не дает?
Re[5]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:24
Оценка:
24.02.2012 15:04, Паблик Морозов пишет:
> А пока от программистов требуется умение писать хороший,
> понятный и эффективный код для эффективного менеджера.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Задача на собеседовании - обращение списка.
От: Brutalix  
Дата: 24.02.12 12:24
Оценка: +2 -2 :))) :))
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Но как-то они же работали на предыдущих работах несколько лет?


значит плохо работали, если не могут решить задачи про задачи про переливание воды, цветные шары и особенно про гномов в кепках. Может у них вообще какие устарелые и невостребованные скизлы типа С++, а про гномиков — не знают.
Re[5]: Задача на собеседовании - обращение списка.
От: GarryIV  
Дата: 24.02.12 12:25
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, Паблик Морозов, Вы писали:


GIV>>>Да, че там. За каждый ответ на собесодовании надо платить! По типу «Кто хочет стать миллионером?»

ПМ>>Боюсь тогда большинство людей будут приходить на собеседование ради самого процесса, а не ради того, чтобы усроиться на работу.

BFE>А разве в «Кто хочет стать миллионером?» не берут деньги за первые 10 вопросов ещё до попадания кандидата в студию?


Я как-то всегда начинал смотреть с момента попадания кандидата в студию
WBR, Igor Evgrafov
Re[4]: Задача на собеседовании - обращение списка.
От: Lloyd Россия  
Дата: 24.02.12 12:28
Оценка: +1
Здравствуйте, UA, Вы писали:

UA>И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка.


Зачем так сложно? Достаточно пробежаться от начала списка к концу и подобавлять элементы в начало нового списка. Методы для этого в std:list есть (push_front), специально посмотрел.
Re[7]: Задача на собеседовании - обращение списка.
От: elmal  
Дата: 24.02.12 12:28
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Почему-то все считают, что структуры данных ограничены стандартной библиотекой, предоставляемой языком. Паралич мышления?

Блин. Типа того . Точно паралич мышления
Re[5]: Задача на собеседовании - обращение списка.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.02.12 12:29
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Здравствуйте, gandjustas, Вы писали:


G>>Ты еще спроси как деревья балансировать. Это надо хорошо разбираться в структурах данных и алгоритмах. Большинство разработчиков работают на более высоком уровне абстракции и навык теряется, даже если люди знают. Это примерно как быстрая сортировка.


ПМ>Чтобы деревья балансировать, надо действительно алгоритм знать, сам человек его за пять минут не изобретёт.

А чем разворот списка хуже?

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

Далеко не каждый способен "за 5 минут" написать алгоритм, который "видел хоть раз в жизни".

Я вот уверен что большинство сходу не напишет поиск максимальной подпоследовательности за O(n), хотя почти все его видели.
Или например выбор N случайных элементов из массива.

Потому что это сложные алгоритмы, как и разворот списка на месте. Правильная их реализация не совпадает с наивной. Оптимизированная быстрая сортировка — тоже.

Хотя если не знает, о чем речь, то может и не написать (хотя незнание алгоритма быстрой сортировки — тоже хреновый показатель).

G>>А ты опиши задачу так чтобы предметная область не требовалась. Что бы вы не делали — все сводится к набору структур данных, алгоритмов и используемых библиотек.

ПМ>Вот я и предложил одну из самых примитивных структур данных и один из самых примитивных алгоритмов над ней. Если это не может, в чём смысл давать что-то сложнее?
Есть смысл давать что-то что ближе к реальной задаче
Еще раз повторю что разворот списка не пишут. Ты наверное и сам его в production не писал ни разу.


G>>Это ты думаешь что проще, а на деле не проще. Потому что требует знаний, которые люди не используют каждый день.

ПМ>каких знаний требует задача обращения списка??
Больших как ни странно.

G>>Она также на 50% "эффективна" в другую сторону, то есть отсеивает тех, кого не должна.

ПМ>Это кого, например?
Это например тех кто не гуглил перед собеседованием вопросы и не умеет соображать быстро в стрессовой ситуации. Среди них кстати могут быть и очень хорошие специалисты.
Re[7]: Задача на собеседовании - обращение списка.
От: UA Украина  
Дата: 24.02.12 12:29
Оценка: -3
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Здравствуйте, UA, Вы писали:


UA>>С голыми списками работают только на первом курсе университета чтобы понять как оно работает но в реальной работе велосипедостроение не приветствуется.


ПМ>Понятно, что не приветсвуется, я же написал, что задача нужна только для того, чтобы проверить, сможет ли человек написать примитивный алгоритм. Ведь давать реальные задачи невозможно по вполне очевидным причинам.


Значит вам нужно искать студента в которого это свежо в памяти, люди с опытом сразу детектят ваш быдлоподход к делу/людям и возможно спецом валят задание чтобы поскорее от вас уйти.
Re[6]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:30
Оценка:
Здравствуйте, elmal, Вы писали:

E>Просим реализацию. Без instanse of, при условии, что передается однонаправленный список, который я написал сам.


Нет, реализацию припасу для интервью
Re[2]: Кто только ни говорил об этом...
От: os24ever
Дата: 24.02.12 12:30
Оценка: 1 (1) +1
MR>Считаю самым лучшим способом собеседования расспросы о том, что было сделано на предыдущих местах работы и углубление по ходу в технические детали.

Кто только ни говорил об этом:

1) Джоэл Спольски: Искусство проведения интервью,
2) На этом форуме: Геннадий Майко
Автор: Геннадий Майко
Дата: 21.08.09
, совсем недавно,
3) Андрей Орлов, "Записки автоматизатора. Профессиональная исповедь", глава "HR",
4) Фил Портер, "Искусство корпоративной политики",
5) Виктор Дольник, "Непослушное дитя биосферы", глава "Правила знакомства".

и т.д. и т.п.

У вас официальный приём. Вы легко можете "разболтать" соискателя (его обманывать не надо — он сам обманываться рад) и подкинуть ему задачку из той области, где он работал последние несколько лет. Ну не обращает он списки. Зато, может, вы узнаете, что он SQL-запросы с группировками умеет составлять и тем был бы полезен.
Отредактировано 02.05.2015 6:10 os24ever . Предыдущая версия .
Re[3]: Задача на собеседовании - обращение списка.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.02.12 12:33
Оценка: 6 (1) +2 :))) :))) :))
Здравствуйте, Паблик Морозов, Вы писали:

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


KP>>Кого ищите то? Те же плюсисты, обычно, решают в лет. У разработчиков более высокоуровневых языков часто вызывает проблемы, сам не знаю почему.


ПМ>C#/Java. Среди программистов на C#/Java больше идиотов (может и правда плюсистов брать и переучивать)?


Не стоит. Тогда будет еще больше идиотов.
Re[10]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:35
Оценка:
24.02.2012 15:24, Lloyd пишет:

> V>Ничего себе элементарщина...

>
> Численно посчитать интеграл?! Вы в каком классе учетесь уважаемый? В
> моей далеко не самой продвинутой школе интегралы проходили в 9 классе.
Навскидку. Посчитай мне меру Кулбака-Лейблера
(http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%9A%D1%83%D0%BB%D1%8C%D0%B1%D0%B0%D0%BA%D0%B0_%E2%80%94_%D0%9B%D0%B5%D0%B9%D0%B1%D0%BB%D0%B5%D1%80%D0%B0)
в 50 мерном пространстве . Только, чтобы она не считалась 3 года, а за 3
сек, например.
Posted via RSDN NNTP Server 2.1 beta
Re: Задача на собеседовании - обращение списка.
От: B0FEE664  
Дата: 24.02.12 12:35
Оценка: 1 (1)
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>2. Если сраз нафиг, то как грамотно построить интервью, чтобы дать эту задачу в самом начале, не слишком сильно человека шокировав, и распрощаться втечение пяти минут, не слишком обидев?


А вы можете её сами написать за 5 минут? Я вот по часам засекал, за 12 минут вот такой результат:

struct Node { Node* m_pNext; int m_nData;

Node(Node* pNext, int n) : m_pNext(pNext), m_nData(n) {}
};


Node* reverse(Node* pHead)
{
    if ( NULL == pHead )
        return NULL;

    Node* pNode = NULL;
    Node* pNewHead = pHead;
    pHead = pHead->m_pNext;
    pNewHead->m_pNext = NULL;

    while(pHead)
    {
        pNode = pHead;
        pHead = pHead->m_pNext;
        pNode->m_pNext = pNewHead;
        pNewHead = pNode;
    }

    return pNewHead;
}

int main (int argc, char *argv[])
{
  Node* pHead = NULL;
  for(int i = 0; i < 20; i++)
  {
     pHead = new Node(pHead, i);
  }

  for(Node* pNode = pHead; NULL != pNode; pNode = pNode->m_pNext)
      std::cout << pNode->m_nData << ' ';

  Node* pHead = reverse(pHead);

  for(Node* pNode = pHead; NULL != pNode; pNode = pNode->m_pNext)
      std::cout << pNode->m_nData << ' ';

  return 0;
}


Опыт программирования больше 10 лет.
И каждый день — без права на ошибку...
Re[8]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:36
Оценка:
Здравствуйте, UA, Вы писали:

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


А что такого быдланского в этом подходе? Как еще отсеять людей, котыре не могут писать код, не нагружая их многочасовыми тестовыми задачами?
Re[5]: Задача на собеседовании - обращение списка.
От: UA Украина  
Дата: 24.02.12 12:36
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


UA>>И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка.


L>Зачем так сложно? Достаточно пробежаться от начала списка к концу и подобавлять элементы в начало нового списка. Методы для этого в std:list есть (push_front), специально посмотрел.


Можна и так согласен.
Re[6]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:38
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>24.02.2012 14:57, Паблик Морозов пишет:


>> На такие вакансии мы кандидатов по сайтам резюме не ищем, для этого

>> существуют другие каналы.
V>9 из 10 кандидатов на вакансию, бла-бла-бла. Это не твой пост самый
V>первый в этой теме?

Я же написал
>немного выше, если отсортировать вакансии с HH по зарплате и пропустить жöлтенькие

Ты написал про 500 т.р. Я ответил, что на вансии с з.п. 500 т.р. мы кандидатов на публичных сайтах вакансий не ищем.
Re[8]: Задача на собеседовании - обращение списка.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.02.12 12:38
Оценка:
Здравствуйте, 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]: Задача на собеседовании - обращение списка.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.02.12 12:40
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

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


ПМ>>>Почему 9 из 10 соискателей не могут её решить? Причём у людей минимум от 3-х лет опыта разработки, позиционируют они себя, как сеньёр-девелоперы, ЗП вроде конкурентноспособная (немного выше, если отсортировать вакансии с HH по зарплате и пропустить жöлтенькие).


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


SVZ>Ну задача самая, что ни на есть практическая.

Да ну?

SVZ>Приходилось использовать разворот списка в боевом проекте.

Сколько раз? Много таких?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.