Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, mucks, Вы писали:
M>>Ага. А если бы подобный алгоритм написал на плюсах, то обвинили бы в перерасходе памяти. M>>Так что таки "конкретные особенности системы типов и рантайма"
L>А где тут перерасход памяти?
видимо потому что не inplace алгоритм.
Re[11]: Задача на собеседовании - обращение списка.
Здравствуйте, denisko, Вы писали:
D>Снизь планку до 70 -- пойдут нормальные люди. Вообще парадоксально, ставил 120, шла в основном школота с хабра, которая вообще не разбиралась ни программировании, ни в математике. Поставил 70, нанял двух нормальных мужиков лет 30, работают, что не знают быстро осваивают. Есличо, то самый эффективный за последний год работник у меня работает за 40. Так что корреляция качества с ценой сейчас довольно странная.
Интересная идея, предложу начальству попробовать. Про 40 всё таки не верится
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, kaa.python, Вы писали:
KP>А ты уверен, что тебе действительно нужен человек, который будет отличать? В большинстве случаев, при грамотной постановке задач, подойдут разработчики чуть умнее обезьяны. Для остальных, крайней редких задач,, планку стоило бы, конечно, на 30-50% поднять.
Мне кажется, что умение программировать на Java/C#, знать стандартные структуры данных и многопоточность на уровне мьютексов и мануал-ресет-эвентов — это и есть чуть умнее обезьяны.
2. Уточняющий вопрос вида: "Какой список будем обращать: псвязный, массив, всписок, что-там-еще?"
Хвала тебе, дальше даже конкретное решение не надо спрашивать.
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Undying, Вы писали:
U>1) Что за пять минут придумать можно решение только крайне примитивной задачи. Решение мало-мальски сложной задачи за пять минут можно только вспомнить, если знал его раньше.
Здравствуйте, ArtemGorikov, Вы писали:
AG>Лучше правильно сформулируй текст вакансии "Требуется программист с опытом решения задач про громов в кепках. Опыт решения задач про гномов с х алмазом во лбу преведствуется. Моральная устойчивость от начальника-самодура обязательна".
Я не проверяю опыт решение подобных задач. Для меня опыт вообще вторичен. В IT опыт не делает из дурака умного, и вообще обесценивается очень быстро.
Re[2]: Задача на собеседовании - обращение списка.
Здравствуйте, Wolverrum, Вы писали:
W>Здравствуйте, Паблик Морозов:
W>А что ты хочешь услышать от соискателя?
W>1. Алгоритм разворота W>Позор тебе, плохой, негодный работодатель.
W>2. Уточняющий вопрос вида: "Какой список будем обращать: псвязный, массив, всписок, что-там-еще?" W>Хвала тебе, дальше даже конкретное решение не надо спрашивать.
1.
Потому что только дибил будет спрашивать "Какой список будем обращать: псвязный, массив, всписок, что-там-еще?" после того, как ему объяснят, что разворачивать будем односвязный список, обсудят, что это такое и нарисуют примеры входных и выходных данных.
Re[12]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, samius, Вы писали:
L>>>Да у тебя утверждение из разряда "потому что тут так принято". От плохих привычек избавляться нужн, а не потакать им. S>>И чем плоха та привычка? И чем лучше вводить новые плохие привычки?
L>Тем, что прививает ошибочное мнение, что список — это обязательно связанный список.
Ну т.е. использовать эффект неожиданности что бы не расслаблялись/
L>Ты взражаешь против использования более короткого названия, так где оно уместно, и единственный твой аргумент — тут так приянто.
Я возражаю не против более короткого названия. Я возражаю против недоразумений. L>Я не считаю, что это валидный аргумент. Гораздо более правильный подход (имхо), использовать сокращения для наиболее часто используемых имен. То, что список на основе массива используется в java/.net чаще связанного списка, я думаю ты вряд ли будешь оспаривать.
Во всем дотнете — наверное List используется чаще чем связный список. Но если брать F#, то там list путевый.
Так что по поводу Dictionary/Map? Почему же не использовали более короткое имя?
L>>>К чему тогда этот спор? S>>Спора нет. S>>1) я пытаюсь понять, что я такого должен был увидить в википедии, что бы стало ясно, что я не прав? S>>2) я показал тебе несколько мест в статье википедии, которые указывают на то, что связный список подразумевается под термином List по умолчанию. И ты ничего из этого оспаривать не стал. S>>Ну вот он я, тыкай меня в википедию А там, глядишь, может и до спора дойдет.
L>Ты опять аппелируешь к аргументу "тут так принято".
апеллирую L>В википедии черным по белому написано, что список — это структура данных. Да, во многих языках списком принято называть исменно связанный список, но из этого не следует делать вывода, что список может иметь только такую раелизацию. И уж тем более не стоит исходя из этого кого-то во что-то тыкать.
Я не говорю что список может иметь только такую реализацию. Я говорю что стандартный способ реализации списка отличен от массивов, отсюда и путаница. Путаница не у меня. Я начинал еще с паскаля/делфи, потому привыкший, хотя и впервые столкнулся именно со связным списком.
Re[27]: Задача на собеседовании - обращение списка.
Здравствуйте, samius, Вы писали:
L>>Тем, что прививает ошибочное мнение, что список — это обязательно связанный список. S>Ну т.е. использовать эффект неожиданности что бы не расслаблялись/
Расслабляться — не самая лучшая практика при переходе на новую платформу. И оправдывать такое поведение — тоже.
L>>Я не считаю, что это валидный аргумент. Гораздо более правильный подход (имхо), использовать сокращения для наиболее часто используемых имен. То, что список на основе массива используется в java/.net чаще связанного списка, я думаю ты вряд ли будешь оспаривать. S>Во всем дотнете — наверное List используется чаще чем связный список. Но если брать F#, то там list путевый. S>Так что по поводу Dictionary/Map? Почему же не использовали более короткое имя?
Почему не использовали Map вместо Dictionary?
В 1-м фреймворке был hashtable, в java — hashmap, почему был выбран именно Dictionary могу только предполагать: Map и Table имеет дополнительный смыслы, которые которые могли сбить с толку пользователя, Dictionary в этом смысле более "чист".
L>>Ты опять аппелируешь к аргументу "тут так принято". S>апеллирую
Нарушение правил.
L>>В википедии черным по белому написано, что список — это структура данных. Да, во многих языках списком принято называть исменно связанный список, но из этого не следует делать вывода, что список может иметь только такую раелизацию. И уж тем более не стоит исходя из этого кого-то во что-то тыкать. S>Я не говорю что список может иметь только такую реализацию. Я говорю что стандартный способ реализации списка отличен от массивов, отсюда и путаница.
Мне кажется, использование слова "стандартный" тут не совсем уместно, т.к. тем самым другие реализации становятся "несандартными", а это слово имеет негативный оттенок.
S>Путаница не у меня. Я начинал еще с паскаля/делфи, потому привыкший, хотя и впервые столкнулся именно со связным списком.
А зачем тогда кого-либо тыкать?
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали: W>>А что ты хочешь услышать от соискателя? W>>1. Алгоритм разворота W>>Позор тебе, плохой, негодный работодатель. W>>2. Уточняющий вопрос вида: "Какой список будем обращать: псвязный, массив, всписок, что-там-еще?" W>>Хвала тебе, дальше даже конкретное решение не надо спрашивать. ПМ>1. ПМ>Потому что только дибил будет спрашивать "Какой список будем обращать: псвязный, массив, всписок, что-там-еще?" после того, как ему объяснят, что разворачивать будем односвязный список, обсудят, что это такое и нарисуют примеры входных и выходных данных.
Значит, ты тролль, либо плохой, негодный писатель. Ибо в стартовом сообщении нет слова "односвязный". Нисево лисьнова.
Re[28]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, samius, Вы писали:
S>>Ну т.е. использовать эффект неожиданности что бы не расслаблялись/
L>Расслабляться — не самая лучшая практика при переходе на новую платформу. И оправдывать такое поведение — тоже.
Ну в общем, для тонуса
L>Почему не использовали Map вместо Dictionary? L>В 1-м фреймворке был hashtable, в java — hashmap, почему был выбран именно Dictionary могу только предполагать: Map и Table имеет дополнительный смыслы, которые которые могли сбить с толку пользователя, Dictionary в этом смысле более "чист".
Вот ты сам говоришь о дополнительных смыслах, которые могут сбить с толку. У списка есть такие же смыслы.
S>>апеллирую
L>Нарушение правил.
Это не со зла и без злорадства. Меня тоже недавно поправили. Будешь настаивать — схожу в баню, не против.
S>>Я не говорю что список может иметь только такую реализацию. Я говорю что стандартный способ реализации списка отличен от массивов, отсюда и путаница.
L>Мне кажется, использование слова "стандартный" тут не совсем уместно, т.к. тем самым другие реализации становятся "несандартными", а это слово имеет негативный оттенок.
Это слово применено в википедии, в которую ты предлагал потыкать
.
S>>Путаница не у меня. Я начинал еще с паскаля/делфи, потому привыкший, хотя и впервые столкнулся именно со связным списком.
L>А зачем тогда кого-либо тыкать?
Тот же вопрос можно адресовать и тебе
Здравствуйте, samius, Вы писали:
L>>Почему не использовали Map вместо Dictionary? L>>В 1-м фреймворке был hashtable, в java — hashmap, почему был выбран именно Dictionary могу только предполагать: Map и Table имеет дополнительный смыслы, которые которые могли сбить с толку пользователя, Dictionary в этом смысле более "чист". S>Вот ты сам говоришь о дополнительных смыслах, которые могут сбить с толку. У списка есть такие же смыслы.
У самого слова "список" нет таких смыслов.
S>>>Я не говорю что список может иметь только такую реализацию. Я говорю что стандартный способ реализации списка отличен от массивов, отсюда и путаница.
L>>Мне кажется, использование слова "стандартный" тут не совсем уместно, т.к. тем самым другие реализации становятся "несандартными", а это слово имеет негативный оттенок. S>Это слово применено в википедии, в которую ты предлагал потыкать
Нет, там применено другое слово. Более того, там даже другой язык, и я не уверен, что в английском есть этот негативный оттенок.
S>>>Путаница не у меня. Я начинал еще с паскаля/делфи, потому привыкший, хотя и впервые столкнулся именно со связным списком.
L>>А зачем тогда кого-либо тыкать? S>Тот же вопрос можно адресовать и тебе
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, samius, Вы писали:
S>>Вот ты сам говоришь о дополнительных смыслах, которые могут сбить с толку. У списка есть такие же смыслы.
L>У самого слова "список" нет таких смыслов.
Есть, я приводил цитаты.
L>>>Мне кажется, использование слова "стандартный" тут не совсем уместно, т.к. тем самым другие реализации становятся "несандартными", а это слово имеет негативный оттенок. S>>Это слово применено в википедии, в которую ты предлагал потыкать
.
L>Нет, там применено другое слово. Более того, там даже другой язык, и я не уверен, что в английском есть этот негативный оттенок.
Негативный оттенок ты придумал. В русском его тоже нет. А как можно еще перевести standard way?
L>>>А зачем тогда кого-либо тыкать? S>>Тот же вопрос можно адресовать и тебе
.
L>Я вроде как объяснил, разве нет? Или ты до сих пор уверен, что список — это обязательно связанный спиок?
Ты как будто не читаешь, что я пишу. Я наверное раз 8 написал что не считаю. Написать еще пару?
Ты не объяснил, почему то предлагаешь потыкать, то предлагаешь не тыкать.
Re[31]: Задача на собеседовании - обращение списка.
Здравствуйте, samius, Вы писали:
S>>>Вот ты сам говоришь о дополнительных смыслах, которые могут сбить с толку. У списка есть такие же смыслы.
L>>У самого слова "список" нет таких смыслов. S>Есть, я приводил цитаты.
Сравните с примером, который я привел. Map — это, например, карта. Table — таблица. Эти смыслы вообще никак не связаны с сутью класса Dictionary.
L>>>>Мне кажется, использование слова "стандартный" тут не совсем уместно, т.к. тем самым другие реализации становятся "несандартными", а это слово имеет негативный оттенок. S>>>Это слово применено в википедии, в которую ты предлагал потыкать
.
L>>Нет, там применено другое слово. Более того, там даже другой язык, и я не уверен, что в английском есть этот негативный оттенок. S>Негативный оттенок ты придумал. В русском его тоже нет.
В русском есть негативные оттенок.
S>А как можно еще перевести standard way?
Если о реализации, то что-то типа "наиболее часто встречающаяся реализация".
L>>>>А зачем тогда кого-либо тыкать? S>>>Тот же вопрос можно адресовать и тебе
.
L>>Я вроде как объяснил, разве нет? Или ты до сих пор уверен, что список — это обязательно связанный спиок? S>Ты как будто не читаешь, что я пишу. Я наверное раз 8 написал что не считаю. Написать еще пару?
Зачем тогда тыкать человеку, что класс List в .Net — не список?
Статья, на которую ты же и сослался, говорит, что список — это тип данных, List в .Net вполне подходит под такое опреление. Где был неправ твой собеседник, зачем его понадобилось "тыкать"?
S>Ты не объяснил, почему то предлагаешь потыкать, то предлагаешь не тыкать.
Чего? Ты сам-то понял, что написал?
Re[3]: Задача на собеседовании - обращение списка.
Здравствуйте, Undying, Вы писали:
U>Здравствуйте, vshemm, Вы писали:
V>>Условно всех людей можно поделить на 2 категории. Первая (их больше пресловутых 95%) познают мир путем запоминания фактов, V>>в результате чего картина у них получается весьма разрозненной. Вторые не тянут в голову всякую мелочь (запас памяти ограничен), V>>а держат в кеше только фундаментальные сущности с их свойствами и связями, подгружая в случае необходимости конкретную V>>информацию из внешних источников.
U>Деление людей на запоминальщиков и понимальщиков правильное, а вот выводы вы делаете неверные.
Вывод я сделал только один: Морозов с gandjustas явно не сработаются, более того, их методы по наему не тождественны.
Надеюсь, спорить с этим выводом никто не будет.
U>Как раз понимальщик никогда не будет давать задачек на собеседовании, т.к. понимальщик прекрасно понимает:
"Понимальщик" как раз будет пытаться набирать к себе людей таких же, как он (при прочих равных). Не буду себя цитировать.
U>1) Что за пять минут придумать можно решение только крайне примитивной задачи. Решение мало-мальски сложной задачи за пять минут можно только вспомнить, если знал его раньше.
Согласен полностью. Но задача "реверс списка" — примитивная (могу выдать примитивный мыслепроцесс решения, но тогда эта
задача уйдет в прошлое). Мало мальскую сложную задачу задавать бесмыссленно — я это уже говорил. Но суть не в нахождении
решения, а в именно процессе
Хотя всегда есть нюансы. SkyDance написал, например, что "И тем не менее — нечто похожее (самую длинную повторяющуюся
подпоследовательность найти) меня спросили прямо на входе в одну большую контору". Ну да, если он в яндекс собеседовался
на позицию чела, который будет работать с данными — это нормально Меня тоже как-то просили стек написать за 5 минут,
а, после того как я это сделал, говорили: "а теперь сделайте этот стек lock-free". Но я же не жалуюсь, что это плохой подход.
U>2) Что при реальной работе программист как правило имеет дело с хорошо знакомым контекстом. На собеседовании контекст не знаком совершенно, ни в плане поставленных задач, ни в плане людей поставивших эти задачи.
Согласен. Только реальные навыки работы проверить на собеседовании невозможно, даже на испытательном сроке нужно
прилагать усилия для этой проверки.
U>3) Что в реальной работе от программиста практически никогда не требуется решение за пять минут. И тем более от программиста никогда не требуется решить задачу за пять минут в незнакомом контексте.
См п.2. Но пару слов скажу. Бумажка и карандаш (доска — маркер) — знакомый контекст. Предметная область тоже знакомая
(иначе интервьюер плохо выбрал задачку). Все. Проверка же не на написание кода идет.
U>Соответственно отбор по решению задачек на собеседовании это типичный отрицательный отбор, т.е. способ отбора, который дает худшие результаты нежели отбор кандидатов случайным образом.
Не совсем. В данном случае — с задачей реверса односвязного списка — это отбор по инверсному критерию. Т.е. те, кто "отобрался"
— сразу отсеиваются. Почему такой отбор многим чужд? Хз. Может, проблемы в консерватории? Или вы никогда дебилов на работу не брали?
V>>Морозов входит во вторую группу (или старается туда входить) — это прямо следует из его постов
U>Что-то я не заметил в каком месте Морозов входит во вторую группу. Вроде по постам это типичный запоминальщик, который запомнил решение какой-то задачи и на этом основании считает, что она очень простая.
Вот тут у меня прямо противоположное мнение. Например, ПМ, анализируя выражение x & (x + 1) родил табличку. И это знакомый
мне подход. А вот gandjustas только решения пишет (кроме вывода реверса односвязного списка — но это решение я уже покритиковал),
что значит копипаст, скорее всего. И т.д., тут много незначительных деталей, которые по совокупности позволяют сделать мне такой вывод.
Re[32]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, samius, Вы писали:
L>>>У самого слова "список" нет таких смыслов. S>>Есть, я приводил цитаты.
L>Сравните с примером, который я привел. Map — это, например, карта. Table — таблица. Эти смыслы вообще никак не связаны с сутью класса Dictionary.
Один из смыслов слова map — отображение (мат.) И именно термин map используется для производных контейнеров типа multimap, bidirectional map, hashmap/hashtable. Почему не multidictionary, hashdictionary?
S>>Негативный оттенок ты придумал. В русском его тоже нет.
L>В русском есть негативные оттенок.
не вижу ничего негативного.
S>>А как можно еще перевести standard way?
L>Если о реализации, то что-то типа "наиболее часто встречающаяся реализация".
Имхо, стандартный путь реализации немного сильнее, чем наиболее часто встречающаяся. Остаток статьи в википедии так или иначе указывает на это. Набор операций, абстрактное определение, отсылка к LISP-у.
S>>Ты как будто не читаешь, что я пишу. Я наверное раз 8 написал что не считаю. Написать еще пару?
L>Зачем тогда тыкать человеку, что класс List в .Net — не список? L>Статья, на которую ты же и сослался, говорит, что список — это тип данных, List в .Net вполне подходит под такое опреление. Где был неправ твой собеседник, зачем его понадобилось "тыкать"?
Во-первых, я не тыкал. Может, Ромашке так показалось, или он просто так выразился. А может это и не я был.
Во-вторых, я уже ответил, что у массива и списка совершенно разные характеристики и показания к использованию. Поэтому, разработчик на дотнете должен знать, как именно реализован List. Я считаю, что должен. Особенно в контексте того, что название выбрано неудачно. Потому, когда я встречаю, что дотнетовский List упоминают в контексте связного списка, я непременно поправляю.
S>>Ты не объяснил, почему то предлагаешь потыкать, то предлагаешь не тыкать.
L>Чего? Ты сам-то понял, что написал?
Понял. Так ты за то что бы тыкать, или не тыкать? Потому как показания расходятся.
Re[33]: Задача на собеседовании - обращение списка.
Здравствуйте, samius, Вы писали:
L>>Сравните с примером, который я привел. Map — это, например, карта. Table — таблица. Эти смыслы вообще никак не связаны с сутью класса Dictionary. S>Один из смыслов слова map — отображение (мат.)
А другой из смыслов — карта.
S>И именно термин map используется для производных контейнеров типа multimap, bidirectional map, hashmap/hashtable. Почему не multidictionary, hashdictionary?
Потому что multidictionary — это о другом, а hashdictionary — избыточен, т.к. нет необходимости указывать для наиболее часто встречающихся названий такие детали.
S>>>Ты как будто не читаешь, что я пишу. Я наверное раз 8 написал что не считаю. Написать еще пару?
L>>Зачем тогда тыкать человеку, что класс List в .Net — не список? L>>Статья, на которую ты же и сослался, говорит, что список — это тип данных, List в .Net вполне подходит под такое опреление. Где был неправ твой собеседник, зачем его понадобилось "тыкать"?
S>Во-первых, я не тыкал. Может, Ромашке так показалось, или он просто так выразился. А может это и не я был.
Ок. Что именно было или не было там между вами я не знаю, я полагаюсь исключительно на информация из сообщений.
S>Во-вторых, я уже ответил, что у массива и списка совершенно разные характеристики и показания к использованию. Поэтому, разработчик на дотнете должен знать, как именно реализован List. Я считаю, что должен. Особенно в контексте того, что название выбрано неудачно. Потому, когда я встречаю, что дотнетовский List упоминают в контексте связного списка, я непременно поправляю.
Да, все верно, согласен со всем, за исключением неудачности названия. Но как бы то ни было, это не делает реализацию списка на массивах не-списком.
S>>>Ты не объяснил, почему то предлагаешь потыкать, то предлагаешь не тыкать.
L>>Чего? Ты сам-то понял, что написал? S>Понял. Так ты за то что бы тыкать, или не тыкать? Потому как показания расходятся.
Я за то, чтобы не тыкать, тем, кто утверждает, что List — это список.
И за то, чтобы тыкать тем, кто тыкает тем, кто утверждает, что List — это список.
Re[34]: Задача на собеседовании - обращение списка.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, samius, Вы писали:
S>>Один из смыслов слова map — отображение (мат.)
L>А другой из смыслов — карта.
А другой из смыслов list — вербовать.
S>>И именно термин map используется для производных контейнеров типа multimap, bidirectional map, hashmap/hashtable. Почему не multidictionary, hashdictionary?
L>Потому что multidictionary — это о другом, а hashdictionary — избыточен, т.к. нет необходимости указывать для наиболее часто встречающихся названий такие детали.
Я о том, почему стали использовать map для производных контейнеров, а не dictionary?
L>Да, все верно, согласен со всем, за исключением неудачности названия. Но как бы то ни было, это не делает реализацию списка на массивах не-списком.
Согласен, не делает.
S>>Понял. Так ты за то что бы тыкать, или не тыкать? Потому как показания расходятся.
L>Я за то, чтобы не тыкать, тем, кто утверждает, что List — это список.
Я не тыкаю тем, кто утверждает что List это список. Я тыкаю только тогда, когда вижу что под List подразумевается связный список, т.е. видно что человек находится в заблуждении относительно природы реализации List-а. L>И за то, чтобы тыкать тем, кто тыкает тем, кто утверждает, что List — это список.
На грани понимания