Как стать автором
Обновить

Комментарии 366

НЛО прилетело и опубликовало эту надпись здесь
Самое идиотское — пояснять, почему он любимый. Я бы не осилил
( Про любимый мем было забавнее. С деревом просто непонятно и незабавно)
Есть в этом логика: если корень сверху, ты — пингвин, если снизу, ботаник.
А если я иву нарисую, это будет кривой успеха моих проектов?
Может, она просто красивой кажется. Может, меня вдохновение вело,
а не практичность или эффективность?
Камыш, осока, деревня…

если корень сверху, ты — пингвин

Фанат AC\DC уж тогда, чтобы солиднее выглядеть)
У меня было однажды. Это часть теста дом-дерево-человек, в психологов играются.
НЛО прилетело и опубликовало эту надпись здесь

Ого, а так можно вообще?

НЛО прилетело и опубликовало эту надпись здесь
Однажды я был на собеседовании в компанию, которая делала софт для психологов. Помимо технического интервью там было интервью с главным психологом. Вопросы там были конечно соответствующие. В конце мне даже рассказали про мою личность, и всякое такое. Это было необычно… но очень не приятно, не для того всё же пришел, возможно там параллельно ещё была проверка на стрессоустойчивость. И на сколько у меня математическое мышление. И на сколько развитая у меня личность. И на работу с оценочными суждениями. И вообще.

В общем очень сомнительно. Но запомнилось, да.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Кстати, даже если бы это было так, то из-за того, что очень часто stdin в интерактивных окружениях является просто dup() от /dev/ttyN, наряду с stdout и stderr, запись в stdin приведет к печати текста в терминал.

для char * const str надо сразу делать присвоение при объявлении, иначе ошибка компиляции может быть

Неинициализированные константы разрешены в C, но запрещены в C++.
Подробнее: stackoverflow.com/questions/31003713
Почему не 20?
Можно не отражать муравьев а пропускать их друг сквозь друга?
А разница в чём? Условия задачи отражение.
Нет никакой разницы, все муравьи идентичны.
Хотя в условии задачи указано отражение муравьёв, индивидуальность муравья не имеет значения для решения. С тем же успехом муравьи могут проползать мимо и продолжать путь. Тогда решение видно сразу
да его и так видно сразу
Добавим каждому муравью бусинку своего цвета.
При столкновении будем не только отражать муравья, но и менять бусинки у муравьев.
Тогда у каждого муравья всегда есть ровно одна бусинка.
Каждая бусинка двигается равномерно и прямолинейно (никуда не отражается).
Все бусинки упадут за 1 секунду, значит и все муравьи тоже.

Но муравьи могут не упасть, они могут перебежать на другую сторону палки, вверх ногами

Надо доказать невозможность существования муравьёв, идущих к центру, находящихся от края далее чем vt в любой момент [0, len/2v] = [0, 0.5].
Появиться он там мог только двигаясь от центра и столкнувшись в месте 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 м/с. В случае если муравей встречается с другим муравьём, то он разворачивается и ползёт в противоположную сторону. Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.
что муравей не падает в любом другом случае

Это как раз необязательно добавлять.
Если не добавить, то минимальное время — меньше секунды, чтобы схватить и встряхнуть палку. Тут, вроде бы, речь шла о собеседовании программиста, а программист обязан учитывать все возможные условия выхода из цикла и тщательно вычитывать ТЗ в поисках пробелов или двусмысленностей, поэтому таки желательно добавлять все найденные замечания.
В логических задачах всегда есть основа для применения здравого смысла, иначе под предлогом уточнения начальных данных любая задача может быть сведена к абсурду. Вы могли потребовать определения не только времени разворота, но и коэффициента трения лапок по палке (на случай, если палка из тефлона, а муравьи на роликовых коньках), действующего ускорения свободного падения (муравьи грустно зависают на концах палки в космосе), степени упругости столкновения (пусть муравьи отлетают с разной скоростью), линейных размеров муравья (упирая на вырожденные случаи, когда они превышают метр), или вот пусть автор задачи уточняет, не набрала ли система с муравьями набрала около-световую скорость при нахождении наблюдателя на Земле.
В логических задачах всегда есть основа для применения здравого смысла
И часто там подвох именно в том, что у каждого понимание «здравого» (неявных условий) разное, как в задаче с самолётом на беговой дорожке.
Задачи на подвох, внимательность и логику, это, очевидно, задачи разного типа.
В заданных рамках задачка имеет понятную логическую модель и простое решение. Чего не скажешь про смехуечки типа про взлетит-не взлелит или цвет платья.
Задачи на подвох, внимательность и логику, это, очевидно, задачи разного типа.
Не очевидно. В данном посте задача про муравьев была предварена заголовком «На сообразительность» — это исключает возможность подвоха?
Не говоря уже о том, что поиск подвоха требует и внимательности, и логики, а задачи на логику не исключают возможность поиска обходных путей.

Если вспомнить, что обсуждалось собеседование программиста, и рассмотреть соответствующие рабочие задачи, то обычный поиск бага — это на задача подвох, внимательность или логику?
Имхо, решая логические задачи, про рабочие можно не вспоминать (обратно тоже верно). А помнить нужно то, что умение не переусложнять задачу, а мыслить максимально простыми полными абстракциями является одним из ключевых для хорошего программиста. Принцип KISS.
Где тут переусложнение? В рабочих задачах нужно понимать предметную область, а чтобы решить, что по палке муравьи будут ползти строго вдоль, да ещё и одной дорожкой, мне кажется, нужно ни разу в жизни не видеть ни палки, ни муравьёв. Тем более, что в условии чётко сказано, что все 10 муравьёв ползут в разные стороны. Если сторон всего две, то как минимум 5 из них ползут в одну и ту же (а другие 5 в другую).
Серьёзно, я пока ответы не почитал, мне и в голову такое не пришло.
(потом вспомнил, что уже встречал эту задачу в школьные годы среди олимпиадных по математике, и точно так же не понял этого странного допущения).
Кстати, поискал это задачку в олимпиадных, и там формулировка намного более однозначна:
По палке бегают муравьи с одинаковой постоянной скоростью. Всю палку муравей пробегает за минуту, а когда добегает до края, падает. Но когда два муравья встречаются, они разворачиваются и бегут в противоположном направлении. Докажите, что через минуту все муравьи упадут с палки.
То есть в данной формулировке у вас не возникли вопросы про то, ползут ли муравьи строго вдоль да еще и по одной дорожке? И не появилось предположений, что автор никогда в жизни не видел ни палок, ни муравьев?
Нет, потому что в этой формулировке муравей может хоть кругами, хоть зигзагами бегать. Главное — что за 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 могут ползти в первую сторону

О минимуме чего вы тогда говорите? Я писал про минимальный размер группы, движущейся в одном направлении. При нём 5 будут двигаться в одну сторону, а другие 5 — в другую. Во всех остальных вариантах одна из групп будет состоять более, чем из 5 муравьёв, и это уже не минимум.
В логических задачах всегда есть основа для применения здравого смысла
Среди задач также встречаются задачи на внимательность.

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

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

Ничего не рефакторить, чтобы не сломать, или переделывать всё? Со всеми соглашаться или всем отказывать? Молча принимать нечеткое ТЗ или придираться к каждой букве, бесконечно требуя пояснений? Крайности обычно являются худшим выбором из возможных вариантов.
Если честно, то выглядит так, как будто вы не смогли решить простую задачку, и сейчас, досадуя, занимаетесь софистикой.
Вы могли потребовать определения…
вы не смогли решить простую задачку, и сейчас, досадуя, занимаетесь софистикой...
Есть две крайности — молча принимать ТЗ с пробелами или бесконечно уточнять ТЗ. Мое мнение — обе крайности плохи, полезно выдержать баланс, заполнить ключевые пробелы и выдать решение.
Что лично я и сделал выше — 1 секунда при таких-то допущениях.
Почему Вы свели это к «не смог простое, досадует, софистика» — не знаю, но мне не интересно обсуждать меня или Вас, поэтому предлагаю закончить диалог.
Если не добавить, то минимальное время — меньше секунды

Возможно, но минимальное время никого не интересует.
Строго говоря, на шине I2C нет терминаторов — только подтягивающие резисторы. :)
Тут скорее опечатка. Но для чего они нужны?
Для формирования высокого логического уровня. Линии шины I2C управляются выходами с открытым коллектором/стоком, которые требуют подтяжки к питанию.
Всё верно, вы приняты. Когда сможете выйти на работу?
за «железки» столько не платят :)
Сам сижу в разработке под мобилки и отправляю комментарии по IOT разработчикам
НЛО прилетело и опубликовало эту надпись здесь
К сожалению в нашу компанию требуются специалисты, которые не строят гипотезы, а готовы разбираться в вопросе и решать задачи.
НЛО прилетело и опубликовало эту надпись здесь
Нет, я просто иронизирую :)
НЛО прилетело и опубликовало эту надпись здесь
не покажу, так как могу подставить компанию.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Гораздо интереснее получилась бы задачка, если бы a и b были разных размерностей. В этом случае результат зависел бы от типа процессора, точнее, от endianess :)
Если бы было сформулировано «какое минимальное время нужно прождать», тогда можно было бы рассуждать, 1 сек или 20 сек. А так правильный ответ — бесконечность.
Почему? Это всё пальцем в небо.
Дадим каждому муравью секунду на реакцию — итого 19 секунд.
В задаче не указано что делает муравей достигнув края палки. Может падает, может вверх головой по нижней стороне ползет, может просто обратно ползет, а может в ступоре замирает.

Итого имеем задачу на сообразительность при нечетко поставленном ТЗ. Вы точно всё ещё хотите работать в нашей компании?
То есть вы как соискатель начали собеседовать HR? Блестяще, вам скажу :)

Итого имеем задачу на сообразительность при нечетко поставленном ТЗ.

Интервью очное и ТЗ можно уточнить.
Моё мнение, что на собеседования стоит ходить где-то не реже, чем раз в пол года, даже если вы обожаете свою работу, и не хотите её менять.
Соответственно при таком подходе идёт знакомство с тараканами «и на той стороне», чтобы знать куда не обращаться при поиске работы.
НЛО прилетело и опубликовало эту надпись здесь
Вот так зайдёшь в комменты к рандомной статье, а тут тебя цитируют. Приятно, честно скажу.
НЛО прилетело и опубликовало эту надпись здесь

Просто мечта лоера, когда для похода в макдак нужно было бы залючить коротенький контракт, страниц на десть legal size с двух сторон 8 шрифтом... :)

НЛО прилетело и опубликовало эту надпись здесь
Скорость муравья 1 м/с. Какой траектории вы от него ожидаете на этом расстоянии, учитывая, что палка прямая?
НЛО прилетело и опубликовало эту надпись здесь
А плоскость так вообще бесконечна во всех 4 направлениях.
во всех ∞ направлениях, я бы сказал
Я имел в виду 2 оси координат.
Есть более подходящие формулировки задачи.
Например, «Найдите точную нижнюю оценку максимального времени через которое муравьи упадут с палки.» © Интернет.
Или «максимальное время падения последнего муравья с палки».
Или «максимальное время падения последнего муравья с палки».

Это зависит от того с какой высоты он будет падать.

И какая сила тяжести в месте падения :)

Ага: g, сопротивление атмосферы (если есть), модель муравья для вычисление этого сопротивления…
Потому что палка — не одномерное пространство, у неё есть поверхность, по которой каждый муравей может ползти в любом направлении. Например, по кругу.
Ну вообще для точного решения не хватает более развёрнутых условий.
Например: муравьи в штатном своём состоянии вполне способны ползать по палке вверх ногами. Поэтому, нам надо принять что муравьи всё же падают с палки (или нет, так как возможно это и есть правильный ответ — они будут ползать по палке пока не помрут с голоду, в случае если эта палка левитирует над землёй).
Длина муравьёв тоже нужна: если принять, что это сферический муравей в вакууме и его длина равна нолю, то в секунду у нас с палки свалятся все муравьи: крайних муравьёв просто некому останавливать и в худшем случае, если столкновение муравья и толпы произошло на самой границе палки, одному из конечных муравьёв как раз потребуется 1 секунда на её преодоление.
пока не помрут с голоду

Саму эту палку пусть и едят.
Тогда будут по ней ползать, пока она не прекратит существовать.
Самое необычное… Мне показали программный код другого человека, не знаю был ли он специально так написан или нет, но программа явно была внутренней корпоративной, и смотрю я этот уровок кода из программы и понимаю, что здесь было бы не плохо сделать иначе, а тут место тонкое и прочие-прочие такие моменты и так увлекся всем этим, что параллельно на листке начал писать исправления, а когда обрывок кода начал заканчиваться, я начал мыслить абстрактно(ведь суть программы понял), что тут должен быть такой класс, а тут такой, связь такая и т.д. и т.п., и вот я заканчиваю данный поток мыслей, и понимаю, что человек, который здесь ведущий программист, и собеседует меня на обычного программиста — автор кода.
Разумеется техническое интервью вы не прошли )
Именно так с формулировкой: У Вас хорошие знания и навыки, но этого недостаточно для работы у нас. Мы Вас внесли в архив кандидатов и как только откроется менее требовательная должность, с Вами свяжутся.
Никто не перезвонил, несколько лет прошло, сильно видимо обиделись.
return *(uint32_t * (&a)) > b

Я мысль понял, а компилятор — нет. Надо
return *((uint32_t *) &a) > b;
Ну это прям опечатка, которая была в процессе набора статьи :).
НЛО прилетело и опубликовало эту надпись здесь
Обычно имеют в виду «развернуть задом наперёд», т.е. 0b1101 <-> 0b1011
Ну, не знаю, на сколько интересное, но абсолютно глупое задание:«Написать „Hellow, World!“ без единой ';' ». На Си.
Тут я подзавис, это как?
Давайте дадим людям подумать! Подсказка. Именно в Вашем main.c не должно быть ';'.
-Dsemicolon=; что ли?
hello.c:
/* Hellow, World! */
#include «hello.h»
int main () {
PRINT
RETURN0
}

hello.h:
#include <stdio.h>
#define PRINT printf(«Hellow, World\n»);
#define RETURN0 return(0);
int main()
{
    if(printf("Hello world!")) {}
}
Верный ответ!
НЛО прилетело и опубликовало эту надпись здесь
так лучше?)
int main()
{
    if(printf("Hello world!")) {}
    while(true) {}
}

хотя не уверен что на отсутствие return в main компилятор ругается, по краней мере gcc, который у меня под рукой, для main такого предупреждения не генерит.
НЛО прилетело и опубликовало эту надпись здесь
Так хуже, потому что вечный цикл без побочных эффектов — это UB, и компилятор имеет право не напечатать ничего, или напечатать что-нибудь другое.
void main(void)
{

}

В принципе, это и было мое решение.
НЛО прилетело и опубликовало эту надпись здесь
C++ его запрещает прямым текстом, но C допускает:
It shall be defined with a return type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent; or in some other implementation-defined manner.
НЛО прилетело и опубликовало эту надпись здесь
Нет, не должен.
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 behaviour возникает при чтении undefined value, т.е. вне рассматриваемой программы, если её код возврата кем-то читается. На корректность самой программы это не влияет.

(В качестве поясняющего примера: неинициализированная переменная имеет undefined value, но если неинициализированную переменную не читать, то undefined behaviour не происходит, и программа полностью корректна.)

В любом случае, это в стандарте исправили 21 год назад.
Раньше у WatcomC это была ошибка, сейчас проверил OpenWatcom 1.9 — только варнинг.
НЛО прилетело и опубликовало эту надпись здесь
А теперь давай без фигурных скобок, чтобы уж совсем наркоманство :)
Уже было: habr.com/ru/post/275861
(Надо только заменить int[] на char[])
В том посте испоьзуются фигурные скобки. Я имел в виду триграфы :D
В том посте испоьзуются фигурные скобки.

Именно поэтому надо заменить int[] на char[]

Я имел в виду триграфы :D

Их удалили в C++17
Понял, вместо {...} можно будет "..." написать. Тогда да, было уже.
Жаль, что удалили. Теперь рекрутерам даже спросить нечего на собеседовании…
gcc '-DSEMICOLON=;' main.c
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?
Надо дать ответ что будет в результате.
Ну 1, конечно, если ошибку поправить.

Для ответа на этот вопрос необходимо обратится к стандарту. Не могу уверенно говорить на C, но в C++ такая запись приводит к неопределенному поведению, так как формат записи знаковых чисел не задан. Предположения о "two's complement" знаковых чисел может привести к очень серьезным головным болям при отладке.


Поэтому правильный ответ на этот вопрос — undefined behavior или зависит от платформы.


http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2218.htm#c-sign

Я ошибся. При всех вариантах записи отрицательных чисел результат будет 1, так что поведение однозначно.

НЛО прилетело и опубликовало эту надпись здесь

Про муравьёв 5 секунд(максимум 5.5)… каждую секунду с двух концов падает 2 муравья...(а тот движняк что между крайними нас не волнует)

Нет.

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

Муравьи бегают по палке пока не устанут. Или не сгорят от трения.
~70 шагов в секунду, сильно

А чего муравьям вообще падать? Им ведь не важно положение, если поверхность достаточно не гладкая.

Выше есть готовое решение.

Это где про бусинки? Не согласен… в том варианте вообще вообще количество муравьев не важно… хоть миллиард их… всегда секунда будет

В этом и прелесть абстрактных задач.
Ахилл черепаху по ним тоже, извините, не обгонит)
Вариация решения с бусинками: выберем наихудший случай, два ползут с двух разных концов палки и встречаются в середине, отразившись ползут к краям. Шестой «Б», кто пояснит, почему этот случай наихудший?

Я согласен с решением 1 секунда… просто мозг выносит, что не зависит от количества насекомых :-)

Дак они же параллельно все двигаются. Допустим, они все идут только в одну сторону изначально (никто ни с кем не столкнется). Понятно же, что тут время зависит только от длины палки, а не от количества муравьев? Или это тоже мозг выносит?

а вы возьмите на листочке в клетку начертите горизонтальный отрезок (до 10 см — нормально) и постройте две ограничивающие вертикали по его краям,
и стройте на нем траектории муравьев (по оси ординат — время) в виде линий под углом 45 градусов. Отрезок — это «палка», пересечение траектории с вертикальными линиями — это «падение»
Сразу заметно, что
1) один муравей в самом максимальном случае сможет ползать 1 секунду
2) столкновения 2х муравьев — это пересечение траекторий, оно не удлиняет и не укорачивает суммарное время (т.е. максимум из их траекторий)
3) ну и по индукции таких столкновений может быть хоть 100 (можно для эксперимента почертить пяток прямых, а потом раскрасить — как там ползал каждый муравей)
Очень бородатая задача, но может кто не в курсе
Два поезда, находившиеся на расстоянии 200 км друг от друга, сближаются по одной колее, причем каждый развивает скорость 50 км/ч. С ветрового стекла одного локомотива в начальный момент движения взлетает муха и принимается летать со скоростью 75 км/ч вперед и назад между поездами, пока те, столкнувшись, не раздавят ее. Какое расстояние успевает пролететь муха до столкновения?
Ну эту я сразу решил, а вот с муравьями и правда как то взрыв мозга.
С муравьями напоминает интерференцию волн. Когда не важно, отталкиваются волны или проходят друг сквозь друга — картина одинаковая.
Погодите, погодите, меня понесло. Какой ответ в итоге, 1 секунда?

Да. Максимум за одну секунду они все упадут.

Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.

Идеальные условия для эксперимента — диаметральные векторы и равноудаленность
муравьев друг от друга?

Половина расстояния между муравьями х8, это пройдут все стукалки.
Дальше они еще разок стукаются в серединке — девятое 0.55 и проходят
по половине палки — полметра.
~0.995 очень грубо. Если бы я хотел впечатлить работодателя —
то смоделировал бы ему самую плохую ситуацию. С учетом «столкновений» — в финансовой сфере

Нет. Там должна быть экспонента. По идее…
Теперь рассуждаем:
— муравьи, которые бегут от центра, если нет препятствий, упадут не позднее 0.5 секунды
— муравей, который оказался между двумя муравьями, бегущими к центру, даст им центробежный :) импульс
— а с чего я взял, что муравьи как-то взаимодействуют? максимальное время при описанных условиях — 10 секунд. Муравей падает на конец палки, проползает 1 метр и падает с другого конца. И так — 10 раз.
На «бареметалл» еще такое любят: Есть очень простой контроллер, с минимальным ОЗУ, допустим, PIC16F873, он «нюхает» RS-485. По интерфейсу передается пакет, состоящий из 32х битных чисел. Формат, начало и конец пакета известны, известно, что каждое число передается четное количество раз. Так же известно, что канал 100% надежен. А поток может быть ОЧЕНЬ длинный. Но 1 число из выборки передается нечетное количество раз. Как его найти?
Вопрос на знание XOR. Ответ применить XOR ко всем элементам.
Олимпиадные задачи которые можно знать но в реальной жизни применения не видел.
Всем спасибо, верный ответ! Но это не олимпиада, а реально применимая вещь. Сам часто применяю, к сожалению, по соображению неразглашения не смогу сказать где…

Вы лучше скажите, как в последовательности целых чисел, где каждое число, кроме одного, содержится трижды, а то одно число — единожды. Тоже решаемо за константное время. Конечно, если знаешь про решение с xor, додуматься сильно проще.

Хм, неужели накапливать произведение всех (−½ + ½√3 i) ^ x?

Вы, наверно, имели ввиду линейное время и константную (вернее, O(log max_int)) дополнительную память? Так-то числа все прочитать надо обязательно, поэтому быстрее чем за линию вы никак ответ не найдете. Если можно не константную дополнительную память — то можно хэш таблицей сделать.


Логично сделать решение через обобщение xor на троичную систему счисления: тупо складываем все цифры в троичной системе счисления отдельно и берем по модулю 3. Останется только то единственное число. Переводим его назад.


Можно делать с переводом в троичную систему счисления делением на 3. Хранить цифры в двух битах, например. Памяти будет требовать все то же O(log max_int) — ровно 2 переменные для хранения суммы в троичной системе счисления и еще 2 для текущего числа). И работать будет за линейную сложность (разрядов меньше log(max_int) — линейно от размера входных чисел).

Вы, наверно, имели ввиду линейное время и константную (вернее, O(log max_int)) дополнительную память?

Именно, это меня что-то переклинило.


Логично сделать решение через обобщение xor на троичную систему счисления: тупо складываем все цифры в троичной системе счисления отдельно и берем по модулю 3. Останется только то единственное число. Переводим его назад.

Ну вот я так и сделал, да. На битовых операциях.

НЛО прилетело и опубликовало эту надпись здесь
Военка детект.
Отнюдь. 100% «гражданка».
В гражданке такое лично не замечал до этого момента, думал какой-то чисто сапоговый метод.
Я не про саму задачу, она — именно на XOR, а про подход. Буквально таким образом недавно искал пропавший пакет. Модули связаны по FIFO, мастер передает пакет слейву, слейв обрабатывает и возвращает респонз. И, блин, из нескольких тысяч — один респонз не прилетает. Да, все асинхронно. Слейв может тасовать пакеты, как ему удобнее. Вычленил пакет, ксоря индексы запросов и подтверждений на подготовленном наборе данных, дальше — отладка уже легче пошла. Да, аппаратно-программный дебаг — еще тот танец с бубном…
Как работать с cmake?


Хороший вопрос. Правильный ответ есть? ;)
sudo rm `which cmake`
Хороший ответ. А вы точно программист? ;)
Заголовок спойлера
Удалять желательно так же как ставили.

Это да. Но, с другой стороны, в комментарии tzlom приведён единственный абсолютно портабельный способ работающий на любом *NIX. :)

Не абсолютно: sudo может быть не установлено, или права юзеру достаточные в sudo не выданы.

А ещё может не быть и самого cmake. Но как всё это относится к портабельности?

Встречаются достаточно часто фирмы, которые собеседуют не по теме вакансии, а потом удивляются почему за месяц человек ничего не сделал. Ну правильно! Логичнее же поиграть в американскую игру "предложите ваш оклад", а мы послушав, может и скажем сколько наша фирма модет вам заплатить. У нас же из моды американский опыт не уходит. Хотя американские программисты на порядок слабее русских!

Хотя американские программисты на порядок слабее русских!


Поэтому русские основали свой facebook, Microsoft, google и построили силиконовую долину.
построили силиконовую долину.

которая на порядок круче кремниевой
Заголовок спойлера
image

Не скажу насчёт программистов, но компании основывают предприниматели

НЛО прилетело и опубликовало эту надпись здесь
+ советский парень Сергей Брин
Сергей Брин эмигрировал с родителями в США в возрасте шести лет. Поэтому фраза «простой советский ребёнок» подошла бы, а вот «парень» — уже нет. И тогда для корректности комментарий, начавший ветку, должен звучать так:
Основан советскими детьми
:D
Ну, на мой взгляд, вопросы, которые автор привел, на 100% соответствуют его специальности. Но, кроме муравьев, наверное. Меня самого такие задачки бесят. Я, в принципе, на 80% вопросов сразу ответ дал. Единственное, не являюсь именно Linux системным программистом, на голом железе, по этому вещи, касательные ядра — не в курсе…
Задачка с собеседования. Что выведет программа? Решить без запуска. В тексте незначительные ошибки, чтобы сразу не скомпилировалось.
Самая наркоманская задачка такого рода из тех, что я видел :)
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;
}
Спойлер

"2 1 5"?


Действительно, наркоманская задачка.

Получилось вручную посчитать? Круто! Я во время собеседования третье число не угадал, но провалился не из-за этого :)

В ручную, но сначала тоже не правильно подсчитал третье число. Проглядел второй декримент у p в конце.

Единственный адекватный способ понять куда идти, и какие течения сейчас есть – это ходить на собеседования.

Чтобы обойти или влиться?
Пароход вы или плот?
Какое-то хайповое поветрие — ходить по собеседованиям чтоб что-то и выходить из зоны комфорта чтобы еще что-то. Понимаю, кто-то, когда-то сказал, в мантру превратилось.
Рандомно общаться с неадекватами, потратить свое и их время (твое ты потратил, фиг бы с ним, а вот чужое — это уже $$$), ради повышения твоего ЧСВ и возможно получения тебе же какого-то пинка, для саморазвития за чужой счет и увеличение процента неадекватов с точки зрения HR, HR звереет, руководители стонут во все стороны- «ну что вы хотите, адекватов не найти, только сегодня 1488 человек отсобеседовали», ну и прибыли владельцам hh.xx, job.xx и иже с ними?
Если есть ощущение, что надо развиваться- надо развиваться, курсы, петы, хобби, если не устраивается работа, уровень оплаты, график- его надо менять.
А вот такое хождение по собеседованиям- по мне сродни мелкой кражи, как тырить туалетную бумагу из общественного туалета, вроде мелочь, кто-то закрыл свою потребность, но в итоге кому-то от этого может стать не очень хорошо.
Компания получает хорошего кандидата в архив + с большим шансом, что если собеседование прошло отлично, когда у программиста позникнет потребность — он перейдет именно в эту компанию. Так что про деньги не все так однозначно. Особенно, если вспомнить про «тестовые рабочие» задачи.
А разговоры про прибыль хх.ру — вообще нонсенс, так можно дойти и до покупки товара по каждой первой рекламе — а что? — компания потратилась на рекламу, сотрудники рекламной компании придумали дизайн, повесили объявления — а ты, тунеядец и просто козёл, прошел мимо и не купил.
И от сюда растет букет идиотизма и злоупотреблений, от тестовых заданий на сутки и спасибо, мы вам перезвоним, ошибочные завышенные требования в стиле — о эта вакансия так популярна, Вася, за забором 50 человек стоят.
Для соискателя услуги рекрутерских и компаний агрегаторов объявлений вроде бы не стоят ни чего, а вот для работодателей уже ощутимо, что обратно ударяет по соискателям, просто об этом еще не говорят вслух, но рынок сильно монополизирован тот же hh уже может выставлять ценник за свои услуги почти любой.
Про рекламщиков- мне совершенно не нужна их услуга, и по факту она является навязанной, так как в стоимость любого изделия не малая доля уходит к ним, спам со всех сторон, даже на федеральных каналах, заклеенные подъезды и столбы — будь моя воля — запретил бы как класс.
Обычно, если ты берёшь высокую планку, то ты либо устраиваешься туда и работаешь, либо понимаешь что тебе не хватает и идёшь учиться. А вот рекомендации мол «учись» — лабуда, так как непонятно чему учиться. А после собеседования сразу понятно что нужно изучать. На одном собесе мне прямо так и сказали: иди и учи QT.

А на счёт воровства бумаги, это не так, ибо это работа HR искать и собеседовать, и если им что-то не нравится, то работу надо менять. И я собеседовал сам, такое количество фарша насмотрелся, уууу. Поэтому эффективный способ сначала смотреть код, а потом остальное.
Берешь высокую планку, находишь вакансии под нее, смотришь требования, открываешь молескин, выписываешь дифф от того, что сегодня имеешь, идешь забрить не достающее.
Находишь человека, работающего на интересующей должности, если ты увлекающийся и вообще тру профи, не составит труда, кстати все эти митапы, выставки, конференции и кружки по интересам, в 2020 социалки и даже боюсь этого слова- чатики- как раз инструменты для этого, а не обивание порогов HR, далее по тексту, ткнут носом и еще помогут подтянуть, а потом мимо HR проведут.
Сам собеседовался и собеседовал, был бы рад, если меньше народу бродило за волшебным пинком и был бы рад, не тратить часы на таких, из-за этого и возникают все эти веселые вопросы про круглые люки и деревья.
Это всё херня. Всё работает для популярных направлений. Системное программирование, достаточно узкая область и вот понять что там реально нужно возможно либо работая, либо сходив на собеседование.
Вот реально, даже не представлял как это выглядит до.
Вы тут указали почти все возможные места трения в социальных трансакциях. А некто не только их указал но и вывел институциональный подход из подобного наблюдения.
А по сути Вы не совсем правы. Ходя на собеседования можно легко обнаружить, что уже не помнишь как маску сети посчитать.
Я пытаюсь донести, что обнаружить, что не помнишь, как посчитать маску сети можно другими, менее затратными способами и более для этого предназначенными, чем хождением по собеседованиям, перекладывая по сути свои проблемы на других, пока бесплатно.
Идейка для hh — надо давать работодателям (за отдельную, конечно плату) статистику прохождения соискателем собеседований за последние 5-10 лет.
Ну кто бы спорил. Человек такое существо — множество вещей делает неоптимально. Просто Ваш посыл противоположен замыслу статьи. Или «программисты, не ходите на собеседования».
Это есть и соискатель попадает в чёрный список. Но я не злоупотребляю, обычно устраиваюсь.
> уже не помнишь как маску сети посчитать

Это почему? Потому что последний раз вам требовалось её считать в 2003 году? Тогда зачем вам собеседование с такими задачами, и возможно, работа с такими задачами?
пф
НЛО прилетело и опубликовало эту надпись здесь
Почитать вакансии, поработать фрилансом, участвовать в профильно движухе.
Это всё хорошо в популярных отрослях. Есть узкие отрасли, с большой ЗП, и есть шанс попасть туда только раз. И там будет круто, интересно и т.п. Но без хождения по собеседованиям о них не узнаешь. Более того, я сталкивался очень часто (примерно 30% вакансий), что крупные предприятия охотятся сами, но не выкладывают вакансии. Например Концерн «Калашников». А там задачи просто космос.
НЛО прилетело и опубликовало эту надпись здесь
Рабочий контракт запрещает.


Тут могла быть ссылка на ТК РФ и на судебную практирку, которые такие запреты превращают в прах.

Кроме ничтожности таких запретов де-юре в некоторых случаях, есть влияние их нарушения на перспективы в компании де-факто. Например, перестанут закрывать глаза на мелкие нарушения трудовой дисциплины раз хочешь по закону. Роста не будет, премий, задачи только неинтересные и т. п.

0xd34df00d проживает в США, если память не изменяет.

Рабочий контракт запрещает.
Регистрируешь ООО «Рога и Копыта», в учередители девушку/маму/кота. И пусть доказывают, что это ты работал.
НЛО прилетело и опубликовало эту надпись здесь
твое ты потратил, фиг бы с ним, а вот чужое — это уже $$$

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


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

В вакансии «опыт работы с системами контроля версий (CVS, MS VSS, SVN, Git)». Сразу побежите в антропологический музей с окаменелостями знакомиться или трезво рассудите, что знание одного Git из всего списка вполне достаточно?


А вот такое хождение по собеседованиям- по мне сродни мелкой кражи

Это уже ваши личные тараканы.
Почему кража, а не, скажем, рекет? Приходите, негодяй эдакий, отжимаете бесценное рабочее время, которое HR мог на просмотр тиктока потратить.

Понять, стоит ли пробовать поработать в конкретной конторе в общем случае можно только прособеседовавшись.

Речь же о ситуациях, когда идешь на собеседование вообще работать у них не собираясь, даже если оффер сделают, нет?

Речь же о ситуациях, когда идешь на собеседование вообще работать у них не собираясь, даже если оффер сделают, нет?


Не мы такие, жизнь такая(С). Хрюши таким же вызваниванием и «собеседованиями» чисто для мониторинга рынка развлекаются только в путь, как только экономика схлопывается. Так что тут все взаимное, и чистоплюйствовать сродни вере в эльфов с единорогами и санта клаусами.
Что такое красное и бинарное дерево?

Наверное "красно-черное"? Или бывают и просто красные деревья?

Возможно я не точно запомнил, правда не сталкивался никогда.

Ну, если на краснодеревщика собеседование, то может быть.

НЛО прилетело и опубликовало эту надпись здесь

Меня в какой-то момент озарило, какова принципиальная структура красно-чёрного дерева: любой путь от корня до листа содержит одинаковое количество чёрных узлов, и между каждой парой последовательных чёрных узлов может быть (а может и не быть) один красный. Отсюда сразу ясно, что длина любого пути от корня до листа может быть от N до 2N-1 узлов, то есть, условно говоря, сделать красно-чёрное дерево несбалансированным более, чем вдвое, вы не сможете.


К сожалению, понимания операциям, сохраняющим этот инвариант, это не особо помогает.

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


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


Если ожидается точный ответ как по учебнику, то это другое дело, конечно. Но сам вопрос по мне так вполне нормальный.

Может ли интерфейс RS-232 работает ТОЛЬКО по двум проводам: RX и TX? Тут дам ответ: Оказывается, что плохонько, на 9600, но может!!!
А теперь второй вопрос: почему?

А зачем вообще нужны все остальные провода в этом интерфейсе (в смысле, на практике зачем)? Или вы имеете в виду и без земли тоже?

Без земли

А это вообще законно?! Разве между разными устройствами не будет совершенно случайной разности потенциалов, которая может сжечь все к чертям?


(Я не электронщик, но мама всегда говорила земли соединять сначала, а только потом сигнальные провода)


Будет работать или нет — это уже другой вопрос, но мне казалось, что это как неопределенное поведение — даже если сейчас работает не факт, что завтра не сгорит.

Незаконно, но встречается из-за обрыва земли, допустим. И приводит к куче проблем.

А, ну если земля была, а потом оборвалась, то это другой разговор.

другой не другой не имеет значения. Если такое встречается в практике, надо знать, возможно ли такое.

Просто я этот вопрос ошибочно интерпретировал как "можно ли так делать", а не "может ли он работать, если вдруг так сделать"; спасибо за уточнение.

А зачем вообще нужны все остальные провода в этом интерфейсе (в смысле, на практике зачем)?


Они бывают полезны когда идёт большой поток данных. Мне они пригождались при работе с модемом.

Вообще это был сарказм :) Так-то я знаю, зачем они нужны, просто ни разу не сталкивался с потребностью в них — и не знаю никого, кто сталкивался бы.

просто ни разу не сталкивался с потребностью в них — и не знаю никого, кто сталкивался бы
Вот и выросло поколение, как говорится в известном анекдоте про тетрис.
Например, есть старый девайс со старым драйвером RS232, оба сертифицированы. Этот старый драйвер работает, используя управление потоком. Данные оттуда надо как-то вытащить наверх, для анализа на более современном оборудовании.
Из личного опыта — моим первым принтером был Robotron 6329 от ДВК, который использовал управление потоком в своем модуле последовательного интерфейса. В драйверах я тогда не разбирался от слова совсем, замыкая DTS сигналы управления потоком на нужный уровень. И принтер нормально печатал графику с Синклера после этого (для тех времен) хака.
Потом, достав-таки мануал к принтеру, я понял, как переключателями на плате принтера это управление потоком отключить, но это было сильно потом.

Ну да, действительно выросло, видимо. Я успел поработать с некоторым количеством странных девайсов, в т.ч. отечественных, но нигде мне не понадобились все эти DTS/RTS, я даже их названия запомнить не удосужился, если честно.

Шина RS-485. Обычно на такой линии есть терминаторы. Однако, у нас схема звезда, с переменным количеством подключаемых модулей. Какие средства избежания коллизий и помех нужно использовать?

А что, так можно было? Я знаю только одно решение: переделать звезду на шину.

Мой опыт показывает, что можно слегка отходить от нужных 60 Ом, если линии короткие и/или бодрейт низкий.

Ну вот для довольно схожей CAN есть способ соединения звездой по патенту Daimler-Benz, используемый некоторыми производителями автомобилей (кажется, Deutz так делает, но не помню точно), а также в авионике — вместо двух терминаторов по 120 Ом на концах ставится один резистор 60 Ом в центре звезды (точке соединения лучей).
Схема


Кроме того, для RS-485 существует способ терминации не согласованием сопротивления, а на диодах Шоттки, что позволяет терминировать все концы, не заморачиваясь перерасчетом сопротивления (каковой нельзя сделать, если заранее неизвестно количество узлов)
Схема
image
Диоды просто подавляют положительные (выше питанния) и отрицательные (ниже нуля) выбросы на фронтах импульсов, вызванные отражением.
Минус этого способа — полного подавления не выйдет. Выбросы ниже порога открытия диода не гасятся.
Плюс — в отличие от резисторов, диоды не рассеивают энергию основного сигнала.

Спасибо, интересно

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А что, есть страна, которая не производит и не использует оружие?
Монако, Ватикан. Сложно из назвать независимыми странами, так как в период войн их территорию занимает войска других государств без сопротивления.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Чтоб в туалет сходить — тоже. Но обычно люди идут в туалет, когда чувствуют потребность.

НЛО прилетело и опубликовало эту надпись здесь

И для того, и для того нужны ненулевые усилия. Вы же не описали насколько ненулевые.

НЛО прилетело и опубликовало эту надпись здесь

"Сходить в туалет" разве синоним "испражняться"?


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

«Сходить в туалет» разве синоним «испражняться»?

А вы ходите в туалет просто так, почитать инструкцию на баллончике освежителя?

Я хожу в туалет, чтобы там испражняться. Это два разных действия.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Я больше про формальный аспект сменил или не сменил. Получил оффер и право проживания или нет. Адаптация — отдельный разговор.

Вы же учили плюсы и вузик посещали не целенаправленно, чтобы уехать?

Вы живёте в этом мире, и должны играть по его законам, вне зависимости от того нравятся они вам или нет. Вы же не ругаетесь на гравитацию.
Вы же не ругаетесь на гравитацию.

Ну как сказать...
image
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Законы гравитации придуманы людьми. В природе нет, например, закона всемирного тяготения. Есть взаимодействие между телами и часть этого взаимодействия люди описали для себя с достаточной для многих применений точностью, придумав этот закон.

НЛО прилетело и опубликовало эту надпись здесь

Так называемые законы природы — это и есть модели каких-то природных явлений.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Яблоки падали, а закона не было.

НЛО прилетело и опубликовало эту надпись здесь

Явление было, понятия не было.

НЛО прилетело и опубликовало эту надпись здесь
Никто не гарантирует, что ваш код не будет использоваться в оборонке. Особенно, если вы OpenSource разработчик.
Ну и так же, как верно заметили, если вы платите налоги, то уже финансируете изготовление средств убийства.
Интересно, а есть какая-нибудь OpenSource-лицензия, запрещающая использование кода в оборонке?
НЛО прилетело и опубликовало эту надпись здесь
Нет, эти лицензии обычно не относят к open source. Например, Open Source Definition by Open Source Initiative содержит п. 6 «No Discrimination Against Fields of Endeavor», прямо указывающий на то, что лицензии, ограничивающие области применения ПО, нельзя назвать open source. Это логично, ведь иначе можно так сузить разрешенную сферу применения, что де-факто использовать ПО будет невозможно.

Вы сами приводите пример нашумевшей JSON License («The Software shall be used for Good, not Evil»), которую не считают open source ни FSF, ни OSI, что уж говорить про более конкретные ограничения.
НЛО прилетело и опубликовало эту надпись здесь

Хорошо быть пацифистом, когда лично тебе ничего не угрожает. В том числе и потому, что танк с офигенной системой наведения никогда не выстрелит, потому что другие парни запилили ПТРК с ИИ. А пока есть варианты решения нерешённых проблем через войну — без ВПК и армии не обойтись.

Абсолютно так. Очень хорошо быть пацифистом в тёплой квартире, значительно сложнее быть пацифистом под снарядами. ВПК наши деды разработали не просто так, а после Второй Мировой войны.
Добавлю, что прогресс в военке идёт как раз в сторону исключения людей из непосредственного участия в конфликтах. Пусть лучше автономные танки и беспилотники друг по другу стреляют, а вояки сидят в тёплых офисах и пишут для них сценарии.
Увы, нет. Война ведется не потому, что хочется пострелять. Все равно люди собираются стрелять в других людей, только расстояние между ними больше. По беспилотникам стрелять глупо; с тем же успехом можно в CS зарубиться.
Глупо, если они вреда не приносят. А если они наводят артиллерию или прямо уничтожают технику и «живую силу»?
А если они наводят артиллерию или прямо уничтожают технику и «живую силу»?


Вот именно. Люди все равно продолжают стрелять в людей, только не стрелами из лука, а беспилотниками и РСЗО.

танки и беспилотники не подпустят противника к тёплому офису — затем они и нужны.


Всё равно цель — не беспилотник противника, а офис. Или весь город, если нет возможности пульнуть по офису.
Люди продолжают хотеть стрелять в людей, но автономные танки и беспилотники стороны А мешают автономным танкам и беспилотникам стороны Б стрелять в людей стороны А. Получается битва автономных танков и беспилотников с обеих сторон.
Получается битва автономных танков и беспилотников с обеих сторон.


Не получается. Цель всё равно не беспилотники, а люди, техника, обьекты инфраструктуры. Просто защищать, подвесив над каждой целью персонального охранника, не получится: противник получит преимущество (перегруппируется, или изобретёт еще более сильную вундервафлю) и долбанёт.
Так что гонка вооружений — минимальное зло. Обратите внимание, производители оружия друг с другом не воюют.

Зачем тогда воякам заставлять сови танки и беспилотники стрелять по вражеским, если можно стрелять по тёплому офису противника?

Потому что танки и беспилотники не подпустят противника к тёплому офису — затем они и нужны.
НЛО прилетело и опубликовало эту надпись здесь
Расскажите в каком количестве вооружённых конфликтов за пределами РФ участвовала Россия за последние 10 лет? А ещё с использованием танковой армии. И сравните эти числа, допустим с США.

Пора выйти в реальность.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ещё Ливия, ЦАР, Судан, Мозамбик, и всё за последние 10 лет. А если взять время вашей жизни, то ещё Карабах и Югославия.
НЛО прилетело и опубликовало эту надпись здесь
Мне важно решение задачи. Мне нравится масштаб проекта и я вижу труд многих людей, когда вижу изделие на параде. А то что там кого-то будет убивать мне всё равно. Тем более, что это оружие сдерживания.
Но я принимал участие и с тепловизионными системами «зачистки». Так что тоже было дело.

Весь этот пацифисткий морализм очень хорош до того момента, пока мы не понимаем что весь прогресс до нас дошёл из-за ВПК. Компьютер, с которого вы читатете этот текст изначально разрабатывался для расчёта падения балистических снарядов и дешифровки вражеских сообщений. Интернет тоже. А то что потом стал народным, так это недоразумение.
НЛО прилетело и опубликовало эту надпись здесь
Мы экспортируем оружие стратегического назначения?
НЛО прилетело и опубликовало эту надпись здесь
Ответьте на мой первый вопрос.

Если Россия перестанет производить и поставлять оружие, на Земле настанет мир и порядок? Райские сады расцветут и из крана польётся пиво?
Если да, то я первым выйду за борьбу против производства оружия.
НЛО прилетело и опубликовало эту надпись здесь
Или нет, просто эту нишу займёт кто-то другой.
НЛО прилетело и опубликовало эту надпись здесь
Если только Россия то конечно нет. Это должны все страны сделать. Если люди будут больше осуждать ВПК во всех странах и с меньшим желанием туда идти — возможно когда нибудь к этому все и придет.
Если с рынка уйдёт один игрок, значит цены подрастут, значит меньшему количеству банановых республик будет по карману импортное оружие, значит будут воевать палками и камнями. Всё вперёд.
Отлично. Согласен с Вами! Пусть первыми разоружаются и прекратят финансировать военку те, кто больше всего в это вкладывается- США.
Весь этот пацифисткий морализм очень хорош до того момента, пока мы не понимаем что весь прогресс до нас дошёл из-за ВПК.

Но не потому, что ВПК сам по себе способствует прогрессу, а потому, что на ВПК политики готовы тратить неограниченные ресурсы, а на гражданские отрасли — не готовы.
Политики — это не люди с другой планеты. Они такие же как вы и я. Просто осознают цену таких вложений.
НЛО прилетело и опубликовало эту надпись здесь
Траты на науку, по-видимому, настолько малы, что не только не попали на диаграмму, но даже и в пояснениях не упомянуты.
НЛО прилетело и опубликовало эту надпись здесь

Если не ошибаюсь, то это "не очень много" в 2-3 раза выше в абсолютных цифрах чем все остальные страны вместе взятые.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Надо понимать, что ВПК — это всегда чистый минус из ВВП страны, из экономики. Обычные инвестиции циркулируют десятки раз, развивая страну, военка — сжирает ресурсы, расставляя танчики по периметру.

Да нет, всё то же самое: ВПК обеспечивает работой кучу предприятий, а те — кучу своих контрагентов, и так далее.

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

Именно потому всюду есть «министерства обороны» и нигде нет «министерства нападения», что все вояки надеются не вести военных действий. Чем больше танчиков расставлено по периметру, тем менее вероятно, что их придётся вести.

Остаётся только гадать, на сколько вторая мировая замедлила эти исследования, а не ускорила — в военное время у стран обычно не до того, чтобы активно исследовать какие-то абстрактные вещи, пусть даже и потенциально полезные в отдалённой перспективе.

То, что все первые компьютеры заказывались непосредственно министерствами обороны, показывает, что это были не «потенциально полезные в отдалённой перспективе» вещи, а остро необходимые во время войны.
все вояки надеются не вести военных действий

С каких пор? Захват территорий, ресурсов, получение политических преференций и большей власти, карьерный рост. Поводов вести войны у вояк высокопоставленных много.
НЛО прилетело и опубликовало эту надпись здесь
Ну так с таким же успехом можно платить этим людям зарплату за сидение на месте и от этого в принципе ничего не изменится для экономики страны.

Да, это как ББД, про который вроде бы соглашаются, что он во благо экономике.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Простите, кто соглашается? Швейцария и Финляндия не особо соглашаются.
НЛО прилетело и опубликовало эту надпись здесь
Давайте немного отойдем от полюсов, и вспомним, для чего создавались Камаз, Хаммер и прочие Мицубиси. Да и Газель сделана не на чисто гражданском заводе, скорее, наоборот — это дитя конверсии. Количество невоенных, вспомогательных машин на 1 танк — 10 и более, если мне не изменяет память. И, если вспомнить совсем-совсем истоки, мы с Вами эти строчки пишем, находясь в сети, которая была изначально создана по военному проекту DARPA :)
В общем, нельзя одно отделить от другого, военная и гражданская продукция связаны тысячей незримых нитей.
НЛО прилетело и опубликовало эту надпись здесь
Вы сейчас поступаете некрасиво, переиначивая мои слова. Я работал в оборонке осознанно и понимая зачем. Если нужно будет, буду работать ещё. Приведу цитату, которая описывает мою позицию.

«К бывшему офицеру приходит сын, он сына спрашивает: «Тут кортик был, где он? » – «Не ругайся, я поменял его на часы у мальчика с соседнего двора». Отец ему говорит: «Покажи часы, да, хорошие. А если завтра придут бандиты к нам, убьют меня, мать, братьев твоих, сестру изнасилуют. А ты им что скажешь? Добрый вечер, московское время 12 часов 30 минут?
НЛО прилетело и опубликовало эту надпись здесь
Мне жаль, что в общем-то совершенно нейтральный пост о карьере программистов скатился в политику. Я рассказал о своём трудовом опыте. Правильный он был или нет — время рассудит.
НЛО прилетело и опубликовало эту надпись здесь
Войны закончатся, как только будет найден более эффективный способ конкуренции.
А такого, увы, не произойдет.
А что в этом плохого?
А не приходило в голову, что «оборонка» нужна еще и для того, чтобы вам на голову бомба не упала?

Из запомнившихся задач (все на сеньор веб-разработчика на php):


  • интерпретатор простого ЯП (подмножество паскаль кажется): переменные, арифметика,
  • задача на выявление рассинхронизации тактовых генераторов двух компьютеров с вымышленными(?) архитектурой и ассемблером с простейший одноранговой сеткой, скорее даже прямым соединением
  • удалённый лайвкодинг: написать и поднять простой CRUD на symfony без генераторов в докере (не помню Докер условием был или сам решил)
  • нарисовать грубую модель предметной области jira, нарисовать схему сервисов: серверы, сторы, очереди, СУБД и т. п.
Как-то прям очень не просто всё.

Ну так не на джуна за минималку собеседовался.

Еще хорошо самому собеседовать, а еще есть одна полезная фича, но для компаний где много инженеров

Vожно договориться о собеседовании двумя техническими специалистами с разных проектов.
Каждый задает свои вопросы, каждый пишет свой фидбек, который видят оба собеседующих.
Попасть на борт — это ещё не самая сложная задача. Самое сложное — это удержаться на борту данной компании.

Это как поступление на математику мехмата МГУ. Очень легко было поступить (абсолютно ничего сверх стандартной школьной программы), но очень трудно было удержаться. Излишне расслаблялись и вылетали за неуспеваемость даже призеры международной математической олимпиады. Но если ты позволяешь себе «отдохнуть» не более двух недель в семестр, а все остальное время пашешь, пашешь, пашешь, то можно удержаться в университете даже простому смертному, то бишь, не вундеркинду.
И с такими вопросами удаётся найти кого-то?! Завидую. Мы сначала просим три несложные программки написать за полтора часа, так там процентов 95% срезается. Если станем спрашивать, чем syscall'ы на arm и x86 отличаются, боюсь не наймём никого никогда вообще.
Если станем спрашивать, чем syscall'ы на arm и x86 отличаются, боюсь не наймём никого никогда вообще.


Моё мнение, что они просто хотели посамоутверждаться.
Кстати инетерсно, что под отличием имеется введу. Там в принципе все отличие это разная инструкция и регистры соответственно, а внутри вроде все также. Ну еще ид в таблицы разные, но я сейчас только обратил внимание. Есть еще что-то. А то даже нагуглить больше не получается
Инструкция, и там, и там, программное прерывание, так что, я бы предположил, что параметры по разному передаются: в arm много регистров, так что там параметры передаются через регистры. В х86 регистров мало, по-этому, наверное, там параметры собираются куда-нибудь в память и указатель на эту память передаётся через еах, например.
В х86 тоже аргументы через регистры передаются. Там у всех ограничение на 4 аргумента. Поэтому даже интересно что под различиями хотели услышать.
Имеется палка длинной в один метр. На неё случайным образом падают десять муравьёв, которые ползут в разные стороны. Скорость движения одного муравья 1 м/с. В случае если муравей встречается с другим муравьём, то он разворачивается и ползёт в противоположную сторону. Какое максимальное время нужно прождать, чтобы все муравьи упали с палки.

+infinity
Возьмем двух муравьев бегущих в одну сторону, но находящихся на противоположной стороне палки(хотя координата Х у них одинаковая, ось Х — вдоль длины палки), на конце палки они будут встречаться с друг другом… и разворачиваться и опять встречаться на другом конце.

НЛО прилетело и опубликовало эту надпись здесь
Я такое видел в очень крупных компаниях, в которых работают больше сотен человек

Это, в лучшем случае, средняя компания. Никак не крупная и, тем более, не очень крупная.


Для меня очень хороший показатель компании, когда просят показать примеры своих проектов и кода.

Все это, как правило, под NDA. Покажете мне ваши куски кода "боевых комплексов"?

I. На знание СИ. Что означают следующие записи:

cdecl.org
Слабо себе представляю муравьев, движущихся со скоростью 1 м/c. Это что за монстры такие?
Спасибо за статью. Сам работаю системным администратором и несколько раз менял работу. Про то что надо ходить на собеседования — согласен. Но есть оговорки: во первых если работаешь в крупной компании — работодатель, а точнее HR отдел может узнать об этой активности, во вторых один поход ни о чем не говорит — это может оказаться конторка, живущая по правилам 10-ти летней давности. А так да, помню 10 лет назад активно искали системного администратора — программиста 1С, теперь смешно вспоминать. Все мои успешные устройства на работу как ни странно состояли из одного очного этапа с проверкой знаний и иногда предварительного телефонного собеседования. Все многоэтапки и домашние задания почему-то заканчивались ничем(либо не брали, либо мне контора не нравилась в итоге)
Вооот. Хороший критерий, хоть и не абсолютный. У меня практически так же, причем опыт участия в процессе с обоих сторон.
Было как-то одно занимательное интервью, дали задачку на два с половиной часа. «Осенило» решением только под конец второго часа, но собес провалил по иным причинам.
Собственно, задача:

Есть два регистра: 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 — целое.

Точно опечаток в условии нет? Странные какие-то операции.

какая разница какие там операции? задача на обход в ширину по состояниям {R1, R2}

Понятно, что наивное решение — обход в ширину. Вот только вообще непонятно, а сколько состояний надо будет обойти прежде чем найдется 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 шт…
а я не осилил (((
но мне правда сказали, что они думали над ней довольно долго

а зачем второй подход? за один проход считываешь байт и в результирующем массиве делаешь +=1 в нужной ячейке.

Написано же: за второй проход формируется выходной 8-терабайтный массив.
Из той же оперы: как занять программиста и к.т.н. на полдня максимально быстро, буквально в одно действие, подсчитать количество ненулевых битов в байте?
Таблицей?
Считается, что да )

А кто таблицу в одно действие заполнять будет?)


"к.т.н." разные трюки придумали.
Но можно об этом даже не думать, а использовать что-то вроде Integer.bitCount(a) или popcount.

Дело было в начале 2000-х. Мне предложили сходить на собеседование на очень хорошую зарплату, сказали, что надо что-то с бухгалтерией программировать. Зарплата перевешивала нежелание погружаться в бухгалтерскую тему, и я втайне надеялся, что это будет не 1С.

Но все обернулось гораздо интереснее. Технический специалист с порога сказал: «мы продаем сосиски». Да, это оказалась розничная контора быстрого питания, где надо было программировать «параллельную финансовую отчетность». Сразу стало понятно, откуда хорошая зарплата. Пришлось отложить повышение и поработать еще пару месяцев в стартапе на С++. Денег было в 3 раза меньше, зато совесть чиста.

Через 2 месяца удалось пройти собес в VDI (ныне EPAM). Задачка была прикольная — написать на MFC (надеюсь, кто-то еще помнит) MDI приложение с разными спецэффектами в меню: раскраска пунктов, картинки, еще какие-то украшательства. Справился и прошел, не жалею, что не повелся на зарплату.
А можно на конкурс не задачу, которую давали, а задачу, которую давал?

Можно, можно было не спрашивать. Никто не узнает :)))

НЛО прилетело и опубликовало эту надпись здесь
Я не готов решать стрессовые ситуации в аврале, и если компания на собеседовании сразу же готовит тебя к этому — эту компанию стоит смело обходить стороной. Одно дело, когда прям надо, а другое дело — когда тебе подаются подать это как естественное положение дел.

https://habr.com/ru/company/ruvds/blog/521086/#:~:text=На данный момент зарплата в оборонном комплексе вполне достойная%2C с бонусами и плюшками.

Насколько мне известно, главная проблема в фирмах, работающих на МО - это запрет на использование очень многих передовых стеков разработки. Причина - они годами проходят и еще не прошли проверку безопасниками МО на наличие вредоносного и шпионского кода. В результате, на некоторых собеседованиях с такими фирмами мне предалагали поработать на Java 7 и Java EE 5 ну и так далее.. Совсем не захотелось, несмотря на очень приличную предлагаемую зарплату.

они годами проходят и еще не прошли проверку безопасниками МО на наличие вредоносного и шпионского кода

А это реальные проверки или так, на отлюбись?