Re: Задача на собеседовании - обращение списка.
От: superman  
Дата: 08.02.13 09:59
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:


Я вот раз взял на работу чувака провалившего обращение списка и не пожалел. Правда парень хорошо подходил под наши требования, по собеседованию было видно что толковый ну и задачу мы задали в самом конце. Понятия не имею почему он её провалил... то ли переволновался, то ли мы за час общения переключили его в какой-то не тот режим. Вобщем отлично поработал он на нашем проекте, потом забрали у нас его на другой с повышением и карьерными перспективами.

Вообще проваленная задача на кодирование — жирный минус, но не сказал бы что моментальный отсев... ну реально всякое бывает. Как проводить собеседование: в самом начале задачу на написание кода, потом вопросы.. Если вдруг провалился на связном списке — поспрашивать что-то другое, важное, если после пары вопросов плывёт — вежливо прощатся, есле есть таки надежда что человек подойдёт — забываем про провал и продолжаем разговор.
Re[2]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 08.02.13 10:30
Оценка:
On 08.02.2013 12:59, superman wrote:

> Понятия не имею почему он её провалил... то ли переволновался, то

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

> Вообще проваленная задача на кодирование — жирный минус, но не сказал бы

> что моментальный отсев... ну реально всякое бывает. Как проводить
> собеседование: в самом начале задачу на написание кода, потом вопросы..
> Если вдруг провалился на связном списке — поспрашивать что-то другое,
> важное, если после пары вопросов плывёт — вежливо прощатся, есле есть
> таки надежда что человек подойдёт — забываем про провал и продолжаем
> разговор.
То есть в переводе на местный язык вы ищите кодеров. То бишь тех, кто
чисто механически нечто кодирует.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 08.02.13 10:38
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>То есть в переводе на местный язык вы ищите кодеров. То бишь тех, кто

V>чисто механически нечто кодирует.

кто такие, эти самые мифические кодеры о которых все говорят, но никто их не видел? Люди, которые будут писать от забора и до обеда код типа if Число = 1 then Четное := False else if Число = 2 then Четное := True else if ...
Re[4]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 08.02.13 10:54
Оценка:
On 08.02.2013 13:38, jhfrek wrote:

> Люди, которые будут писать от забора и до обеда код типа if

> Число = 1 then Четное := False else if Число = 2 then Четное := True
> else if ...
Да. Да неважно что, главное быстро.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 08.02.13 15:16
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> Люди, которые будут писать от забора и до обеда код типа if

>> Число = 1 then Четное := False else if Число = 2 then Четное := True
>> else if ...
V>Да. Да неважно что, главное быстро.

а где-то такие работают?
Re[6]: Задача на собеседовании - обращение списка.
От: Vzhyk  
Дата: 08.02.13 15:27
Оценка:
On 08.02.2013 18:16, jhfrek wrote:

> а где-то такие работают?

Назад по ветке пройдись, вот только название контор не от всех постящих
узнаешь.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 08.02.13 22:56
Оценка:
А какой системе счисления? х)
Re: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 08.02.13 23:20
Оценка:
Можешь мне объяснить — зачем его вообще разворачивать, если можно по нему пробежаться итератором в обратном направлении? .end() -> .begin() Или если это массив указателей на объекты — просто в обратном порядке по указателям... Процессорное время девать некуда?

Я подобные вопросы считаю абсурдными, меня бы интересовал только вопрос как удалить или вставить элемент... А вообще меня мало интересуют подобные вопросы... Меня больше интересует практическое применение... понимание объектов ядра, процессов, потоков, понимание дедлоков, работа с сокетами, сигналами и работа с памятью — механизмы защиты и с каким проблемами сталкивался человек... На это есть ряд задачек — причем часто имеющих несколько правильных очевидных ответов — по ним я понимаю, что человек из себя представляет... Иногда я даю отрицательное заключение даже при 100% правильных ответах, просто наблюдая за психологией человека — как он отвечает на вопросы... как он относится к постановленной задаче даже самой легкой, внимательность, аккуратность, острота ума...
Re[2]: Задача на собеседовании - обращение списка.
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.02.13 01:55
Оценка:
Здравствуйте, ishmakov, Вы писали:

I>Можешь мне объяснить — зачем его вообще разворачивать, если можно по нему пробежаться итератором в обратном направлении? .end() -> .begin() Или если это массив указателей на объекты — просто в обратном порядке по указателям... Процессорное время девать некуда?


Речь идет о линейном односвязном списке. Каждый элемент хранит указатель на хвост списка.


I>Я подобные вопросы считаю абсурдными, меня бы интересовал только вопрос как удалить или вставить элемент... А вообще меня мало интересуют подобные вопросы... Меня больше интересует практическое применение... понимание объектов ядра, процессов, потоков, понимание дедлоков, работа с сокетами, сигналами и работа с памятью — механизмы защиты и с каким проблемами сталкивался человек... На это есть ряд задачек — причем часто имеющих несколько правильных очевидных ответов — по ним я понимаю, что человек из себя представляет... Иногда я даю отрицательное заключение даже при 100% правильных ответах, просто наблюдая за психологией человека — как он отвечает на вопросы... как он относится к постановленной задаче даже самой легкой, внимательность, аккуратность, острота ума...

Троеточия в конце фраз уже давно не в моде.
Re[3]: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 09.02.13 10:07
Оценка:
G>Речь идет о линейном односвязном списке. Каждый элемент хранит указатель на хвост списка.

В исходной задаче об этом не сказано — сказано "список", но не сказано какой — односвязанный или двухсвязанный... И зачем использовать односвязанный список, если когда встает такая задача как разворот — можно использовать двухсвязанный список... и пробежаться итератором в обратном направлении... В STL все списки двухсвязанные, и есть уже готовые функции, а в своей реализации превратить односвязанный список в двухсвязанный — это дописать около 10 строчек кода, который не будет в последствии тратить ресурсов процессора на никому не нужную задачу разворота.
Re[4]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 09.02.13 10:25
Оценка:
Здравствуйте, ishmakov, Вы писали:

I>В исходной задаче об этом не сказано — сказано "список", но не сказано какой — односвязанный или двухсвязанный... И зачем использовать односвязанный список, если когда встает такая задача как разворот — можно использовать двухсвязанный список... и пробежаться итератором в обратном направлении... В STL все списки двухсвязанные, и есть уже готовые функции, а в своей реализации превратить односвязанный список в двухсвязанный — это дописать около 10 строчек кода, который не будет в последствии тратить ресурсов процессора на никому не нужную задачу разворота.


потому что в книжках типа алгоритмов и структур данных, список — это набор рекордов вида (ссылка на данные; ссылка на следующий элемент) и для набора существует стандартный набор операций: добавить, найти, добавить после/перед найденным, удалить, развернуть и т.п., реализация которых требует некоторой сообразительности для понимания как правильно выполнить процедуру обмена над ссылками, что бы список не потерял элементы и умение работать с граничными элементами списка.

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

Так что, при грамотно сформулированном условии (список — это структура данных вида..., решите операцию обращения списка для данной структуры), задача имеет право на жизнь на собедовании, без этого условия — выдает узость мышления и незнание современных языков и библиотек у интервьюера
Re[5]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.02.13 18:46
Оценка:
Здравствуйте, jhfrek, Вы писали:

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


Глядя на таким образом сформулированное условие, я бы подумал, что интервьюер не знаком с общепринятой терминологией в структурах данных. Уточнение подразумеваемой структуры данных может иметь место после того как интервьюемый продемонстрировал "ширину" мышления и не понял, о чем речь.
Re[5]: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 10.02.13 20:25
Оценка:
Здравствуйте, jhfrek, Вы писали:

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


I>>В исходной задаче об этом не сказано — сказано "список", но не сказано какой — односвязанный или двухсвязанный... И зачем использовать односвязанный список, если когда встает такая задача как разворот — можно использовать двухсвязанный список... и пробежаться итератором в обратном направлении... В STL все списки двухсвязанные, и есть уже готовые функции, а в своей реализации превратить односвязанный список в двухсвязанный — это дописать около 10 строчек кода, который не будет в последствии тратить ресурсов процессора на никому не нужную задачу разворота.


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


Вот и ответ — потому что в книжках... на практике все это не нужно или давно реализовано и два раза изобретать велосипед не нужно... Умение работать с ссылками и указателями проверяется другими методами... Вы задаете вопросы на собеседовании — для чего? Эрудицию проверить или определить навыки с которые вам будут полезны в проекте и в компании?
Для эрудиции была такая передача — Своя Игра



У вас не шоу — а поиск человека, который займется конкретной работой.


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


Вот вы и получите юниора, который легко ответит на этот вопрос, но никогда человека с опытом, который не использует вообще этот метод за ненадобностью...
Re: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 10.02.13 21:05
Оценка:
У меня вопросы на собеседовании простые:

Я их могу спокойно озвучить, и если кто-то подготовится и найдет для себя понимание — это будет плюс х)

Расскажите как устроена операционная система, что такое процесс, что такое поток, как ОС работает с потоками, с какими библиотеками работали, что такое память на стеке, что такое динамическая память, что такое объекты синхронизации, что они лочат и как, что такое файлы, можно ли файл сделать блоком памяти, что такое сигналы и eventы, что такое сокеты, как они работают, модель OSI, как работает UDP и TCP с какими проблемы в сетевой передаче вы сталкивались... Что такое динамическая библиотека... Когда она вызывается. Что из себя представляет объектный файл, библиотека, в чем разница между статической и динамической библиотекой. По языку есть ряд секретный вопросов по которым я понимаю с какими архитектурами работал человек — ничего сложного (но не скажу — до собеседования)... Есть хитрые вопросы — например рассчитать ответ логических операций... по ним я понимаю — либо человек аккуратный и считает, либо проявляет смекалку... и умение оперировать с двоичными числами и учитывает где я хочу получить результат в С или С++... Обычные часто встречающиеся моменты в проектах... как установить 1 в двоичном числе на определенном месте... как определить, что на этом месте 1, а не 0... ну и дальше в чем отличии ссылки от указателя, что такое односвязанный список, что такое двухсвязанный, как туда добавляется или удаляется элемент, что будете если... например вызвать исключение в конструкторе или конструкторе... В общем и все... я беседую, что бы понять с чем действительно имел опыт человек... и так по разным темам — язык С, С++, системное программирование Windows/Linux, GUI или MacOS... Ибо по MacOS тоже есть ряд хитрых вопросов... которые знает человек только работающий с этой ОС...

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


p.s. Вообще у меня последнее время при собеседованиях создается одно желание, дарить людям ряд книг... В первую очередь, что хочется подарить 99% собеседуемым:

Re[2]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.02.13 21:09
Оценка:
Здравствуйте, ishmakov, Вы писали:
Re: Задача на собеседовании - обращение списка.
От: c-smile Канада http://terrainformatica.com
Дата: 10.02.13 21:51
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

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


Такое впечатление что 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;
}
Re[2]: Задача на собеседовании - обращение списка.
От: ishmakov  
Дата: 11.02.13 06:10
Оценка:
Это очевидно — но теперь объясни мне зачем тратить ресурсы? — у тебя триллион таких вот элементов... сколько времени займет этот разворот, и какова цена превратить этот список в двух-связанный, что бы пробегаться в обратном порядке
Re[6]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 11.02.13 06:38
Оценка:
Здравствуйте, ishmakov, Вы писали:

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

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

вы перепутали адресата или необоснованно решили что я — Паблик Морозов

Ну или у вас шамано-ориентированное мышление, раз вы считаете что человек озвучивший гипотезу является причиной событий
Re[6]: Задача на собеседовании - обращение списка.
От: jhfrek Россия  
Дата: 11.02.13 06:45
Оценка:
Здравствуйте, samius, Вы писали:

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

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

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

Так что не уподобляйтесь Паблику Морозову и не думайте за других. Видите какой срач развернулся из-за того что он думал как и вы.
Re[7]: Задача на собеседовании - обращение списка.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.02.13 06:56
Оценка:
Здравствуйте, jhfrek, Вы писали:

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


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

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

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

ИМХО, срач развернулся из-за незнания фундаментальных вещей.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.