Re[8]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 11.02.13 07:12
Оценка:
Здравствуйте, samius, Вы писали:

J>>Человек, который программировал по требованиям заказчика должен знать что даже общепринятая терминология может различаться у разных людей. Даже здесь значительная часть программистов считает что список — это структура данных из библиотеки. А каждый кто сдавал экзамены (участвовал в олимпиадах и т.п.) знает что условие задачи формулируется максимально подробно и однозначно.

S>Формулировка задачи не была привязана к конкретным языкам и библиотекам. Потому, считать что это структура данных из какой-то конкретной библиотеки немного наивно.

если собеседование было на позицию программиста. А если собеседование было на позицию программиста С++, то вполне логично что он воспользуется привычными инструментами

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

S>ИМХО, срач развернулся из-за незнания фундаментальных вещей.

имно, фундаментальные вещи отдают некоторой долей снобизма — вы же не научного сотрудника ищите для бесед и теоретических изысканий. Для работник нужен работник который будет работать работу.

Нафига ему знать что список это набор рекордов со ссылками, если библиотечного листа ему достаточно для работы? А если нам зачем-то нужно проверить его умение построить АТД список, то ему обязательно нужно в начале объяснить внутреннее устройство и только потом просить построить и реализовать операции над этим типом.
Re[3]: Задача на собеседовании - обращение списка.
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 11.02.13 07:18
Оценка:
Здравствуйте, ishmakov, Вы писали:

I>Это очевидно — но теперь объясни мне зачем тратить ресурсы? — у тебя триллион таких вот элементов... сколько времени займет этот разворот, и какова цена превратить этот список в двух-связанный, что бы пробегаться в обратном порядке

а лишний триллион памяти под обратные ссылки у тебя есть?
Re[9]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 08:06
Оценка:
Здравствуйте, jhfrek, Вы писали:

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


S>>Формулировка задачи не была привязана к конкретным языкам и библиотекам. Потому, считать что это структура данных из какой-то конкретной библиотеки немного наивно.


J>если собеседование было на позицию программиста. А если собеседование было на позицию программиста С++, то вполне логично что он воспользуется привычными инструментами

со стороны интервьюируемого — в этом может быть какая-то логика. Но со стороны интервьюера, сформулировавшего задачу в устоявшихся терминах, такая логика отстутствует. По-вашему программист C++ и программист C# выберут для решения совершенно различные структуры данных (ориентируясь по их названиям в библиотеках). Кто будет прав?

S>>ИМХО, срач развернулся из-за незнания фундаментальных вещей.


J>имно, фундаментальные вещи отдают некоторой долей снобизма — вы же не научного сотрудника ищите для бесед и теоретических изысканий. Для работник нужен работник который будет работать работу.


J>Нафига ему знать что список это набор рекордов со ссылками, если библиотечного листа ему достаточно для работы?

Мне кажется что в общем случае интервьюеру виднее, чего достаточно для работы, а чего — нет. Для того и проверяются конкретные навыки, что бы не объяснять каждый раз будущему работнику, что подразумевается в задаче.

J>А если нам зачем-то нужно проверить его умение построить АТД список, то ему обязательно нужно в начале объяснить внутреннее устройство и только потом просить построить и реализовать операции над этим типом.

Под АТД подразумевается абстрактный тип данных? Если да, то зачем уметь его строить? Нет у абстрактного типа данных внутреннего устройства. Это лишь набор контрактов.
Re[10]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 11.02.13 08:34
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Формулировка задачи не была привязана к конкретным языкам и библиотекам. Потому, считать что это структура данных из какой-то конкретной библиотеки немного наивно.

J>>если собеседование было на позицию программиста. А если собеседование было на позицию программиста С++, то вполне логично что он воспользуется привычными инструментами
S>со стороны интервьюируемого — в этом может быть какая-то логика. Но со стороны интервьюера, сформулировавшего задачу в устоявшихся терминах, такая логика отстутствует. По-вашему программист C++ и программист C# выберут для решения совершенно различные структуры данных (ориентируясь по их названиям в библиотеках). Кто будет прав?

ну да, я про сторону интервьюируемого и пишу. Интервьюер должен точно определять что он имеет в виду — АТД или структуру из библиотеки и какой именно библиотеки. Интервьюируемый не должен решать загадки на тему "что думал интервьюер когда задавал этот вопрос", разве что интервьюер хотел выяснить сможет ли интервьюируемый вытребовать у него уточнение спецификации, достаточен ли у него кругозор что бы понять что спецификация не полна или он кинется сразу решать что-то свое.

J>>Нафига ему знать что список это набор рекордов со ссылками, если библиотечного листа ему достаточно для работы?

S>Мне кажется что в общем случае интервьюеру виднее, чего достаточно для работы, а чего — нет. Для того и проверяются конкретные навыки, что бы не объяснять каждый раз будущему работнику, что подразумевается в задаче.

э.. а зачем вам работник решающий свою, а не вашу задачу?

J>>А если нам зачем-то нужно проверить его умение построить АТД список, то ему обязательно нужно в начале объяснить внутреннее устройство и только потом просить построить и реализовать операции над этим типом.

S>Под АТД подразумевается абстрактный тип данных? Если да, то зачем уметь его строить? Нет у абстрактного типа данных внутреннего устройства. Это лишь набор контрактов.

что бы проверить как программист сумеет данное внутреннее устройство реализовывать. А то вы захотите проверить знает ли он деревья на примере списка, а он вам массив для списка поиспользует — оно вам надо терять свое и его время не решение ненужной задачи.
Re[10]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 08:35
Оценка:
On 11.02.2013 11:06, samius wrote:

> со стороны интервьюируемого — в этом может быть какая-то логика. Но со

> стороны интервьюера, сформулировавшего задачу в устоявшихся терминах,
> такая логика отстутствует. По-вашему программист C++ и программист C#
> выберут для решения совершенно различные структуры данных (ориентируясь
> по их названиям в библиотеках). Кто будет прав?
Тот кто решит задачу наиболее быстро (имеено задачу, а не нечто,
делающее совсем не то, что требовалось), с наименьшим количеством багов
и с в достаточно понятном стиле для большинства программистов (с целью
дальнейшей поддержки кода).

З.Ы. Возможно у вас все задачи в переворачивании покалеченных списков.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 08:36
Оценка:
On 10.02.2013 23:25, ishmakov wrote:

> Вот вы и получите юниора, который легко ответит на этот вопрос, но

> никогда человека с опытом, который не использует вообще этот метод за
> ненадобностью...
А если именно это и требуется тому, кто нанимает?
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 08:39
Оценка:
On 11.02.2013 0:05, ishmakov wrote:

> Расскажите как устроена операционная система, что такое процесс, что

> такое поток, как ОС работает с потоками, с какими библиотеками работали,
> что такое память на стеке, что такое динамическая память, что такое
> объекты синхронизации, что они лочат и как, что такое файлы, можно ли
> файл сделать блоком памяти, что такое сигналы и eventы, что такое
> сокеты, как они работают, модель OSI, как работает UDP и TCP с какими
> проблемы в сетевой передаче вы сталкивались...
Я так понимаю, что вы занимаетесь дровами под кучу разного странного
железа из стандартных осей?
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 08:49
Оценка:
Здравствуйте, jhfrek, Вы писали:

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


J>ну да, я про сторону интервьюируемого и пишу. Интервьюер должен точно определять что он имеет в виду — АТД или структуру из библиотеки и какой именно библиотеки. Интервьюируемый не должен решать загадки на тему "что думал интервьюер когда задавал этот вопрос", разве что интервьюер хотел выяснить сможет ли интервьюируемый вытребовать у него уточнение спецификации, достаточен ли у него кругозор что бы понять что спецификация не полна или он кинется сразу решать что-то свое.

Да, этот вопрос в частности — отличный повод выяснить, будет ли интервьюируемый уточнять задачу, сверять свое понимание, или кинется реализовывать велосипедный код над стандартным конейнером C++.
Задача сформулирована достаточно полно для тех кто знает, что подразумевается под списком в общем и частном случаях.

S>>Мне кажется что в общем случае интервьюеру виднее, чего достаточно для работы, а чего — нет. Для того и проверяются конкретные навыки, что бы не объяснять каждый раз будущему работнику, что подразумевается в задаче.


J>э.. а зачем вам работник решающий свою, а не вашу задачу?

А мне как раз такой работник не нужен. При прочих равных условиях предпочту того, кто будет решать нужную мне задачу. И тест на обращение списка — прекрасный способ отделить таких разработчиков, а так же тех, кто предпочитает препинаться и конфликтовать.

S>>Под АТД подразумевается абстрактный тип данных? Если да, то зачем уметь его строить? Нет у абстрактного типа данных внутреннего устройства. Это лишь набор контрактов.


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

Внутреннее устройство есть у конкретных структур данных, а не у абстрактных. И да, массив — одна из реализаций абстракции "Список".
Re[11]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 08:53
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Тот кто решит задачу наиболее быстро (имеено задачу, а не нечто,

V>делающее совсем не то, что требовалось), с наименьшим количеством багов
V>и с в достаточно понятном стиле для большинства программистов (с целью
V>дальнейшей поддержки кода).
Полагаю что у тех, кто использовал библиотечные структуры данных C++/C#, мало шансов выполнить то, что требовалось в условии задачи.

V>З.Ы. Возможно у вас все задачи в переворачивании покалеченных списков.

У меня — нет. А почему покалеченных?
Re[2]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 08:54
Оценка:
On 11.02.2013 0:51, c-smile wrote:

> Такое впечатление что 9 из 10 присутвующих в этой ветке в

> программировании совершенно случайные люди.
>
> Элементарная, блин, задача. На пять минут делов-то. И какая, нахрен,
> рекурсия ???
>
>
> struct list
> {
> int v;
> struct list* next;
> list(): v(),next() {}
> };
>
> void printlist(const char* cap,list* p) {
> printf("%s:",cap);
> for( ; p ; p = p->next)
> printf("%d",p->v);
> printf("\n");
> }
>
> int main(int argc,char* argv[])
> {
> list* root = 0;
> for(int n = 0; n < 10; ++n )
> {
> list* t =new list;
> t->v = n;
> t->next = root;
> root = t;
> }
>
> printlist("original",root);
>
> list* r = 0;
> for( list* t = root; t
> {
> list* tt = t->next;
> t->next = r;
> r = t;
> t = tt;
> }
>
> printlist("reversed",r);
> return 0;
> }

Извиняюсь, конечно, но это что теперь такое вот и требуется для
работодателей, клогда спрашивают эту чушь???

З.Ы. Я не вижу даже смысла тут прикапываться к мелочам. Это все можно
просто выкинуть, как вредительский код. Или это просто была попытка
показать, что ты знаешь несколько операторов С или С++ (я так и не понял)?

З.З.Ы. Неужели непонятно, что задача с оборачиванием списка не имеет
решения, потому что ничего не сказано было ни разу ни одним из
собеседователей здесь, что за список, что понимается под его
оборачиванием, и зачем это вообще нужно, какие дополнительные требования
нужно учесть, память, бестродействие, чем не подходят стандартные
списки. Эта задача ставиться всеми здесь исключительно в одной
постановке "сходи туда, не знаю куда, принеси то, не знаю что".
Posted via RSDN NNTP Server 2.1 beta
Re[12]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 11.02.13 09:11
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Мне кажется что в общем случае интервьюеру виднее, чего достаточно для работы, а чего — нет. Для того и проверяются конкретные навыки, что бы не объяснять каждый раз будущему работнику, что подразумевается в задаче.

J>>э.. а зачем вам работник решающий свою, а не вашу задачу?
S>А мне как раз такой работник не нужен. При прочих равных условиях предпочту того, кто будет решать нужную мне задачу. И тест на обращение списка — прекрасный способ отделить таких разработчиков, а так же тех, кто предпочитает препинаться и конфликтовать.

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

S>>>Под АТД подразумевается абстрактный тип данных? Если да, то зачем уметь его строить? Нет у абстрактного типа данных внутреннего устройства. Это лишь набор контрактов.

J>>что бы проверить как программист сумеет данное внутреннее устройство реализовывать. А то вы захотите проверить знает ли он деревья на примере списка, а он вам массив для списка поиспользует — оно вам надо терять свое и его время не решение ненужной задачи.
S>Внутреннее устройство есть у конкретных структур данных, а не у абстрактных. И да, массив — одна из реализаций абстракции "Список".

так задача на внутреннее устройство. В АТД ничего реализовывать не надо, он для того и абстрактный что бы тупо иметь метод reverse
Re[13]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 09:15
Оценка: :)
Здравствуйте, jhfrek, Вы писали:

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


S>>А мне как раз такой работник не нужен. При прочих равных условиях предпочту того, кто будет решать нужную мне задачу. И тест на обращение списка — прекрасный способ отделить таких разработчиков, а так же тех, кто предпочитает препинаться и конфликтовать.


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

Формулировка достаточно полна. И интервьюемый может уточнять. Уточнять — это даже плюс. Сканадлить — минус.

S>>Внутреннее устройство есть у конкретных структур данных, а не у абстрактных. И да, массив — одна из реализаций абстракции "Список".


J>так задача на внутреннее устройство. В АТД ничего реализовывать не надо, он для того и абстрактный что бы тупо иметь метод reverse

У абстракции списка нет метода reverse
Re[3]: Задача на собеседовании - обращение списка.
От: Stanislav V. Zudin Россия  
Дата: 11.02.13 09:20
Оценка: 1 (1)
Здравствуйте, Vzhyk, Вы писали:

V>З.З.Ы. Неужели непонятно, что задача с оборачиванием списка не имеет

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

Столько ненависти к такой простой задаче

Цель простая. Отличить людей, умеющих писать код от людей, которые умеют его только читать.
По моему опыту отсеивать приходится 9 из 10.
Подозреваю, что основная причина такой низкой квалификации кандидатов — сопровождение старого кода.
По сути они код не пишут, а вставляют точечные исправления "по образу и подобию". Как результат — навык написания кода отсутствует.

По-поводу формулировки.
Название топика — не формулировка задачи, а крик души Павлика Морозова .
Задача всегда формулируется предельно ясно. Явно обращается внимание на то, что список "односвязный", даже приводится пример элемента списка (некоторые "С++ программисты" впадают в ступор от просьбы написать структуру с указателем).

По-поводу "зачем" я когда-то уже писал. Не все решается эффективно существующими библиотеками.
Иногда приходится реализовывать свои контейнеры.
Если ты не понимаешь, зачем это надо, значит ты просто не сталкивался с такими задачами. И наверняка никогда с ними не столкнешься. Везет тебе
_____________________
С уважением,
Stanislav V. Zudin
Re[4]: Задача на собеседовании - обращение списка.
От: minorlogic Украина  
Дата: 11.02.13 10:18
Оценка:
Здравствуйте, qxWork, Вы писали:

W>а лишний триллион памяти под обратные ссылки у тебя есть?


На всякий случай, если будет интересным есть и такие http://en.wikipedia.org/wiki/XOR_linked_list
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[12]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 10:26
Оценка:
On 11.02.2013 11:53, samius wrote:

> Полагаю что у тех, кто использовал библиотечные структуры данных C++/C#,

> мало шансов выполнить то, что требовалось в условии задачи.
В смысле? В обращении сферического списка в вакууме?
В реальной же задаче обычно применение стандартных библиотек дает более
быстрое решение задачи с меньшим количеством багов и легко поддерживаемое.

>

> V>З.Ы. Возможно у вас все задачи в переворачивании покалеченных списков.
> У меня — нет. А почему покалеченных?
Ну потому, что все эти велосипеды обычно с квадратными колесами у всех.
Если не подходит библиотечный, стандартный и отлаженный, то для начала
нужно разобраться почему. Чаще всего оказывается, что не в списке
проблема, а чем-то другом.
Posted via RSDN NNTP Server 2.1 beta
Re[14]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 10:29
Оценка:
On 11.02.2013 12:15, samius wrote:

> Формулировка достаточно полна.

Да вот нет типичный вариант: "Сходи туда, не знаю куда. принеси то, не
знаю что".

> У абстракции списка нет метода reverse

Как я понимаю у обсуждаемой абстракции вообще ничего нет?
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 11.02.13 10:33
Оценка:
On 11.02.2013 12:20, Stanislav V. Zudin wrote:

> Цель простая. Отличить людей, умеющих писать код от людей, которые умеют

> его только читать.
> По моему опыту отсеивать приходится 9 из 10.
> Подозреваю, что основная причина такой низкой квалификации кандидатов —
> сопровождение старого кода.
> По сути они код не пишут, а вставляют точечные исправления "по образу и
> подобию". Как результат — навык написания кода отсутствует.
Раньше было бы смешно, а уже плакать хочется. Похоже знаменитому
русскому программингу приходит конец.

> По-поводу "зачем" я когда-то уже писал. Не все решается эффективно

> существующими библиотеками.
> Иногда приходится реализовывать свои контейнеры.
> Если ты не понимаешь, зачем это надо, значит ты просто не сталкивался с
> такими задачами. И наверняка никогда с ними не столкнешься. Везет тебе
То бишь: "сходи туда, не знаю куда, принеси то, не знаю что"?
Не, не Иванушка Дурачок, предпочитаю с таким не связываться, даже за
полкоролевства с бабой впридачу.
Posted via RSDN NNTP Server 2.1 beta
Re[13]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 10:34
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 11.02.2013 11:53, samius wrote:


V>В смысле? В обращении сферического списка в вакууме?

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

>> V>З.Ы. Возможно у вас все задачи в переворачивании покалеченных списков.

>> У меня — нет. А почему покалеченных?
V>Ну потому, что все эти велосипеды обычно с квадратными колесами у всех.
V>Если не подходит библиотечный, стандартный и отлаженный, то для начала
V>нужно разобраться почему. Чаще всего оказывается, что не в списке
V>проблема, а чем-то другом.
Вот здесь как раз проблема в том, что интервьюируемый не желает решать поставленную задачу и ищет отмазки, пытается решить реальные проблемы интервьюера по тестовой задаче на интервью, цель которой в отсеве кандидатов.
Re[15]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 10:34
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 11.02.2013 12:15, samius wrote:


>> У абстракции списка нет метода reverse

V>Как я понимаю у обсуждаемой абстракции вообще ничего нет?
Почему бы просто не изучить обсуждаемую абстракцию?
Re[5]: Задача на собеседовании - обращение списка.
От: Stanislav V. Zudin Россия  
Дата: 11.02.13 11:10
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> По сути они код не пишут, а вставляют точечные исправления "по образу и

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

Гм, а был ли мальчик? Кмк соотношение хороших программистов к посредственным везде примерно одинаково.

>> По-поводу "зачем" я когда-то уже писал. Не все решается эффективно

>> существующими библиотеками.
>> Иногда приходится реализовывать свои контейнеры.
>> Если ты не понимаешь, зачем это надо, значит ты просто не сталкивался с
>> такими задачами. И наверняка никогда с ними не столкнешься. Везет тебе

V>То бишь: "сходи туда, не знаю куда, принеси то, не знаю что"?


Вот заладил...
Нет никакого "сходи туда, не знаю куда...".
Алгоритмы подбираем под решаемую задачу, структуры данных выбираем, исходя из применяемых алгоритмов.
Если стандартные структуры данных не подходят, делаем свои, которые подойдут.
_____________________
С уважением,
Stanislav V. Zudin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.