[programming] Мостик белого осла
Apr. 9th, 2003 07:55 pmНе даёт мне покоя вот какая мысль.
Допустим, некоторая абстрактная контора нанимает C/C++ программиста. Никаких других требований, кроме того, что человеку придётся писать на C или C++, не оговаривается. Помимо прочего кандидатам на интервью предлагается такая задача: для произвольных целых n, M1 и M2 запишите на C условие "в n установлены все биты из M1 и сброшены все биты из M2".
Вопрос вызван общением с людьми, считающими на основании описанной задачи уровень требований упомянутой конторы завышенным.
Ваши дополнительные соображения в комментах безусловно приветствуются.
no subject
Date: 2003-04-09 09:05 am (UTC)Если же человек не знает битовой арифметики, то он не является профессиональным программистом.
Если же конторе нужно взять именно этого человека, тут никакие задачи не помогут его не взять. :)
no subject
Date: 2003-04-09 09:15 am (UTC)no subject
Date: 2003-04-09 09:23 am (UTC)no subject
no subject
вот лично мне видится минимум два решения, причем в зависимости от контекста (для чего архитектор решился на побитность, то ли изза реалтаймовости, то ли из-за экономии места на диске), любое противоположное решение будет теоретически верным, но с точки зрения практики будет рассматриваться как failure.
зы. я практически не касался C кода больше двух лет ;)
no subject
Date: 2003-04-09 03:17 pm (UTC)Вот уже несколько часов пытаюсь понять, что Вы хотели сказать этой фразой... Вы имели в виду, что, судя по вопросу, компания принимает на работу разработчика realtime-приложений (устройств, ...)?
вот лично мне видится минимум два решения, причем в зависимости от контекста (для чего архитектор решился на побитность, то ли изза реалтаймовости,
А как побитность может напрямую помочь в случае написания realtime-приложений? Я вот не могу сейчас найти прямой связи... Вы имели в виду показатели быстродействия? Я исхожу из предположения, что операции по передаче данных в RT-системе выполняются существенно дольше чем любой простой счет (сложный счет выносится на спецвычислитель) или доступ к объекту в памяти.
то ли из-за экономии места на диске)
Такой подход также экономит место и в памяти, что неплохо работает в случае использования микроконтроллеров, различных RT и embedded устройств на промышленных процессорах, там, где много оперативки может и не быть. Это тот случай, который приходит мне в голову, как объяснение выигрыша в использовании битовых операций при программировании RT систем. А вот место на диске я бы таким образом не стал экономить - выигрыш получается не настолько заметным, лучше вообще не накапливать данные на RT уровне, если есть проблемы с их хранением.
no subject
Date: 2003-04-10 12:49 am (UTC)no subject
Date: 2003-04-10 01:11 am (UTC)2) я уже писал в другом комменте, что можно писать с упором на портабельность/сопровождаемость (и тогда "заточка" кода должан быть одна) или с упором в скорость исполнения (и тогда ответ выглядит несколько иначе).
Побитность здесь собственно при том, что если человек всю жизнь писал на Intelx86 то он наверняка начнет лепить код, исходя из привычной ему длины слова и т.п., базируясь таким образом на неких estimates по поводу архитектуры. А интервьюер будет тихо смеяться в усы (у них стоит какой-нибудь PowerPC или наоборот, моторолеррный микроконтроллер), зная заранее что это кандидат имеет очь мало шансов.
3) собственно, я про диск сказал несколько неудачно - речь скорее шла о том, насколько проект готов идти на компромисс между эффективностью кода и его (кода) дальнейшей судьбой.
no subject
no subject
другими словами, набирать человека без обьяснения бэкграунда проекта ("некоторая абстрактная контора нанимает C/C++ программиста") и требовать от него корректного решения этой конкретной задачи с последующим командирским решением без обсуждения результата - это по крайней мере не совсем честно с моей точки зрения.
извини за путаницу вчера - уставший был сильно.
(no subject)
From:Re:
From:(no subject)
From:Re:
From:no subject
Date: 2003-04-09 12:18 pm (UTC)no subject
Date: 2003-04-09 02:14 pm (UTC)for(i=0;i<sizeof(a)*8;i++,a<<=1) putchar(a < 0 ? '1' : '0');
no subject
Date: 2003-04-09 02:23 pm (UTC)Другая моя любимая тупая задача - обратить односвязный список. Я уж про пузырьковую сортировку и спросить боюсь!
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Бывает и не 8
From:(no subject)
From:v 2.0
From:Re: v 2.0
From:no subject
no subject
Date: 2003-04-09 02:23 pm (UTC)no subject
Date: 2003-04-09 11:38 pm (UTC)no subject
Date: 2003-04-09 03:28 pm (UTC)Если они под Atmel AVR на тамошнем C пишут, то это одно, а если они делают COM-объекты для последующего использования их в ASP страницах, то это совсем другое.
В последнем случае никакие битовые операции знать не обязательно и много еще чего другого знать не обязательно, [и не знают!].
no subject
Date: 2003-04-10 12:07 am (UTC)no subject
Date: 2003-04-09 06:31 pm (UTC)no subject
Date: 2003-04-09 07:01 pm (UTC)Все биты из M1 установлены и все биты из M2 сброшены. :)
(no subject)
From:Re:
From:(no subject)
From:(no subject)
From:Re:
From:(no subject)
From:(no subject)
From:(no subject)
From:Re:
From:(no subject)
From:(no subject)
From:no subject
Date: 2003-04-09 11:43 pm (UTC)no subject
Date: 2003-04-10 12:08 am (UTC)Тут имхо всё просто - нам (были :( ) нужны программеры именно с такими (в частности) навыками, вот и всё.
В том виде как ты поставил задачу - ответ, конечно,- "да", т.к. в куче задач битовая арифметика не требуется никогда и я бы не стал упираться рогом? продолжать разговаривать конечно можно, хотя это и повод задуматься.
НО. Опыт показал следующее - ни разу не было так, чтоб человек писал херню в ответ на этот конкретный вопрос и хорошо отвечал на другие. Всегда умение работать с битами сопровождалось тайными знаниями о, например, назначении виртуальных деструкторов, и наоборот.
no subject
Date: 2003-04-10 01:01 am (UTC)Всегда умение работать с битами сопровождалось тайными знаниями о, например, назначении виртуальных деструкторов, и наоборот.
Отвечу краткой банальностью — всё-таки тесты измеряют нечто большее, чем способность проходить тесты.
no subject
Date: 2003-04-21 05:51 am (UTC)Асболютно согласен. Если человек программирует на Си, но не удосужился разобраться с битовой арфметикой, то IMHO это значит что у него нет желания/возможности/способов разбираться что и почему работает. А мне кажется что это очень важное качества сотрудника, если конечно нет желания его воспитовать/учить/растить.
no subject