Comments 366
( Про любимый мем было забавнее. С деревом просто непонятно и незабавно)
В общем очень сомнительно. Но запомнилось, да.
для char * const str надо сразу делать присвоение при объявлении, иначе ошибка компиляции может быть
Неинициализированные константы разрешены в C, но запрещены в C++.
Подробнее: stackoverflow.com/questions/31003713
1 секунда?
При столкновении будем не только отражать муравья, но и менять бусинки у муравьев.
Тогда у каждого муравья всегда есть ровно одна бусинка.
Каждая бусинка двигается равномерно и прямолинейно (никуда не отражается).
Все бусинки упадут за 1 секунду, значит и все муравьи тоже.
Появиться он там мог только двигаясь от центра и столкнувшись в месте X в момент T с муравьём, двигавшимся в центр, (T < 0.5) && (X < Tv). Для этого его отражатель должен был (двигаясь от центра) столкнуться в t=T-dT x=X-vdT. Суммируя много раз и доходя до t=0, x<0, что невозможно.
Муравьи падают рандомно, как по направлению, так и расстоянию до конца палки.
В лучшем случае если направление движения у муравьев будет в одну сторону, то все муравьи упадут с палки за 1с.Теперь если муравей упадет на самый край палки на значение 0см а выход у нас на 100см, и мы пренебрегаем размерами самого муравья, то по окончанию 1 секунды, он будет на 100 см, и все еще будет находиться на палке. при начале 2 секунды он вылетит с палки. Тоесть в лучшем случае у нас получается чуть больше секунды.
Теперь обратный случай. Тут интереснее. Муравьи падают на концы палки и смотрят в центр. За пол секнуды они достигают центра, после дружно разворачиваются и за пол секунды выходят с палки. Тоесть тоже получается одна секунда плюс минус.
1 секунда?Да, но только если в условие задачи добавить, что муравьи ползают лишь вдоль палки, что муравей при достижении конца палки обязательно падает с нее, что муравей не падает в любом другом случае. И если пренебречь временем на разворот. Сейчас же в ответе может быть и бесконечность:
Имеется палка длинной в один метр. На неё случайным образом падают десять муравьёв, которые ползут в разные стороны. Скорость движения одного муравья 1 м/с. В случае если муравей встречается с другим муравьём, то он разворачивается и ползёт в противоположную сторону. Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.
что муравей не падает в любом другом случае
Это как раз необязательно добавлять.
В логических задачах всегда есть основа для применения здравого смыслаИ часто там подвох именно в том, что у каждого понимание «здравого» (неявных условий) разное, как в задаче с самолётом на беговой дорожке.
В заданных рамках задачка имеет понятную логическую модель и простое решение. Чего не скажешь про смехуечки типа про взлетит-не взлелит или цвет платья.
Задачи на подвох, внимательность и логику, это, очевидно, задачи разного типа.Не очевидно. В данном посте задача про муравьев была предварена заголовком «На сообразительность» — это исключает возможность подвоха?
Не говоря уже о том, что поиск подвоха требует и внимательности, и логики, а задачи на логику не исключают возможность поиска обходных путей.
Если вспомнить, что обсуждалось собеседование программиста, и рассмотреть соответствующие рабочие задачи, то обычный поиск бага — это на задача подвох, внимательность или логику?
Серьёзно, я пока ответы не почитал, мне и в голову такое не пришло.
(потом вспомнил, что уже встречал эту задачу в школьные годы среди олимпиадных по математике, и точно так же не понял этого странного допущения).
По палке бегают муравьи с одинаковой постоянной скоростью. Всю палку муравей пробегает за минуту, а когда добегает до края, падает. Но когда два муравья встречаются, они разворачиваются и бегут в противоположном направлении. Докажите, что через минуту все муравьи упадут с палки.
Нашел немного усложненную.
This is from one of my favorite puzzle books, "Mathematical Mind-Benders". The first is a standard interview puzzle. The rest are variations on it, each requiring a unique insight.
The set up for all puzzles is: drop 25 ants randomly on a 1 meter rod. Each ant faces left or right with probability 50/50. Ants walk with speed 1cm/s. Whenever two ants colide they reverse direction. When ants reach the end of the rod, they fall off. The middle ant is called Alice.
(A) How long until Alice is guaranteed to fall off?
(B) What's the probability that Alice falls off the end she was originally facing?
© What's the probability that Alice is the last ant to fall off the rod?
(D) What's the expected number of collisions between ants?
(E) What's the expected number of collisions with Alice?
(F) What's the probability that Alice has more collisions than any other ant?
(G) Suppose Alice has a cold, which is transmitted when ants colide. How many ants will get sick?
(H) Suppose there's now only 24 ants and they are on a 1 meter long circle. What's the probability that Alice is back where she started after 100 seconds?
(A) 100 секунд. Модель муравьев с бусинками-именами. У Алисы единственной есть бусинка. При столкновении двух муравьев они мгновенно проходят друг против друга но передают бусинку. Можно однозначно построить траекторию бусинки от того муравья, который ее уронит в самом конце до начального муравья. Понятно, что Алиса может быть любым из упавших муравьев, а значит может быть и последней.
(B) Вероятность — (n+1)/2n = 26/(225) = 52%. Допустим алиса k-ая по порядку и изначально и смотрит влево. Она упадет слева только если k или больше муравьев всего смотрит влево. Ведь, слева упадет ровно столько муравьев, сколько смотрит влево изначально. Но раз они не проходят друг сквозь друга, сколько-то первых упадет слева, а остальные справа. Осталось просуммировать по всем позициям и возможному количеству муравьев смотрящих влево.
Т.е. суммируем 1/(n*2^(n-1))*sum_{k=1..n} sum_{j=k-1..n-1} C(n-1, j-1). Меняем порядок суммы и там нужна будет формула суммы (i+1)C(n,i).
© 1/n. Алиса упадет последней, если последний упавший обезличенный муравей будет держать бусинку. Это будет если один конкретный из n муравьев держал бусинку в самом начале. С вероятностью 1/n он и будет алисой.
Each ant faces left or right with probability 50/50.
Если сторон всего две, то как минимум 5 из них ползут в одну и ту же (а другие 5 в другую).
То, что как минимум 5 из них ползут в одну и ту же сторону — верно.
То, что другие 5 ползут в другую сторону — неверно.
То, что как минимум 5 из них ползут в одну и ту же сторону — верно.А в какую же сторону тогда ползут другие, если в эту — только 5? Варианта «стоят на месте» в задаче не описывалось.
То, что другие 5 ползут в другую сторону — неверно.
Не только, а минимум. Все 10 могут ползти в первую сторону
В логических задачах всегда есть основа для применения здравого смыслаСреди задач также встречаются задачи на внимательность.
иначе под предлогом уточнения начальных данных любая задача может быть сведена к абсурду. Вы могли потребовать определенияМог, но не потребовал, именно потому, что у меня не было задачи сведения к абсурду.
Здесь виден еще один момент, который хорошо бы прояснять на собеседованиях, вопрос баланса — в работе нет необходимости выбирать между крайностями. Обычно следует избегать экстремумы, оптимальное поведение где-то между ними.
Ничего не рефакторить, чтобы не сломать, или переделывать всё? Со всеми соглашаться или всем отказывать? Молча принимать нечеткое ТЗ или придираться к каждой букве, бесконечно требуя пояснений? Крайности обычно являются худшим выбором из возможных вариантов.
Вы могли потребовать определения…Есть две крайности — молча принимать ТЗ с пробелами или бесконечно уточнять ТЗ. Мое мнение — обе крайности плохи, полезно выдержать баланс, заполнить ключевые пробелы и выдать решение.
вы не смогли решить простую задачку, и сейчас, досадуя, занимаетесь софистикой...
Что лично я и сделал выше — 1 секунда при таких-то допущениях.
Почему Вы свели это к «не смог простое, досадует, софистика» — не знаю, но мне не интересно обсуждать меня или Вас, поэтому предлагаю закончить диалог.
Если не добавить, то минимальное время — меньше секунды
Возможно, но минимальное время никого не интересует.
Итого имеем задачу на сообразительность при нечетко поставленном ТЗ. Вы точно всё ещё хотите работать в нашей компании?
Итого имеем задачу на сообразительность при нечетко поставленном ТЗ.
Интервью очное и ТЗ можно уточнить.
Например, «Найдите точную нижнюю оценку максимального времени через которое муравьи упадут с палки.» © Интернет.
Или «максимальное время падения последнего муравья с палки».
Например: муравьи в штатном своём состоянии вполне способны ползать по палке вверх ногами. Поэтому, нам надо принять что муравьи всё же падают с палки (или нет, так как возможно это и есть правильный ответ — они будут ползать по палке пока не помрут с голоду, в случае если эта палка левитирует над землёй).
Длина муравьёв тоже нужна: если принять, что это сферический муравей в вакууме и его длина равна нолю, то в секунду у нас с палки свалятся все муравьи: крайних муравьёв просто некому останавливать и в худшем случае, если столкновение муравья и толпы произошло на самой границе палки, одному из конечных муравьёв как раз потребуется 1 секунда на её преодоление.
return *(uint32_t * (&a)) > b
Я мысль понял, а компилятор — нет. Надо
return *((uint32_t *) &a) > b;
int main()
{
if(printf("Hello world!")) {}
}
int main()
{
if(printf("Hello world!")) {}
while(true) {}
}
хотя не уверен что на отсутствие return в main компилятор ругается, по краней мере gcc, который у меня под рукой, для main такого предупреждения не генерит.
{
…
}
В принципе, это и было мое решение.
It shall be defined with a return type ofint
and with no parameters:
or with two parameters (referred to here asint main(void) { /* ... */ }
argc
andargv
, though any names may be used, as they are local to the function in which they are declared):
or equivalent; or in some other implementation-defined manner.int main(int argc, char *argv[]) { /* ... */ }
C99 n1256, 5.1.2.2.3: «reaching the
}
that terminates the main
function returns a value of 0.»*нормальный* компилятор должен
gcc не жалуется. А какой компилятор «нормальный» и жалуется, хотя бы один?
C89/90 заявляет, что это *обязательное* действие.
Нет, не заявляет. Там было «If the main function executes a return that specifies no value, the termination status returned to the host environment is undefined.» — т.е. C99 только изменил undefined на 0, по поводу корректности программы ничего не поменялось.
Ну а ваши фантазии по поводу «компиляторов не-курильща» не имеют никакого отношения к реальности. Стандарт такой, какой есть, и компиляторы такие, какие есть. Если вам не нравится Си, пользуйтесь другими языками.
(В качестве поясняющего примера: неинициализированная переменная имеет undefined value, но если неинициализированную переменную не читать, то undefined behaviour не происходит, и программа полностью корректна.)
В любом случае, это в стандарте исправили 21 год назад.
int main () {
switch(printf("Hello world!\n")){}
while(printf("Hello world!\n") == 0){}
}
int32_t a = -200;
uint32_t b = 200;
return *(uint32_t * (&a)) > b
Тут прикол в том, что код написан неверно? Или что приведенный к uint -200 (0x FF FF FF 38) будет больше чем 200?
Для ответа на этот вопрос необходимо обратится к стандарту. Не могу уверенно говорить на C, но в C++ такая запись приводит к неопределенному поведению, так как формат записи знаковых чисел не задан. Предположения о "two's complement" знаковых чисел может привести к очень серьезным головным болям при отладке.
Поэтому правильный ответ на этот вопрос — undefined behavior или зависит от платформы.
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2218.htm#c-sign
Про муравьёв 5 секунд(максимум 5.5)… каждую секунду с двух концов падает 2 муравья...(а тот движняк что между крайними нас не волнует)
странно, жду тогда правльного аргументированного ответа… Разве что ход рассуждений скорректировать… каждые 0.5 секунд падает два муравья по средняку.
~70 шагов в секунду, сильно
А чего муравьям вообще падать? Им ведь не важно положение, если поверхность достаточно не гладкая.
Это где про бусинки? Не согласен… в том варианте вообще вообще количество муравьев не важно… хоть миллиард их… всегда секунда будет
Ахилл черепаху по ним тоже, извините, не обгонит)
Я согласен с решением 1 секунда… просто мозг выносит, что не зависит от количества насекомых :-)
Дак они же параллельно все двигаются. Допустим, они все идут только в одну сторону изначально (никто ни с кем не столкнется). Понятно же, что тут время зависит только от длины палки, а не от количества муравьев? Или это тоже мозг выносит?
и стройте на нем траектории муравьев (по оси ординат — время) в виде линий под углом 45 градусов. Отрезок — это «палка», пересечение траектории с вертикальными линиями — это «падение»
Сразу заметно, что
1) один муравей в самом максимальном случае сможет ползать 1 секунду
2) столкновения 2х муравьев — это пересечение траекторий, оно не удлиняет и не укорачивает суммарное время (т.е. максимум из их траекторий)
3) ну и по индукции таких столкновений может быть хоть 100 (можно для эксперимента почертить пяток прямых, а потом раскрасить — как там ползал каждый муравей)
Два поезда, находившиеся на расстоянии 200 км друг от друга, сближаются по одной колее, причем каждый развивает скорость 50 км/ч. С ветрового стекла одного локомотива в начальный момент движения взлетает муха и принимается летать со скоростью 75 км/ч вперед и назад между поездами, пока те, столкнувшись, не раздавят ее. Какое расстояние успевает пролететь муха до столкновения?
Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.
Идеальные условия для эксперимента — диаметральные векторы и равноудаленность
муравьев друг от друга?
Половина расстояния между муравьями х8, это пройдут все стукалки.
Дальше они еще разок стукаются в серединке — девятое 0.55 и проходят
по половине палки — полметра.
~0.995 очень грубо. Если бы я хотел впечатлить работодателя —
то смоделировал бы ему самую плохую ситуацию. С учетом «столкновений» — в финансовой сфере
Теперь рассуждаем:
— муравьи, которые бегут от центра, если нет препятствий, упадут не позднее 0.5 секунды
— муравей, который оказался между двумя муравьями, бегущими к центру, даст им центробежный :) импульс
— а с чего я взял, что муравьи как-то взаимодействуют? максимальное время при описанных условиях — 10 секунд. Муравей падает на конец палки, проползает 1 метр и падает с другого конца. И так — 10 раз.
Олимпиадные задачи которые можно знать но в реальной жизни применения не видел.
Вы лучше скажите, как в последовательности целых чисел, где каждое число, кроме одного, содержится трижды, а то одно число — единожды. Тоже решаемо за константное время. Конечно, если знаешь про решение с xor, додуматься сильно проще.
Вы, наверно, имели ввиду линейное время и константную (вернее, O(log max_int)) дополнительную память? Так-то числа все прочитать надо обязательно, поэтому быстрее чем за линию вы никак ответ не найдете. Если можно не константную дополнительную память — то можно хэш таблицей сделать.
Логично сделать решение через обобщение xor на троичную систему счисления: тупо складываем все цифры в троичной системе счисления отдельно и берем по модулю 3. Останется только то единственное число. Переводим его назад.
Можно делать с переводом в троичную систему счисления делением на 3. Хранить цифры в двух битах, например. Памяти будет требовать все то же O(log max_int) — ровно 2 переменные для хранения суммы в троичной системе счисления и еще 2 для текущего числа). И работать будет за линейную сложность (разрядов меньше log(max_int) — линейно от размера входных чисел).
Вы, наверно, имели ввиду линейное время и константную (вернее, O(log max_int)) дополнительную память?
Именно, это меня что-то переклинило.
Логично сделать решение через обобщение xor на троичную систему счисления: тупо складываем все цифры в троичной системе счисления отдельно и берем по модулю 3. Останется только то единственное число. Переводим его назад.
Ну вот я так и сделал, да. На битовых операциях.
Как работать с cmake?
Хороший вопрос. Правильный ответ есть? ;)
Встречаются достаточно часто фирмы, которые собеседуют не по теме вакансии, а потом удивляются почему за месяц человек ничего не сделал. Ну правильно! Логичнее же поиграть в американскую игру "предложите ваш оклад", а мы послушав, может и скажем сколько наша фирма модет вам заплатить. У нас же из моды американский опыт не уходит. Хотя американские программисты на порядок слабее русских!
Хотя американские программисты на порядок слабее русских!
Поэтому русские основали свой facebook, Microsoft, google и построили силиконовую долину.
Самая наркоманская задачка такого рода из тех, что я видел :)
float bon_jovi[4][4]=
{ {0, 2, 0.5, 2},
{1, 3, 3 , 0},
{2, 0.5, 0, 1},
{0, 0, 0, 0}
}
#define FIRST_SONG 3
#define LAST_SONG 1
#define CD 0
#define ARTIST 1
void f(float *p, int jazz, int hiphop)
{
int high_rating=0;
int low_rating=high_rating
int music;
float sum=0.0;
for (music = jazz; music <= hiphop; music++)
{
sum += *(p++)
if ( p[music])
high_rating++;
else
++low_rating
}
p--;
sum += *(--p)
printf("%d %d %f", high_rating, low_rating, sum)
}
int main()
{
f(&bon_jovi[CD][ARTIST], LAST_SONG, FIRST_SONG)
return 0;
}
Единственный адекватный способ понять куда идти, и какие течения сейчас есть – это ходить на собеседования.
Чтобы обойти или влиться?
Пароход вы или плот?
Рандомно общаться с неадекватами, потратить свое и их время (твое ты потратил, фиг бы с ним, а вот чужое — это уже $$$), ради повышения твоего ЧСВ и возможно получения тебе же какого-то пинка, для саморазвития за чужой счет и увеличение процента неадекватов с точки зрения HR, HR звереет, руководители стонут во все стороны- «ну что вы хотите, адекватов не найти, только сегодня 1488 человек отсобеседовали», ну и прибыли владельцам hh.xx, job.xx и иже с ними?
Если есть ощущение, что надо развиваться- надо развиваться, курсы, петы, хобби, если не устраивается работа, уровень оплаты, график- его надо менять.
А вот такое хождение по собеседованиям- по мне сродни мелкой кражи, как тырить туалетную бумагу из общественного туалета, вроде мелочь, кто-то закрыл свою потребность, но в итоге кому-то от этого может стать не очень хорошо.
А разговоры про прибыль хх.ру — вообще нонсенс, так можно дойти и до покупки товара по каждой первой рекламе — а что? — компания потратилась на рекламу, сотрудники рекламной компании придумали дизайн, повесили объявления — а ты, тунеядец и просто козёл, прошел мимо и не купил.
Для соискателя услуги рекрутерских и компаний агрегаторов объявлений вроде бы не стоят ни чего, а вот для работодателей уже ощутимо, что обратно ударяет по соискателям, просто об этом еще не говорят вслух, но рынок сильно монополизирован тот же hh уже может выставлять ценник за свои услуги почти любой.
Про рекламщиков- мне совершенно не нужна их услуга, и по факту она является навязанной, так как в стоимость любого изделия не малая доля уходит к ним, спам со всех сторон, даже на федеральных каналах, заклеенные подъезды и столбы — будь моя воля — запретил бы как класс.
А на счёт воровства бумаги, это не так, ибо это работа HR искать и собеседовать, и если им что-то не нравится, то работу надо менять. И я собеседовал сам, такое количество фарша насмотрелся, уууу. Поэтому эффективный способ сначала смотреть код, а потом остальное.
Находишь человека, работающего на интересующей должности, если ты увлекающийся и вообще тру профи, не составит труда, кстати все эти митапы, выставки, конференции и кружки по интересам, в 2020 социалки и даже боюсь этого слова- чатики- как раз инструменты для этого, а не обивание порогов HR, далее по тексту, ткнут носом и еще помогут подтянуть, а потом мимо HR проведут.
Сам собеседовался и собеседовал, был бы рад, если меньше народу бродило за волшебным пинком и был бы рад, не тратить часы на таких, из-за этого и возникают все эти веселые вопросы про круглые люки и деревья.
А по сути Вы не совсем правы. Ходя на собеседования можно легко обнаружить, что уже не помнишь как маску сети посчитать.
Идейка для hh — надо давать работодателям (за отдельную, конечно плату) статистику прохождения соискателем собеседований за последние 5-10 лет.
Это почему? Потому что последний раз вам требовалось её считать в 2003 году? Тогда зачем вам собеседование с такими задачами, и возможно, работа с такими задачами?
Рабочий контракт запрещает.
Тут могла быть ссылка на ТК РФ и на судебную практирку, которые такие запреты превращают в прах.
Кроме ничтожности таких запретов де-юре в некоторых случаях, есть влияние их нарушения на перспективы в компании де-факто. Например, перестанут закрывать глаза на мелкие нарушения трудовой дисциплины раз хочешь по закону. Роста не будет, премий, задачи только неинтересные и т. п.
0xd34df00d проживает в США, если память не изменяет.
Рабочий контракт запрещает.Регистрируешь ООО «Рога и Копыта», в учередители девушку/маму/кота. И пусть доказывают, что это ты работал.
твое ты потратил, фиг бы с ним, а вот чужое — это уже $$$
Вообще-то наоборот. Их много и это их рабочая обязанность, а я один.
Понять, стоит ли пробовать поработать в конкретной конторе в общем случае можно только прособеседовавшись. Лишь единицы нормально описывают предстоящие задачи в вакансии.
Берешь высокую планку, находишь вакансии под нее, смотришь требования, открываешь молескин, выписываешь дифф от того, что сегодня имеешь, идешь забрить не достающее.
В вакансии «опыт работы с системами контроля версий (CVS, MS VSS, SVN, Git)». Сразу побежите в антропологический музей с окаменелостями знакомиться или трезво рассудите, что знание одного Git из всего списка вполне достаточно?
А вот такое хождение по собеседованиям- по мне сродни мелкой кражи
Это уже ваши личные тараканы.
Почему кража, а не, скажем, рекет? Приходите, негодяй эдакий, отжимаете бесценное рабочее время, которое HR мог на просмотр тиктока потратить.
Понять, стоит ли пробовать поработать в конкретной конторе в общем случае можно только прособеседовавшись.
Речь же о ситуациях, когда идешь на собеседование вообще работать у них не собираясь, даже если оффер сделают, нет?
Речь же о ситуациях, когда идешь на собеседование вообще работать у них не собираясь, даже если оффер сделают, нет?
Не мы такие, жизнь такая(С). Хрюши таким же вызваниванием и «собеседованиями» чисто для мониторинга рынка развлекаются только в путь, как только экономика схлопывается. Так что тут все взаимное, и чистоплюйствовать сродни вере в эльфов с единорогами и санта клаусами.
Что такое красное и бинарное дерево?
Наверное "красно-черное"? Или бывают и просто красные деревья?
Меня в какой-то момент озарило, какова принципиальная структура красно-чёрного дерева: любой путь от корня до листа содержит одинаковое количество чёрных узлов, и между каждой парой последовательных чёрных узлов может быть (а может и не быть) один красный. Отсюда сразу ясно, что длина любого пути от корня до листа может быть от N до 2N-1 узлов, то есть, условно говоря, сделать красно-чёрное дерево несбалансированным более, чем вдвое, вы не сможете.
К сожалению, понимания операциям, сохраняющим этот инвариант, это не особо помогает.
Я бы очень удивился, если бы в ответ на этот вопрос ожидали услышать все в подробностях, а не что-то вроде "красно-черное дерево — это бинарное дерево, в котором узлы условно делятся на красные и черные, и в котором всегда соблюдается некий инвариант (который я сейчас не помню), при каждой операции, благодаря чему дерево всегда сбалансировано".
Если человек отвечает что-то в этом роде, то дальше можно спросить, зачем вообще нужны деревья, зачем их балансировать, какие есть альтернативы — на мой взгляд это просто позволяет узнать, изучал ли человек алгоритмы и структуры данных вообще, а если изучал — то зубрил определения или ухватил суть.
Если ожидается точный ответ как по учебнику, то это другое дело, конечно. Но сам вопрос по мне так вполне нормальный.
Может ли интерфейс RS-232 работает ТОЛЬКО по двум проводам: RX и TX? Тут дам ответ: Оказывается, что плохонько, на 9600, но может!!!
А теперь второй вопрос: почему?
А зачем вообще нужны все остальные провода в этом интерфейсе (в смысле, на практике зачем)? Или вы имеете в виду и без земли тоже?
А это вообще законно?! Разве между разными устройствами не будет совершенно случайной разности потенциалов, которая может сжечь все к чертям?
(Я не электронщик, но мама всегда говорила земли соединять сначала, а только потом сигнальные провода)
Будет работать или нет — это уже другой вопрос, но мне казалось, что это как неопределенное поведение — даже если сейчас работает не факт, что завтра не сгорит.
А зачем вообще нужны все остальные провода в этом интерфейсе (в смысле, на практике зачем)?
Они бывают полезны когда идёт большой поток данных. Мне они пригождались при работе с модемом.
Вообще это был сарказм :) Так-то я знаю, зачем они нужны, просто ни разу не сталкивался с потребностью в них — и не знаю никого, кто сталкивался бы.
просто ни разу не сталкивался с потребностью в них — и не знаю никого, кто сталкивался быВот и выросло поколение, как говорится в известном анекдоте про тетрис.
Например, есть старый девайс со старым драйвером RS232, оба сертифицированы. Этот старый драйвер работает, используя управление потоком. Данные оттуда надо как-то вытащить наверх, для анализа на более современном оборудовании.
Из личного опыта — моим первым принтером был Robotron 6329 от ДВК, который использовал управление потоком в своем модуле последовательного интерфейса. В драйверах я тогда не разбирался от слова совсем, замыкая DTS сигналы управления потоком на нужный уровень. И принтер нормально печатал графику с Синклера после этого (для тех времен) хака.
Потом, достав-таки мануал к принтеру, я понял, как переключателями на плате принтера это управление потоком отключить, но это было сильно потом.
Шина RS-485. Обычно на такой линии есть терминаторы. Однако, у нас схема звезда, с переменным количеством подключаемых модулей. Какие средства избежания коллизий и помех нужно использовать?
А что, так можно было? Я знаю только одно решение: переделать звезду на шину.
Мой опыт показывает, что можно слегка отходить от нужных 60 Ом, если линии короткие и/или бодрейт низкий.
Кроме того, для RS-485 существует способ терминации не согласованием сопротивления, а на диодах Шоттки, что позволяет терминировать все концы, не заморачиваясь перерасчетом сопротивления (каковой нельзя сделать, если заранее неизвестно количество узлов)
Минус этого способа — полного подавления не выйдет. Выбросы ниже порога открытия диода не гасятся.
Плюс — в отличие от резисторов, диоды не рассеивают энергию основного сигнала.
Чтоб в туалет сходить — тоже. Но обычно люди идут в туалет, когда чувствуют потребность.
И для того, и для того нужны ненулевые усилия. Вы же не описали насколько ненулевые.
"Сходить в туалет" разве синоним "испражняться"?
Ну вот я уехал из одной страны в другую достаточно надолго (уже больше семи лет) и получил разрешение на постоянное бессрочное проживание в этом году. Не могу сказать, что потребовало каких-то особых усилий, просто длительная неопределенность: разрешат ещё на год продлить разрешение на временное проживание или нет, ну и в конце дадут на постоянное или нет. Нервов много потрачено, усилий — не сказал бы.
Вы же не ругаетесь на гравитацию.
Законы гравитации придуманы людьми. В природе нет, например, закона всемирного тяготения. Есть взаимодействие между телами и часть этого взаимодействия люди описали для себя с достаточной для многих применений точностью, придумав этот закон.
Ну и так же, как верно заметили, если вы платите налоги, то уже финансируете изготовление средств убийства.
Вы сами приводите пример нашумевшей JSON License («The Software shall be used for Good, not Evil»), которую не считают open source ни FSF, ни OSI, что уж говорить про более конкретные ограничения.
Хорошо быть пацифистом, когда лично тебе ничего не угрожает. В том числе и потому, что танк с офигенной системой наведения никогда не выстрелит, потому что другие парни запилили ПТРК с ИИ. А пока есть варианты решения нерешённых проблем через войну — без ВПК и армии не обойтись.
А если они наводят артиллерию или прямо уничтожают технику и «живую силу»?
Вот именно. Люди все равно продолжают стрелять в людей, только не стрелами из лука, а беспилотниками и РСЗО.
танки и беспилотники не подпустят противника к тёплому офису — затем они и нужны.
Всё равно цель — не беспилотник противника, а офис. Или весь город, если нет возможности пульнуть по офису.
Получается битва автономных танков и беспилотников с обеих сторон.
Не получается. Цель всё равно не беспилотники, а люди, техника, обьекты инфраструктуры. Просто защищать, подвесив над каждой целью персонального охранника, не получится: противник получит преимущество (перегруппируется, или изобретёт еще более сильную вундервафлю) и долбанёт.
Так что гонка вооружений — минимальное зло. Обратите внимание, производители оружия друг с другом не воюют.
Зачем тогда воякам заставлять сови танки и беспилотники стрелять по вражеским, если можно стрелять по тёплому офису противника?
Пора выйти в реальность.
Но я принимал участие и с тепловизионными системами «зачистки». Так что тоже было дело.
Весь этот пацифисткий морализм очень хорош до того момента, пока мы не понимаем что весь прогресс до нас дошёл из-за ВПК. Компьютер, с которого вы читатете этот текст изначально разрабатывался для расчёта падения балистических снарядов и дешифровки вражеских сообщений. Интернет тоже. А то что потом стал народным, так это недоразумение.
Если Россия перестанет производить и поставлять оружие, на Земле настанет мир и порядок? Райские сады расцветут и из крана польётся пиво?
Если да, то я первым выйду за борьбу против производства оружия.
Весь этот пацифисткий морализм очень хорош до того момента, пока мы не понимаем что весь прогресс до нас дошёл из-за ВПК.
Но не потому, что ВПК сам по себе способствует прогрессу, а потому, что на ВПК политики готовы тратить неограниченные ресурсы, а на гражданские отрасли — не готовы.
Надо понимать, что ВПК — это всегда чистый минус из ВВП страны, из экономики. Обычные инвестиции циркулируют десятки раз, развивая страну, военка — сжирает ресурсы, расставляя танчики по периметру.
Да нет, всё то же самое: ВПК обеспечивает работой кучу предприятий, а те — кучу своих контрагентов, и так далее.
Вклад войны в прогресс тоже частенько преувеличивают и более того, если военные инвестиции ещё могут дать какой-то побочный полезный продукт в гражданское общество, то непосредственно ведение военных действий — это всегда колоссальные потери всех видов капитала — физического, финансового, человеческого, процессного (разрушение производственных и прочих связей).
Именно потому всюду есть «министерства обороны» и нигде нет «министерства нападения», что все вояки надеются не вести военных действий. Чем больше танчиков расставлено по периметру, тем менее вероятно, что их придётся вести.
Остаётся только гадать, на сколько вторая мировая замедлила эти исследования, а не ускорила — в военное время у стран обычно не до того, чтобы активно исследовать какие-то абстрактные вещи, пусть даже и потенциально полезные в отдалённой перспективе.
То, что все первые компьютеры заказывались непосредственно министерствами обороны, показывает, что это были не «потенциально полезные в отдалённой перспективе» вещи, а остро необходимые во время войны.
все вояки надеются не вести военных действий
С каких пор? Захват территорий, ресурсов, получение политических преференций и большей власти, карьерный рост. Поводов вести войны у вояк высокопоставленных много.
Ну так с таким же успехом можно платить этим людям зарплату за сидение на месте и от этого в принципе ничего не изменится для экономики страны.
Да, это как ББД, про который вроде бы соглашаются, что он во благо экономике.
В общем, нельзя одно отделить от другого, военная и гражданская продукция связаны тысячей незримых нитей.
«К бывшему офицеру приходит сын, он сына спрашивает: «Тут кортик был, где он? » – «Не ругайся, я поменял его на часы у мальчика с соседнего двора». Отец ему говорит: «Покажи часы, да, хорошие. А если завтра придут бандиты к нам, убьют меня, мать, братьев твоих, сестру изнасилуют. А ты им что скажешь? Добрый вечер, московское время 12 часов 30 минут?
Из запомнившихся задач (все на сеньор веб-разработчика на php):
- интерпретатор простого ЯП (подмножество паскаль кажется): переменные, арифметика,
- задача на выявление рассинхронизации тактовых генераторов двух компьютеров с вымышленными(?) архитектурой и ассемблером с простейший одноранговой сеткой, скорее даже прямым соединением
- удалённый лайвкодинг: написать и поднять простой CRUD на symfony без генераторов в докере (не помню Докер условием был или сам решил)
- нарисовать грубую модель предметной области jira, нарисовать схему сервисов: серверы, сторы, очереди, СУБД и т. п.
Vожно договориться о собеседовании двумя техническими специалистами с разных проектов.
Каждый задает свои вопросы, каждый пишет свой фидбек, который видят оба собеседующих.
Попасть на борт — это ещё не самая сложная задача. Самое сложное — это удержаться на борту данной компании.
Это как поступление на математику мехмата МГУ. Очень легко было поступить (абсолютно ничего сверх стандартной школьной программы), но очень трудно было удержаться. Излишне расслаблялись и вылетали за неуспеваемость даже призеры международной математической олимпиады. Но если ты позволяешь себе «отдохнуть» не более двух недель в семестр, а все остальное время пашешь, пашешь, пашешь, то можно удержаться в университете даже простому смертному, то бишь, не вундеркинду.
Если станем спрашивать, чем syscall'ы на arm и x86 отличаются, боюсь не наймём никого никогда вообще.
Моё мнение, что они просто хотели посамоутверждаться.
Значит, правильный ответ: «нет разницы»
Имеется палка длинной в один метр. На неё случайным образом падают десять муравьёв, которые ползут в разные стороны. Скорость движения одного муравья 1 м/с. В случае если муравей встречается с другим муравьём, то он разворачивается и ползёт в противоположную сторону. Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.
+infinity
Возьмем двух муравьев бегущих в одну сторону, но находящихся на противоположной стороне палки(хотя координата Х у них одинаковая, ось Х — вдоль длины палки), на конце палки они будут встречаться с друг другом… и разворачиваться и опять встречаться на другом конце.
Я такое видел в очень крупных компаниях, в которых работают больше сотен человек
Это, в лучшем случае, средняя компания. Никак не крупная и, тем более, не очень крупная.
Для меня очень хороший показатель компании, когда просят показать примеры своих проектов и кода.
Все это, как правило, под NDA. Покажете мне ваши куски кода "боевых комплексов"?
Собственно, задача:
Есть два регистра: R1 и R2
Есть две команды:
C1: R1 := K*R2 — R1
C2: R2 := K*R1 + R2
Есть целевое число N
На входе: K, N, R1, R2
Нужно: распечатать минимальную последовательность из команд, позволяющую получить N в R1 или в R2 (в любом из двух регистров)
Либо напечатать ничего
Известно, что K != 0, R1 != R2, K, R1, R2 — натуральные, N — целое.
Точно опечаток в условии нет? Странные какие-то операции.
Понятно, что наивное решение — обход в ширину. Вот только вообще непонятно, а сколько состояний надо будет обойти прежде чем найдется N. А вы можете доказать, что оно всегда найдется? Сколько вообще нужно бродить прежде чем сказать, что решения нет?
Обычно в таких задачах операции не абы какие, а имеют какой-то инвариант или структуру. И тогда можно, например, доказать, что достаточно рассматривать только состояния с R1 и R2 не больше N по модулю. Или, например, что можно получить все числа, делящиеся на GCD(R1,R2) и нужно не более N^2 операций.
Вообще, условие "напечатать ничего", если ответа нет, позволяет считерить — пусть решение повиснет, съест бесконечное количество памяти и ничего не выведет, если пути нет. Но вряд ли такое решение подразумевалось.
самое необычное задание которое у вас было на интервью
Задача из физтеховской шутки «решала вся кафедра, но к экзамену решила»: Отсортировать 8-терабайтный массив байтов.
За 1 проход сосчитать количество байтов 0х00 = n00,0х1 = n01, ..0xFF =nff
За 2 проход заполнить массив значениями 0х00 — n00 шт, 0x01 — n01 шт…
А кто таблицу в одно действие заполнять будет?)
"к.т.н." разные трюки придумали.
Но можно об этом даже не думать, а использовать что-то вроде Integer.bitCount(a) или popcount.
Но все обернулось гораздо интереснее. Технический специалист с порога сказал: «мы продаем сосиски». Да, это оказалась розничная контора быстрого питания, где надо было программировать «параллельную финансовую отчетность». Сразу стало понятно, откуда хорошая зарплата. Пришлось отложить повышение и поработать еще пару месяцев в стартапе на С++. Денег было в 3 раза меньше, зато совесть чиста.
Через 2 месяца удалось пройти собес в VDI (ныне EPAM). Задачка была прикольная — написать на MFC (надеюсь, кто-то еще помнит) MDI приложение с разными спецэффектами в меню: раскраска пунктов, картинки, еще какие-то украшательства. Справился и прошел, не жалею, что не повелся на зарплату.
Насколько мне известно, главная проблема в фирмах, работающих на МО - это запрет на использование очень многих передовых стеков разработки. Причина - они годами проходят и еще не прошли проверку безопасниками МО на наличие вредоносного и шпионского кода. В результате, на некоторых собеседованиях с такими фирмами мне предалагали поработать на Java 7 и Java EE 5 ну и так далее.. Совсем не захотелось, несмотря на очень приличную предлагаемую зарплату.
Программисты, ходите на собеседования