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

V>Мало. Если у тебя такие задачи на собеседовании то, тыс на 500 (р.р.) в

V>месяц может быть и соглашусь, за меньшее в подобную контору даже не сунусь.

На такие вакансии мы кандидатов по сайтам резюме не ищем, для этого существуют другие каналы.
Re[3]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:00
Оценка:
Здравствуйте, GarryIV, Вы писали:

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


Боюсь тогда большинство людей будут приходить на собеседование ради самого процесса, а не ради того, чтобы усроиться на работу.
Re[5]: Задача на собеседовании - обращение списка.
От: UA Украина  
Дата: 24.02.12 12:02
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

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


ПМ>Я не прошу это делать на stl.


С голыми списками работают только на первом курсе университета чтобы понять как оно работает но в реальной работе велосипедостроение не приветствуется.
Re[4]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:04
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Хотел высказаться жестче, но в баню можно отправиться. Отвечу по сути.

V>Попросите набросать (посвторю, набросать, именно набросать, а не писать
V>std::string) класс vector, matrix, string и обсудите с ним его решение
V>(интерфейс класса, работу с памятью,...).

Вот когда компьютеру можно будет "набросать" vector, matrix, string, обсудить с ним решение и получить рабочую программу, тогда я буду так делать. А пока от программистов требуется умение писать хороший, понятный и эффективный код. Умение болтать языком ему ортогонально и проверяется вопросом "расскажите о наиболее интересном своём проекте".
Re[4]: Задача на собеседовании - обращение списка.
От: Stanislav V. Zudin Россия  
Дата: 24.02.12 12:07
Оценка:
Здравствуйте, UA, Вы писали:

UA>И как это сделать в STL: std::list<type> например? Максимум что приходит в голову так это идти по первому списку с помощью reverse_iterator и складывать элементы в другой list всегда в конец списка. Чтобы менять указатели между елементами нужен доступ к внутренней структуре хранения списка: type* next; type* prev; но что то не припомню чтобы STL давал доступ к таким вещам возможно из-за того чтобы не привязывать разработчика к конкретной реализации списка.


Структуры данных не ограничены контейнерами, предоставляемыми стандартной библиотекой.

Вот тебе пример односвязного списка на базе массивов:

typedef int VERTEX;

std::vector<POINT> m_PositionVertex; // Координаты вершин
std::vector<VERTEX> m_NextVertex;    // Ссылка на следующую вершину
VERTEX m_FirstVertex,                // Голова списка вершин
       m_FirstFreeVertex;            // Голова списка удаленных вершин


С моментальной бинарной сериализацией для POD данных и повторным использованием ранее удаленных элементов.
Ессно, все это завернуто в класс, детали реализации наружу не торчат.
_____________________
С уважением,
Stanislav V. Zudin
Re[5]: Задача на собеседовании - обращение списка.
От: elmal  
Дата: 24.02.12 12:08
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Квадратичная сложность в развороте связного списка? Ты чего-то путаешь. O(N).

В развороте на месте. При условии отсутствия обратных ссылок — а это классический вариант связанного списка, хоть я и не припоминаю такого в стандартных либах. Хотя да, на практике как раз там двусвязный список, и там методы есть, позволяющие это все делать без оверхеда за время N. Но у интерфейса List таких методов нет. И что теперь instance of использовать и кастить явно? И на бумажке ? Лично я эти методы в голове не держу, так что хрен я напишу это за время N на бумажке без использования дополнительной памяти. А с использованием — это изврат писать, какого черта тогда не вернуть новый список?
Re[4]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:08
Оценка: 1 (1)
Здравствуйте, elmal, Вы писали:

Вот теперь точно no hire, потому что список на месте разворачивается за линейное время. Начинаю убеждаться в верности выбранной методики.
Re[3]: Задача на собеседовании - обращение списка.
От: LaptevVV Россия  
Дата: 24.02.12 12:08
Оценка: 6 (2) +1
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Да никакого подвоха. Просто дан односвязный или двусвязный список, и надо его обратить (развернуть указатели на элементы), или как-нибудь поменять элементы местами (я обычно делаю небольшие вариации, чтобы не заучивали).

Abirf именно в односвязности, так как я не представляю себе сколько-нибудь вменяемого программиста, который не смог бы обратить двусвязный.
У Роберста Сэдвика описывается алгоритм обращения именно для односвязного списка.
Там нужно пара вспомогательных указателей, которые надо правильно переприсваивать.
А указатели, как заметил Джоэл Спольски — это показатель "программистскости" программиста...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Задача на собеседовании - обращение списка.
От: B0FEE664  
Дата: 24.02.12 12:09
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

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

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

А разве в «Кто хочет стать миллионером?» не берут деньги за первые 10 вопросов ещё до попадания кандидата в студию?
И каждый день — без права на ошибку...
Re[5]: Задача на собеседовании - обращение списка.
От: elmal  
Дата: 24.02.12 12:10
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

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

public void reverse(List list)

Просим реализацию. Без instanse of, при условии, что передается однонаправленный список, который я написал сам.
Re[4]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:12
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

Причем здесь мнение википедии? Человек или обладает системными знаниями, или нет. Типы и структуры данных — это то, с чего начинается изучение программирования в школах и институтах.
Re[5]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:15
Оценка: +3 -1
24.02.2012 14:13, Паблик Морозов пишет:
>Быстрая сортировка —
> примитивнейший алгоритм, если человек его хоть раз в жизни видел, то
> напишет без проблем. Хотя если не знает, о чем речь, то может и не
> написать (хотя незнание алгоритма быстрой сортировки — тоже хреновый
> показатель).
За 20 лет ни разу не понадобилось писать оное самому. Всегда была в
наличии функция sort.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:15
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Что понимается под "не могут решить"?


Не могут написать процедуру, обращающую список. То, что получается в результате, список не обращает.
Re[4]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:17
Оценка:
Здравствуйте, Ахмед, Вы писали:

А>такой подход работает, но он ориентирован на отсев


Я тут и должен быть отсев. Если 9 из 10 кандидатов с такой задачей справится не могут, их надо отсеивать и не тратить по полтора часа на собеседование каждого. Ведь тогда на работу времени не останется.
Re[3]: Задача на собеседовании - обращение списка.
От: Mr.Cat  
Дата: 24.02.12 12:18
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Не могут написать процедуру, обращающую список. То, что получается в результате, список не обращает.
Ну это очень пространное определение. Если не брать в расчет опечатки и знание деталей редкоиспользуемого API, то у любой задачи, например, бывают граничные случаи, которые не позволяют ее решить за пять минут. Квиксорт, например, из таких.
Re[6]: Задача на собеседовании - обращение списка.
От: Stanislav V. Zudin Россия  
Дата: 24.02.12 12:18
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, Stanislav V. Zudin, Вы писали:


SVZ>>Квадратичная сложность в развороте связного списка? Ты чего-то путаешь. O(N).

E>В развороте на месте. При условии отсутствия обратных ссылок — а это классический вариант связанного списка, хоть я и не припоминаю такого в стандартных либах. Хотя да, на практике как раз там двусвязный список, и там методы есть, позволяющие это все делать без оверхеда за время N. Но у интерфейса List таких методов нет. И что теперь instance of использовать и кастить явно? И на бумажке ? Лично я эти методы в голове не держу, так что хрен я напишу это за время N на бумажке без использования дополнительной памяти. А с использованием — это изврат писать, какого черта тогда не вернуть новый список?


Ну вот как-то так.

struct Node
{
   Node* next;
};

Node* reverse(Node* head)
{
   if (!head || !head->next)
      return head;

   Node* prev = NULL;
   while(head != NULL)
   {
      Node* nxt = head->next;
      head->next = prev;
      prev = head;
      head = nxt;
   }

   return prev;
}


Почему-то все считают, что структуры данных ограничены стандартной библиотекой, предоставляемой языком. Паралич мышления?
Либо действительно, не всем это нужно.
_____________________
С уважением,
Stanislav V. Zudin
Re[6]: Задача на собеседовании - обращение списка.
От: Паблик Морозов  
Дата: 24.02.12 12:19
Оценка:
Здравствуйте, UA, Вы писали:

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


Понятно, что не приветсвуется, я же написал, что задача нужна только для того, чтобы проверить, сможет ли человек написать примитивный алгоритм. Ведь давать реальные задачи невозможно по вполне очевидным причинам.
Re[8]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:20
Оценка: -1
24.02.2012 14:25, Lloyd пишет:

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

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

> Неужели?

Да. Если нужен программист, который хорошо знает математику в некоторой
области, то и говорить надо по этой области. Но, простыми задачками
ничего не выяснишь. Просто надо выяснить, насколько устойчиво человек в
этой области себя чувствует или плавает сильно — а это беседа.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:21
Оценка:
24.02.2012 14:28, MaxRos пишет:

> Считаю самым лучшим способом собеседования расспросы о том, что было

> сделано на предыдущих местах работы и углубление по ходу в технические
> детали. Почему было принято такое решение? Как была решена вон та
> проблема, почему? И так далее. Но такой способ собеседования предъявляет
> серьёзные требования к собеседующему, т.к. он должен иметь хороший
> кругозор и свободно общаться на разные технические темы.
А также понимать, что он делал и почему.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 24.02.12 12:23
Оценка:
24.02.2012 14:57, Паблик Морозов пишет:

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

> существуют другие каналы.
9 из 10 кандидатов на вакансию, бла-бла-бла. Это не твой пост самый
первый в этой теме?
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.