Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, aleks_mur, Вы писали:
_>>У меня исходная задача тоже вызвала массу вопросов. Бросаться чего-то писать не прояснив что это и для чего — самый плохой способ, в сложных проектах потом так и делают — сначала что-то накодят, потом разбираются "а надо-то было не так... эх.. не поглядели.. не спросили...". WH>Исходная задача вопросов не вызывает. Ваще. Ни одного.
Ну, ты царь! У меня их так много возникло что я даже не стал в дискуссию ввязываться..
Так по теме вспомнил одну задачку для старта бурана комплекс делали.. Там надо было время учитывать с точностью до миллисекунды, а разрядность 32 бита. Время не возврата 18 часов.. Так тупо не влазил счетчик в разярдную сетку.. Пришлось писать программу деления. Правда потом сделали отдельное устройство таймер..
Я задавал эту задачку десятку кандидатов, больше половину не поняли вообще о чем я спрашиваю. Только после наводящих вопросов. Мне кажется это очень хорошо отличает зрелость разработчика , когда он пытается выяснить требования, указывает на недостатки и предлагает свои решения.
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Я б сказал, что в таком виде функцию просто надо переименовать в int getUnixTime(), но уверен что вас такой ответ не устроит.
А если реализация возвращает что то другое? Если она например время в миллисикундах возвращает с момента старта ОС ?
Я в свое время давал:
# переворот строки
# задачка на дизайн классов для простенькой структуры данных при условии что человек работает в команде + простой пробег по ней (функцию написать)
# задачка на дизайн классов для куска функциональности, которую мы реально использует. Опять же человеку сообщалось что его кодом будут пользоваться другие люди
Пункты #2 и #3 были самые лучшие IMHO, так как сразу показывали людей, не могущих даже спроектировать простой класс.
Здравствуйте, minorlogic, Вы писали:
M>А если реализация возвращает что то другое? Если она например время в миллисикундах возвращает с момента старта ОС ?
M>Програмисту дали задание реализовать функцию которая возвращает текущее время с точностью до секунды
Здравствуйте, kosmik, Вы писали:
K>Пункты #2 и #3 были самые лучшие IMHO, так как сразу показывали людей, не могущих даже спроектировать простой класс.
Про классы учту. Но тут очень много субъективных моментов. Я встречал человека, который предлагал спроектировать класс "фонарик". Когда я узнал "правильный" ответ и методику оценки, я пришел к выводу, что это что-то среднее между "угадай о чём я сейчас думаю" и "да я это просто, чтобы разговор поддержать".
Здравствуйте, мыщъх, Вы писали:
М>речь не про это. чисто для разминки мозгов мне задачка показалось интересной (задачу придумал не я), но во-первых, это она мне интересна, потому что я вообще люблю с битами перепихиваться
Как такой вопрос: быстрая реализация BSF для uint64_t на C, без ассемблера?
Здравствуйте, мыщъх, Вы писали:
М>а как вам задача типа этой: есть число 32 бит. получить ближайшее меньшее или большее число с таким же точно числом установленных бит. признаюсь, что у меня на решение ушло полчаса (при записи ответа в одну строку на си). по тупому, конечно, ее любой может решить. или... не любой?
Меньшее с условием получается, примерно так
Если четное, то по аналогии
(((x ^ (x-1)) + 1) >> 2) | (x & (x-1))
Для нечетного надо сбросить/восстановить младший бит
Здравствуйте, Mystic, Вы писали:
M>Меньшее с условием получается, примерно так M>Если четное, то по аналогии M>(((x ^ (x-1)) + 1) >> 2) | (x & (x-1)) M>Для нечетного надо сбросить/восстановить младший бит
Здравствуйте, gandjustas, Вы писали: G>Нахрена задачи, не имеющие отношения к работе, решать?
Чтобы узнать, сколько гонмиков останется в живых. Это жизненно важно.
DP>Разве это противоречит условиям "получить ближайшее меньшее или большее число"?
я понял это условие таким образом -- ты можешь *один* раз выбрать, меньшее или большее число ты будешь получать, затем фиксируешь свой выбор и его реализуешь
любой из фиксированных вариантов пригоден для того, чтобы перебрать *все* такие числа, начав скажем с 1111110000 или с 0000111111; твой вариант все числа не переберет
какую задачу на самом деле ставил мыщъх -- это надо спросить у него; как я щас погуглил, без цикла все же можно обойтись, но тогда придется использовать деление
Здравствуйте, Mystic, Вы писали:
M>Здравствуйте, мыщъх, Вы писали:
М>>речь не про это. чисто для разминки мозгов мне задачка показалось интересной (задачу придумал не я), но во-первых, это она мне интересна, потому что я вообще люблю с битами перепихиваться
M>Как такой вопрос: быстрая реализация BSF для uint64_t на C, без ассемблера?
встречный вопрос -- а накуя? вы можете назвать хоть один компилятор где нет таких расширений? в ms, gcc, intel'е они есть и libc есть.
быстрая реализация на си? гм... без профайлера не скажу. табличная реализация vs калькуляция. трудно сказать, что будет быстрее на современных процессорах, тем более без указания типа процессора.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Mystic, Вы писали:
M>Здравствуйте, мыщъх, Вы писали:
М>>а как вам задача типа этой: есть число 32 бит. получить ближайшее меньшее или большее число с таким же точно числом установленных бит. признаюсь, что у меня на решение ушло полчаса (при записи ответа в одну строку на си). по тупому, конечно, ее любой может решить. или... не любой?
M>Без обработки на ошибки как-то так?
лично я обработки ошибок возложил на вызывающую функцию. типа:
foo(x)
{
res = next_bigger(x);
if (res <= x) // ошибка
res = prev_lower(x);
if (res >= x) // ошибка
}
"ошибка" в смысле "для данного x нет решения" (или бага в алгосе).
M>Большее как-то так? M>((x ^ (x-1)) + 1) | (x & (x-1))
поставил 3 получил 2. как-то не так.
M>Меньшее с условием получается, примерно так
могу показать свое решение если интересно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Mystic, Вы писали:
M>Здравствуйте, мыщъх, Вы писали:
М>>речь не про это. чисто для разминки мозгов мне задачка показалось интересной (задачу придумал не я), но во-первых, это она мне интересна, потому что я вообще люблю с битами перепихиваться
M>Как такой вопрос: быстрая реализация BSF для uint64_t на C, без ассемблера?
быстрая -- это на собеседовании? тогда я пас. без профайлера даже из готовых решений под конкретный ЦП не скажу что будет быстрее, особенно если ЦП с несколькими ядрами и молотит кучу задач.
чисто алгоритмически берусь решить за листке бумаги на паскале или питоне. но это будет тормоз. над быстрой реализацией надо медетировать и курить траву с лоером напару, потому как под это дело выдан патент и задача сводится к известному анекдоту про ответ девшуки клерку "я, конечно, могу сказать как получила продвижение по службе, только вам это навряд ли поможет".
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, kosmik, Вы писали:
K>>Пункты #2 и #3 были самые лучшие IMHO, так как сразу показывали людей, не могущих даже спроектировать простой класс.
ПМ>Про классы учту. Но тут очень много субъективных моментов. Я встречал человека, который предлагал спроектировать класс "фонарик". Когда я узнал "правильный" ответ и методику оценки, я пришел к выводу, что это что-то среднее между "угадай о чём я сейчас думаю" и "да я это просто, чтобы разговор поддержать".
гм... а если так?
light_on(); light_off(); is_light_on();
а вообще можно без классов -- letbelight(); а що? nuke_them_all() -- тут даже exit() не нужен. и конструктор испариться прежде, чем до него дойдет поток управления.
ЗЫ. по ходу дела тут нужно спроектировать сам фонарик. вот у меня фонарик на солнечных батарейках (без шуток). и у него только одна кнопка. а в детстве я паял фонарик на фоторезисторе, который автоматически включался, когда темно. вот написать программную реализацию такого фонарика (с учетом подавления помех от кратковременных вспышек) -- это самое то.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, Паблик Морозов, Вы писали:
G>Каким образом переворачивание списков или еще какие-то тупые задачи, не имеющие отношения к реальной работе что-то показывают?
разворот списка решается как на си (и других языках, активно работающих с указателями) так и на питоне с java-script и всяких прочих руби, где указателей вообще нет. более того, реверс списка вполне повседневная задача. вывести список в обратном порядке на печать -- это экзотика?
G> Не говоря уже шапках и гномах.
а чем вы так недовольны? свои первые собеседования я заваливал и жутко волновался, впрочем, оффера все-таки получал (т.к. собеседование это не экзамен и не бинарная логика, мой ответ был неправильным, но ход мыслей — зачотным). очень быстро я насобачился на этих задачах до такой степени, что проходил телефонные интевью, прижимая плечом трубку к уху и решая текущие дела без отрыва от производства. только мое торжество длилось недолго. меня просто перестали собеседовать. совпадене или нет -- не знаю. а может у HR'ов глобальная база есть -- не в курсе.
короче -- если у вас есть свое понимание того как нужно собеседовать людей это не значит, что все остальные собеседуют их неправильно. а в подтверждение своей правоты не помешало бы предоставить факты. сколько людей бы собеседовали и сколько из тех, кого вы взяли -- оказались теми, кто вам нужен.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.