Рубрика «задачи» - 5

image

Приковывая себя к рабочему месту, вы вряд ли начнете генерировать блестящие идеи. Как же найти способ делать меньше, но добиться за день большего? Об этом сегодня расскажет Лайза Эванс.

Итак, даем слово Лайзе!Читать полностью »

Самый удивительный вопрос, который нам задают при назначении собеседований кандидатам на позиции стажеров, звучит так: «А что будут спрашивать?».

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

В чем же причина такого вопроса?

Длительный опыт общения с кандидатами с университетской скамьи показал, что причина проста. Студенты часто воспринимают собеседование так же, как экзамен в своем ВУЗе: нужно подготовиться (лучше всего за одну ночь :)), прийти и сдать. И тот, кто лучше всех ответит на вопросы, получит пятерку, то есть будет нанят.

Загвоздка состоит в том, что собеседование — это совсем не экзамен. Под катом ответ почему.

Читать полностью »

За один проход.

Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны с вычислением (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.

Читать полностью »

О мотивации, прокрастинации, тайм менеджменте и других модных, но бесполезных вещах

Доброго времени суток.

В последние годы наметилась, лично я, наблюдаю весьма сомнительную тенденцию проповедовать «успешный» образ жизни. Истории успеха, как и их опровержения, льются на нас как из рога изобилия: Интернет пестрит статьями и книгами по мотивации, рекламой тренингов «как стать успешным сферическим человеком в вакууме», «как правильно начать свой стартап и стать вторым ГейтсомДжобсомЦукенбергом» (нужное подчеркнуть), ТВ-каналы трубят об очередном появлении очередной компании, основанной в гараже или интернет-кафе, на IPO и о стремительном взлете акций в первый же день торгов.

Люди сознательно стремятся добиться каждый своих целей. Кто-то штудирует литературу, другие предпочитают использовать веб-сервисы, такие как SmartProgress и самостоятельно определять, как, что и когда делать, попутно наблюдая за другими людьми. Каждый хочет стать богатым, «успешным», знаменитым. Это называют счастьем.
Читать полностью »

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

image Комбинационные логические схемы входят в состав всех современных процессоров и других электронных средств обработки информации. Процессоры используются повсеместно и непрерывно усложняются. Количество транзисторов в современном процессоре уже превысило 2 млрд? И, похоже, рост не планирует останавливаться. Одновременно с этим уменьшаются технологически процессы производства процессоров. Транзисторы становятся все меньше и уязвимее для внешних воздействий. И вот, даже не самые сильные внешние излучения и магнитные поля могут приводить к кратковременным изменениям логических значений в микроэлектронных схемах. Эта проблема особенно актуальна в космических и других критичных к надежности системах. В данной задаче поставим вопрос: как зная логическое назначение схемы сделать её более устойчивой к внешним воздействиям? Вашей задачей будет разработать алгоритм создания такой устойчивой схемы.

Читать полностью »

Давеча в блоге одного моего хорошего друга наткнулся на детскую задачку, которую по его словам дают детям дошкольного возраста. Согласно легенде, решить подобную заморочку могут 95% детей в возрасте до 10 лет и только четверть процента людей после 20 лет. В общем, взялся за решение этой головоломки… Да, кстати, вот и она:

8809 = 6 7111 = 0
2172 = 0 6666 = 4
1111 = 0 3213 = 0
7662 = 2 9312 = 1
0000 = 4 2222 = 0
3333 = 0 5555 = 0
8193 = 3 8096 = 5
7777 = 0 9999 = 4
7756 = 1 6855 = 3
9881 = 5 5531 = 0

Вопрос: 2581 =?

Конечно же, интереснее всего решать подобные вещи самому. И ни в коем случае не читать текст далее…

Читать полностью »

Жизненный цикл задач в Redmine для небольшой группы разработки. Наш опыт и полезные советы

Думаю, эта статья должна помочь людям, которые впервые решили автоматизировать процесс трекания задач на базе Redmine в группе разработки программного обеспечения. В статье я расскажу о том, как этот процесс устроен у нас, какие новые поля для задачи мы завели и какие проблемы решают эти поля. Думаю, статья будет полезна широкому кругу лиц, на мой взгляд, настройка жизненного цикла задач эта работа под лозунгом «Очевидное — не очевидно».

Еще! Мы работаем в большой корпоративной среде, в основном, для внутренних клиентов (причем их несколько) и эта ситуация нашла отражение в нашем жизненном цикле.

Начнем.
Читать полностью »

image

Распространённая проблема менеджера проектов — определить, от кого зависит дальнейшее исполнение задачи. Часто задача назначается на разработчика, да так и остаётся “висеть” на нём вплоть до релиза. Однако разработчик отвечает только за часть исполнения. QA — тестирует, DevOps — включает в релиз, продакт-менеджер — оценивает готовую работу (в каждой организации эта цепочка своя). Задача путешествует от статуса к статусу (In Progress, Done, Tested, Shipped, Closed и т.п.), но исполнителем значится всё тот же разработчик.

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

Совсем недавно я сдал OCA Java SE 7 Programmer I. За время подготовки успел решить огромное количество задач и извлечь из них много тонких моментов языка. Самые интересные и ловкие — сохранял на будущее. И вот у меня накопилась небольшая личная коллекция, лучшую часть которой я здесь и опишу.

В замечательной статье Знаешь ли ты JAVA, %username% и её второй части автор тоже поделился опытом после подготовки. Однако я пришёл к выводу, что могу добавить что-то своё. Так и зародилась эта статья.

Хитрые задачки по JavaЧитать полностью »

Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

Однако стоит оговориться, что статья все же про подбор разработчиков. Т.е. собственно тех восьмидесяти процентов сотрудников, на которых держится массовая разработка. Часто мы нанимаем людей на специальные вакансии: например, разработчиков систем компьютерного зрения, лингвистов, экспертов по машинному обучению. В этом случае формат собеседования может заметно отличаться.

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js