Задачи на логику на собеседовании в excel
Задачи на логику на собеседовании в excel
Самых сложных – «Диспетчер сценариев». Рассмотрим пример решения оптимизационной задачи с помощью надстройки «Поиск решения». Условие. Фирма производит несколько сортов йогурта. Условно – «1», «2» и «3». Реализовав 100 баночек йогурта «1», предприятие получает 200 рублей.
«2» — 250 рублей. «3» — 300 рублей. Сбыт, налажен, но количество имеющегося сырья ограничено. Нужно найти, какой йогурт и в каком объеме необходимо делать, чтобы получить максимальный доход от продаж.
Известные данные (в т.ч. нормы расхода сырья) занесем в таблицу:
На основании этих данных составим рабочую таблицу:
Количество изделий нам пока неизвестно. Это переменные. В столбец «Прибыль» внесены формулы: =200*B11, =250*В12, =300*В13. Расход сырья ограничен (это ограничения).
В ячейки внесены формулы: =16*B11+13*B12+10*B13
Задачи по Excel
Спланируйте расходы на бензин для ежедневных поездок из п.
Половинка в г. Урай на автомобиле.
Постройте график изменения цены бензина и график ежемесячных расходов. 2. Представьте, что вы директор ресторана.
Общий месячный фонд заработной платы — 10000$. На совете акционеров было установлено, что:- официант получает в 1,5 раза больше мойщика посуды;- повар — в 3 раза больше мойщика посуды;- шеф-повар — на 30$ больше. Подробности Категория: : 12 ноября 2015 1.
Рассчитайте еженедельную выручку зоопарка, если известно:-
10 задач с собеседований в крупные компании
Если же он спросит у врущего стражника, опять же, узнает, какая дверь ведет к лабиринту, ведь тот соврет о двери, на которую укажет правдивый стражник. Задача 2. Землю захватили инопланетяне. Они планируют уничтожить всю планету, но решили дать человечеству шанс.
Других слов, кроме цвета шляпы, произносить нельзя.
Отмалчиваться — тоже. Если он отвечает верно, остается в живых, ошибается — его убивают. Нельзя посмотреть, какого цвета ваша шляпа, но можно договориться о некоем принципе, по которому отвечать всем.
Расположение шляп — случайное, комбинации могут быть любыми, вам видны все шляпы, которые расположены перед вами.
Задачи на собеседованиях от Acronis и решения задач от Custis
Про админов и говорить нечего — решения этой компании всегда занимали достойное место на загрузочных дисках для оказания первой помощи. А как быть программистам, которые хотели бы в нее трудоустроиться?
Когда-то я сам шарил по сайтам с вакансиями и, как сейчас помню, был вдохновлен зарплатой, которую в Acronis обещали программистам на приплюснутом си.
Сегодня мы поговорим с Евгением Панищевым, руководителем QA Cloud направления международной компании Acronis. Его отдел занимается тестированием всех облачных решений Acronis: от Acronis Backup Cloud до Acronis Disaster Recovery.Задача лично Евгения — следить за тем, чтобы специалисты отдела выполняли свою работу еще лучше и эффективнее. Евгений регулярно проводит собеседования при приеме людей в отдел сопровождения качества и считает, что хороший тестировщик должен обладать логическим мышлением, быть очень внимательным, уметь нестандартно мыслить и четко обосновывать свою точку зрения.
Задачи с собеседований.
Три адекватные задачки на «подумать»
И кстати, если все элементы уникальны, то в исходном массиве у нас арифметическая прогрессия и первую сумму можно вычислить как . У вас есть пятилитровый и трехлитровый кувшины и неограниченное количество воды.
Как отмерить ровно 4 литра воды? Кувшины имеют неправильную форму, поэтому точно отмерить половину кувшина не получится. Это моя любимая задачка из разряда «головоломок».
Помним, что в пятилитровом кувшине сейчас 3 литра, до полного его заполнения из другого кувшина выливается 2 литра. В трехлитровом кувшине остался один литр.
3. Опустошаем пятилитровый кувшин. Переливаем в него отмеренный один литр.
123 задачи с IT-собеседований с разбором решений
Затем вы совершаете точно такой же перелёт, но на этот раз на протяжении всего перелёта дует постоянный западный ветер: в одну сторону попутный, в обратную — лобовой.Как изменится суммарное время перелёта туда-обратно?
- Увеличится
- Не изменится
- Уменьшится
или
Загрузка .Что не так в этом отрывке кода на С++?operator int() const { return *this; }Задача, которая была популярна в своё время на собеседованиях в Amazon.
Мы русифицировали её, но смысл остался тот же.
Вам нужно продолжить последовательность.Как это вычислить, не пользуясь калькулятором? Можете дать приблизительный ответ?«Вас уменьшили до размеров 5-центовой монеты и бросили в блендер. Ваш вес уменьшился так, что плотность вашего тела осталась прежней.
Лезвия начнут вращаться через 60 секунд. Ваши действия?»Это классическая google-задачка, хороший разбор которой в рунете не так-то просто найти.
Задания на логику во время собеседования
Они направлены на выявление нестандартного мышления, которое занимает центральное место для многих профессий.
Выделим три самые важные:
- желание увидеть кандидата в действии,
- оценка личностных качеств.
- проверка стрессоустойчивости,
Ответ однозначный – да.
Насколько бы уверенным в своих силах не был человек, подготовка обязательна.
Скорость реакции и сообразительность тренируются упорными упражнениями: чем больше решается задач, тем эффективней и быстрей выполняются тесты на собеседовании.
Решение простых задач с помощью Excel
№ Ф.И.О. 1 2 3 Лучшее время Среднее время Отклонение 1 Лягушкин 3.23 3.44 3.30 2 Моржов 3.21 3.22 3.24 3 Акулов 3.17 3.16 3.18 4 Рыбин 3.24 3.20 3.18 5 Черепахин 3.56 3.44 3.52 Лучший результат соревнований Среднее время участников соревнований Максимальное отклонение
- Среднее время для каждого спортсмена находится как среднее арифметическое трех его заплывов.
- В ячейку «Максимальное отклонение» записывается максимальное значение столбца.
- В ячейку «Лучшее время» записывается минимальный результат из 3 заплывов.
- В ячейку «Лучший результат соревнований» записывается минимальное время из столбца.
- В столбец «Отклонение» записывается разность между лучшим временем спортсмена и лучшим результатом соревнований.
Результаты соревнований по плаванию № Ф.И.О. 1 2 3 Лучшее
Логические функции в excel с примерами их использования
В противном случае – значение второго аргумента.#ИМЯ?Оба аргумента обязательны.
Задача 1. Необходимо переоценить товарные остатки. Если продукт хранится на складе дольше 8 месяцев, уменьшить его цену в 2 раза.
Сформируем таблицу с исходными параметрами:
Чтобы решить поставленную задачу, воспользуемся логической функцией ЕСЛИ. Формула будет выглядеть так: =ЕСЛИ(C2>=8;B2/2;B2).
Логическое выражение «С2>=8» построено с помощью операторов отношения «>» и «=».
Во втором – «В2».
Усложним задачу – задействуем логическую функцию И.
Теперь условие такое: если товар хранится дольше 8 месяцев, то его стоимость уменьшается в 2 раза.
Если дольше 5 месяцев, но меньше 8 – в 1,5 раза.
Поиск решения задач в Excel с примерами
Пользователи Excel давно и успешно применяют программу для решения различных типов задач в разных областях.
Excel – это самая популярная программа в каждом офисе во всем мире. Ее возможности позволяют быстро находить эффективные решения в самых разных сферах деятельности.
Программа способна решать различного рода задачи: финансовые, экономические, математические, логические, оптимизационные и многие другие.
Для наглядности мы каждое из выше описанных решение задач в Excel и примеры его выполнения.
Оптимизационные модели применяются в экономической и технической сфере. Их цель – подобрать сбалансированное решение, оптимальное в конкретных условиях (количество продаж для получения определенной выручки, лучшее меню, число рейсов и т.п.).
В Excel для решения задач оптимизации используются следующие команды:
- Подбор параметров («Данные» – «Работа с данными» – «Анализ «что-если»» – «Подбор параметра») – находит значения, которые обеспечат нужный результат.
- Поиск решения (надстройка Microsoft Excel; «Данные» – «Анализ») – рассчитывает оптимальную величину, учитывая переменные и ограничения. Перейдите по ссылке и узнайте как подключить настройку «Поиск решения».
- Диспетчер сценариев («Данные» – «Работа с данными» – «Анализ «что-если»» – «Диспетчер сценариев») – анализирует несколько вариантов исходных значений, создает и оценивает наборы сценариев.
Для решения простейших задач применяется команда «Подбор параметра». Самых сложных – «Диспетчер сценариев». Рассмотрим пример решения оптимизационной задачи с помощью надстройки «Поиск решения».
Условие. Фирма производит несколько сортов йогурта. Условно – «1», «2» и «3». Реализовав 100 баночек йогурта «1», предприятие получает 200 рублей. «2» – 250 рублей. «3» – 300 рублей. Сбыт, налажен, но количество имеющегося сырья ограничено. Нужно найти, какой йогурт и в каком объеме необходимо делать, чтобы получить максимальный доход от продаж.
Известные данные (в т.ч. нормы расхода сырья) занесем в таблицу:
На основании этих данных составим рабочую таблицу:
- Количество изделий нам пока неизвестно. Это переменные.
- В столбец «Прибыль» внесены формулы: =200*B11, =250*В12, =300*В13.
- Расход сырья ограничен (это ограничения). В ячейки внесены формулы: =16*B11+13*B12+10*B13 («молоко»); =3*B11+3*B12+3*B13 («закваска»); =0*B11+5*B12+3*B13 («амортизатор») и =0*B11+8*B12+6*B13 («сахар»). То есть мы норму расхода умножили на количество.
- Цель – найти максимально возможную прибыль. Это ячейка С14.
Активизируем команду «Поиск решения» и вносим параметры.
После нажатия кнопки «Выполнить» программа выдает свое решение.
Оптимальный вариант – сконцентрироваться на выпуске йогурта «3» и «1». Йогурт «2» производить не стоит.
Чаще всего для этой цели применяются финансовые функции. Рассмотрим пример.
Условие. Рассчитать, какую сумму положить на вклад, чтобы через четыре года образовалось 400 000 рублей. Процентная ставка – 20% годовых. Проценты начисляются ежеквартально.
Оформим исходные данные в виде таблицы:
Так как процентная ставка не меняется в течение всего периода, используем функцию ПС (СТАВКА, КПЕР, ПЛТ, БС, ТИП).
Заполнение аргументов:
- Ставка – 20%/4, т.к. проценты начисляются ежеквартально.
- Кпер – 4*4 (общий срок вклада * число периодов начисления в год).
- Плт – 0. Ничего не пишем, т.к. депозит пополняться не будет.
- Тип – 0.
- БС – сумма, которую мы хотим получить в конце срока вклада.
Вкладчику необходимо вложить эти деньги, поэтому результат отрицательный.
Для проверки правильности решения воспользуемся формулой: ПС = БС / (1 + ставка)кпер. Подставим значения: ПС = 400 000 / (1 + 0,05)16 = 183245.
Решение эконометрики в Excel
Для установления количественных и качественных взаимосвязей применяются математические и статистические методы и модели.
Дано 2 диапазона значений:
Значения Х будут играть роль факторного признака, Y – результативного. Задача – найти коэффициент корреляции.
Для решения этой задачи предусмотрена функция КОРРЕЛ (массив 1; массив 2).
Решение логических задач в Excel
В табличном процессоре есть встроенные логические функции. Любая из них должна содержать хотя бы один оператор сравнения, который определит отношение между элементами (=, >, =,
Пример задачи. Ученики сдавали зачет. Каждый из них получил отметку. Если больше 4 баллов – зачет сдан. Менее – не сдан.
- Ставим курсор в ячейку С1. Нажимаем значок функций. Выбираем «ЕСЛИ».
- Заполняем аргументы. Логическое выражение – B1>=4. Это условие, при котором логическое значение – ИСТИНА.
- Если ИСТИНА – «Зачет сдал». ЛОЖЬ – «Зачет не сдал».
Решение математических задач в Excel
Средствами программы можно решать как простейшие математические задачки, так и более сложные (операции с функциями, матрицами, линейными уравнениями и т.п.).
Условие учебной задачи. Найти обратную матрицу В для матрицы А.
- Делаем таблицу со значениями матрицы А.
- Выделяем на этом же листе область для обратной матрицы.
- Нажимаем кнопку «Вставить функцию». Категория – «Математические». Тип – «МОБР».
- В поле аргумента «Массив» вписываем диапазон матрицы А.
- Нажимаем одновременно Shift+Ctrl+Enter – это обязательное условие для ввода массивов.
Скачать примеры
Возможности Excel не безграничны. Но множество задач программе «под силу». Тем более здесь не описаны возможности которые можно расширить с помощью макросов и пользовательских настроек.
Практические примеры логических функций в Excel
Доброго времени суток уважаемый читатель!
В этой статье я хотел бы описать примеры логических функций в Excel, как правильно их использовать, так как уверен, что это позволит более глубоко и эффективней применять их в работе. Все функции я уже описывал в статьях о логических функциях, часть №1 и часть №2, а также в ряде других статей, с которыми вы можете познакомиться на сайте.
Я хочу показать вам только практическое применение функций и их комбинации на тех примерах, которые вам могут пригодиться в работе для выполнения поставленных задач.
Я думаю что вы согласитесь со мной в том что эффективное использование Excel и доведение своих задач до автоматизации позволит вам значительно сократить затраты своего рабочего времени и улучшить эффективность выполненной работы.
Что позволит увеличить объемы ваших бизнес процессов или просто освободить свое время для самого ценного в жизни: семьи, друзей, отдыха, хобби и т.п.
Ну что же давайте теперь порешаем задачки с примерами использования логических функций:
Задача №1: Переоценка складских остатков;
Задача №2: Определение проходного бала на экзаменах;
Задача №3: Выявление перерасхода плановых средств;
Задача №4: Списание залежалого товара;
Задача №5: Подбор продуктов питания.
Итак, начнем решать поставленные задачи.
Задача №1:
На складе содержится группа товаров, к которому применимо определение «залежались», то есть его срок хранения подходит к концу и необходимо произвести переоценку, включить акцию или сделать скидку, срезав цену в 2 раза.
Возьмем за основу 3 условия:
- Если срок хранения товара 8 и больше месяцев, необходимо вводить акции для увеличения продаж;
- Если срок хранения увеличился до 10 месяцев и больше делаем скидку 50% на все позиции;
- В случае, когда срок хранения достигает 12 месяцев, режем цену в два раза и убираем остатки со склада до момента истечения срока хранения.
Исходя из условий мы группируем наличный товар по условиям с помощью функции ЕСЛИ с тремя вложенными условиями (лишние пробелы нужно убрать):
=ЕСЛИ ( D2 >= 12; ” Режем цену в 2 раза ” ; ЕСЛИ ( D2 >= 10 ; ” Скидка 50% ” ; ЕСЛИ ( D2 >= 8; «Акционный товар»; “”)))
Как только мы определили, что необходимо делать и с каким товаром, следующим шагом будет определить какую скидку на товар необходимо делать, для увеличения продаж и освобождения склада от залежей «неликвидного» продукта.
Исходя из предыдущих 3 условий, будем делать 3 скидки:
- Скидка 20% для категории «Акционный товар»;
- Скидка 50% для товаров, которые на складе уже 10 месяцев и больше;
- Делим цену на два для товара, сроки хранения, которых уже «горят».
Теперь, исходя из полученных условий, можно вывести сумму скидки на товар в зависимости от времени нахождения его на складе. Для получения результата воспользуемся формулой на базе функции ЕСЛИ:
=ЕСЛИ ( E2 = «Режем цену в 2 раза» ; C2/2 ; ЕСЛИ ( E2 = «Скидка 50%» ; C2*50% ; ЕСЛИ ( E2 = «Акционный товар» ; C2*20% ; «„ )))
Теперь определим новую цену складских остатков, используя возможности игнорирования ошибок с помощью логической функции ЕСЛИОШИБКА. Для этого необходима формула:
=ЕСЛИОШИБКА(C2-F2;“»)
Дополнение! Время хранения можно указывать по датам и привязать функциями времени для его автоматического определения. Это еще более автоматизирует ваши вычисления и улучшит точность и логику вычисления.
Задача №2:
В этом примере логических функций создадим отчёт о результатах выпускных экзаменов, которые должны сформировать пропускной бал при поступлении в гимназию.
Экзаменов будет всего три: математика, русский язык и история, проходной бал для зачисления в гимназию будет равняться 12.
Дополнительным условием можно добавить, что бы по экзамену с русского языка оценка должна быть не менее 4.
Исходные данные для нашей таблицы будут такими:
Необходимо создать формулу, которая будет общее количество полученных балов сверять с условием по проходному балу. Также в обязательном порядке производится проверка оценки по русскому языку на соответствие и выводится результат: «Зачислен» или «Не принят».
Для написания условия необходимо в формулу ввести логическую функцию И, которая будет отслеживать правильность двух условий и функцию СУММ для суммирования итоговых оценок. Формула получится такая:
=ЕСЛИ(И(C2>=4;СУММ(C2:E2)>=$C$8);”Зачислен”;”Не принят”)
Задача №3:
Очень часто планируя затраты для получения прибыли, специалисты должны отслеживать платежи что бы сумы не выходили за границы лимита и можно было получить запланированную прибыль. По этому важно знать где и когда превышен лимит затрат, что бы в дальнейшем выправить ситуацию и получить положительный результат.
В примере указаны плановые и фактические затраты за квартал в разрезе месяцев и есть возможность проанализировать какие из затрат были чрезмерны. Что бы улучшить визуализацию данных можно воспользоваться условным форматированием для разных ответов: «зеленым» цветом выделить положительные результаты и «красным» — отрицательные. Для этого нам поможет формула:
=ЕСЛИ ( ИЛИ ( C13 > C4 ; D13 > D4 ; E13 > E4 ) ; ” Лимит превышен ” ; « В границах лимита „ )
Задача №4:
В одном из примеров мы уже производили переоценку складских запасов, а теперь стоит добавить еще и работу статистической функции СРЗНАЧ, которая будет определять товар, цена которого ниже среднего значения цены по прайсу и рекомендовать его к списанию. Применив условное форматирование можно выделить такие позиции. Для получения результата нам нужна формула:
=ЕСЛИ(G2
10 задач с собеседований в крупные компании
Известные корпорации — Google, Intel или Apple — славятся тем, что на собеседовании задают соискателям каверзные задачки. Сайт AIN.UA собрал 10 интересных примеров таких задач. Некоторые из них предложили сами компании, а некоторые выложили пользователи, уже проходившие собеседования. Для их решения требуются знание математики на школьном уровне или просто смекалка.
AdMe.ru предлагает проверить, как бы вы справились с таким собеседованием.
Что спрашивают в Apple
© itechify
Задача на логику. Шелдон Купер (тот самый гениальный физик из популярного сериала) дошел в игровом квесте в погоне за сокровищами до последнего рубежа. Перед ним — две двери, одна ведет к сокровищу, вторая — к смертельно опасному лабиринту.
У каждой двери стоит стражник, каждый из них знает, какая дверь ведет к сокровищу. Один из стражников никогда не врет, другой — врет всегда. Шелдон не знает, кто из них врун, а кто нет.
Прежде чем выбрать дверь, задать можно только один вопрос и только одному стражнику.
Вопрос: Что спросить Шелдону у стражника, чтобы попасть к сокровищу?
Можно спросить любого, при этом задать вопрос так: «Какая дверь, по мнению другого стражника, правильная?». Если он спросит у правдивого, то получит данные о том, какая дверь ведет к лабиринту, ведь врущий стражник всегда врет. Если же он спросит у врущего стражника, опять же, узнает, какая дверь ведет к лабиринту, ведь тот соврет о двери, на которую укажет правдивый стражник.Землю захватили инопланетяне. Они планируют уничтожить всю планету, но решили дать человечеству шанс. Они выбрали десяток самых умных людей и поместили их в абсолютно темную комнату, посадив в ряд, один за другим. На каждого из людей надели по шляпе, шляпы всего двух цветов — розовые и зеленые. После того как все шляпы оказываются на головах, свет включается.
Инопланетянин начинает с последнего человека в ряду и спрашивает о том, какого цвета шляпа у него на голове. Других слов, кроме цвета шляпы, произносить нельзя. Отмалчиваться — тоже. Если он отвечает верно, остается в живых, ошибается — его убивают.
Нельзя посмотреть, какого цвета ваша шляпа, но можно договориться о некоем принципе, по которому отвечать всем. Расположение шляп — случайное, комбинации могут быть любыми, вам видны все шляпы, которые расположены перед вами.
Вопрос: Что нужно отвечать, чтобы выжило как можно больше людей?
Первый отвечающий считает количество зеленых шляп перед собой: если это нечетное число, он называет «зеленый», если четное — «розовый».
Следующий, видя количество и цвет шляп перед собой, может таким образом вычислить, какого цвета шляпа у него на голове (к примеру, если зеленых все еще нечетное количество, то очевидно, что на нем — розовая), и так далее.
Таким образом гарантированно выживают 9 из 10, а у первого отвечавшего шанс 1 к 1.
Что спрашивают в Adobe
© adobe
У вас 50 мотоциклов с заполненным топливом баком, которого хватает на 100 км езды.
Вопрос: Используя эти 50 мотоциклов, как далеко вы сможете заехать (учитывая, что изначально они находятся в условно одной точке пространства)?
Самый простой ответ: завести их все одновременно и проехать 100 км. Но есть и другое решение. Сначала переместите все мотоциклы на 50 км. Затем перелейте топливо из половины мотоциклов в другую половину.
У вас таким образом — 25 мотоциклов с полным баком. Проедьте еще 50 км и повторите процедуру.
Так можно забраться на 350 км (не учитывая того топлива, которое останется от «лишнего» мотоцикла при разделе 25 надвое).
Что спрашивают в Microsoft
© naked-science
У вас бесконечный запас воды и два ведра — на 5 литров и 3 литра.
Вопрос: Как вы отмерите 4 литра?
Наполните водой пятилитровое ведро и вылейте часть воды в трехлитровое. У вас сейчас 3 литра в маленьком ведре и 2 — в большом. Опустошите маленькое ведро и перелейте туда оставшиеся 2 литра из большого. Снова наполните большое ведро и перелейте из него воду в малое. Там уже есть 2 литра воды, так что долить придется литр, а в большом останется 4 литра.
У вас два отрезка веревки. Каждый таков, что если поджечь его с одного конца, он будет гореть ровно 60 минут.
Вопрос: Имея только коробку спичек, как отмерить с помощью двух отрезков такой веревки 45 минут (рвать веревки нельзя)?
Один из отрезков поджигается с двух концов, одновременно с этим поджигается второй отрезок, но с одного конца. Когда первый отрезок догорит полностью, пройдет 30 минут, от первого также останется 30-минутный отрезок. Поджигая его с двух концов, получим 15 минут.
Что спрашивают в Google
© terra
У вас имеется 8 шариков одинакового вида и размера.
Вопрос: Как найти более тяжелый шарик, используя весы и всего два взвешивания?
Отберите 6 шариков, разделите их на группы по 3 шарика и положите на весы. Группа с более тяжелым шариком перетянет чашу. Выберите любые 2 шарика из этой тройки и взвесьте. Если тяжелый шарик среди них, вы это узнаете; если они весят одинаково — тяжелый тот, что остался. Если же более тяжелого шарика в группах по 3 шарика не оказалось, он — среди 2 оставшихся.
Что спрашивают в Qualcomm
© miui
Эту задачку описал пользователь, которого собеседовали на позицию senior systems engineer. Он отметил в описании задачи, что у него был свой ответ, по поводу которого он долго спорил с человеком, проводившим собеседование.
Предположим, у нас происходит 10 пакетных передач данных по беспроводной сети. Канал не очень качественный, так что есть вероятность 1/10, что пакет данных не будет передан. Трансмиттер всегда знает, удачно или неудачно был передан пакет данных. Когда передача неудачная, трансмиттер будет передавать пакет до тех пор, пока не преуспеет.
Вопрос: Какую пропускную способность канала получаем?
По версии пользователя, ответ должен был быть: 9 пакетов в секунду. Но человек, проводивший интервью, с ним не согласился, правда, ответа не назвал, но повторял, что «из-за ретрансмиссии пропускная способность должна быть уменьшена больше, чем на 1/10».
Что спрашивают в «Яндексе»
© naked-science
Эту задачу предлагали решить для вступления в Школу анализа данных в феврале 2014 года.
Игра состоит из одинаковых и независимых конов, в каждом из которых выигрыш происходит с вероятностью p. Когда игрок выигрывает, он получает 1 доллар, а когда проигрывает — платит 1 доллар. Как только его капитал достигает величины N долларов, он объявляется победителем и удаляется из казино.
Вопрос: Найдите вероятность того, что игрок рано или поздно проиграет все деньги, в зависимости от его стартового капитала K.
Эту задачу предлагали решить разработчикам на собеседовании, и она больше связана непосредственно с программированием, чем предыдущие примеры.
Имеется морфологический словарь объемом примерно 100000 входов, в котором глаголы совершенного и несовершенного вида помещены в отдельные статьи (то есть «делать» и «сделать» считаются разными словарными входами). Вам требуется найти в словаре такие видовые пары и «склеить» статьи в одну.Вопрос: Опишите общий сценарий решения такой задачи и примерный алгоритм поиска видовых пар.
Ответов на задачи «Яндекса» у нас, к сожалению, нет.
И бонус
Эту задачу приписывают Альберту Эйнштейну — якобы с ее помощью он подбирал себе ассистентов. Другая почти легендарная история приписывает авторство Льюису Кэрроллу. Отметим, что она очень просто решается на бумаге, но, если хотите хардкора — попробуйте решить в уме.
На улице стоят пять домов.Англичанин живет в красном доме.У испанца есть собака.В зеленом доме пьют кофе.Украинец пьет чай.Зеленый дом стоит сразу справа от белого дома.Тот, кто курит Old Gold, разводит улиток.В желтом доме курят Kool.В центральном доме пьют молоко.Норвежец живет в первом доме.Сосед того, кто курит Chesterfield, держит лису.
В доме по соседству с тем, в котором держат лошадь, курят Kool.Тот, кто курит Lucky Strike, пьет апельсиновый сок.Японец курит Parliament.Норвежец живет рядом с синим домом.
Каждый из домов покрашен в отдельный цвет, в каждом доме живет представитель отдельной национальности, у каждого — свой питомец, своя любимая марка сигарет и напиток.
Вопрос: Кто пьет воду? Кто держит зебру?
Японец держит зебру, норвежец пьет воду.
Задачи на собеседованиях от Acronis и решения задач от Custis
«За что бьют сисопа? За отсутствие бэкапа!» Корни этой мудрости потерялись в веках, а само слово «сисоп» уже подзабылось, но за отсутствие бэкапа по-прежнему кого-то бьют.
Слабые тела админов и простых пользователей защищает не так уж много производителей ПО, и из них, пожалуй, лидирующим можно назвать Acronis — трудно найти в нашей стране пользователя, данные которого ни разу не были бы спасены программами Acronis от грандиозного факапа. Про админов и говорить нечего — решения этой компании всегда занимали достойное место на загрузочных дисках для оказания первой помощи. А как быть программистам, которые хотели бы в нее трудоустроиться? Когда-то я сам шарил по сайтам с вакансиями и, как сейчас помню, был вдохновлен зарплатой, которую в Acronis обещали программистам на приплюснутом си.
Сегодня мы поговорим с Евгением Панищевым, руководителем QA Cloud направления международной компании Acronis. Его отдел занимается тестированием всех облачных решений Acronis: от Acronis Backup Cloud до Acronis Disaster Recovery. Задача лично Евгения — следить за тем, чтобы специалисты отдела выполняли свою работу еще лучше и эффективнее.
Евгений регулярно проводит собеседования при приеме людей в отдел сопровождения качества и считает, что хороший тестировщик должен обладать логическим мышлением, быть очень внимательным, уметь нестандартно мыслить и четко обосновывать свою точку зрения. Поскольку нет такого человека, который отрицал бы в себе наличие всех этих качеств :), для их проверки он дает на собеседовании ряд задач — как имеющих правильный ответ, так и «открытых», без единого решения.
Свой выбор задач Евгений объясняет так: «Первый тип задач позволяет проверить логические и аналитические способности кандидата, второй — понять, как именно он мыслит.
На собеседовании важно и то и другое; иногда правильное живое мышление важнее верного ответа. Я знаю, что многие пренебрежительно относятся к задачам, предлагаемым на собеседовании, считая их пустой тратой времени, но это ошибка.
Такие тесты позволяют за довольно короткое время понять, что за человек перед вами. Чем нестандартнее задачи, тем лучше понимание».
Любимое задание Евгения — тестирование калькулятора: кандидату выдают обыкновенный настольный калькулятор и предлагают проверить его работу. Эта задача не имеет точного решения, зато позволяет выявить уровень человека как тестировщика.
По тому, какие тест-кейсы он озвучивает, какие уточняющие вопросы задает, как выбирает ключевые параметры тестирования при наличии ограниченного числа тест-кейсов, можно понять, насколько человек разбирается в теме, готов ли учиться и воспринимать подсказки, умеет ли идти на компромисс и отстаивать свою точку зрения.
Если это задание кажется тебе слишком простым, попробуй ответить на вопрос: как именно должен вести себя калькулятор, если произвести на нем действие, результат которого выйдет за пределы разрешенного для экрана количества цифр? Почему ты считаешь, что он должен вести себя именно так?
«Для любого айтишника важно знание алгоритмов, оценка их сложности и умение с ними работать, — говорит Евгений. — Без приличного математического аппарата невозможно стать высококлассным специалистом: чем выше вы подниметесь в иерархии программистов, тем с более высоким уровнем абстракции вам придется иметь дело. Это практически не зависит от того направления, которое вы выберете: математика нужна везде».
Чтобы проверить, как кандидат ориентируется в высоких алгебраических сферах, Евгений использует, например, такую задачу: «Дан массив S из n действительных чисел, а также число x. Как за время O(nlogn) определить, можно ли представить х в виде суммы двух элементов из S?»
В целом, по мнению Евгения, теория алгоритмов — это область, которой часто пренебрегают в ходе обучения программированию. «Обычно ограничиваются некоторыми общими словами и примерами.Знание сортировки „пузырьком“ или быстрой сортировки само по себе недостаточно для понимания темы. Кроме теории алгоритмов, необходима логика, а также умение ее применять — желательно всегда и везде».
Чтобы понять, умеет ли кандидат делать правильные умозаключения независимо от внешней формулировки, в Acronis используют следующую забавную задачу:
«Если лягушонок зеленый, то он веселый. Если лягушонок не веселый, то он сидит на берегу. Все лягушата либо зеленые, либо пестренькие. Если лягушонок пестренький, то он плавает в воде.
Из этого следует (нужно выбрать правильный ответ или ответы):
- (A) все лягушата — пестренькие;
- (B) все лягушата плавают в воде;
- (C) все лягушата — веселые;
- (D) все лягушата — не веселые;
- (E) все веселые лягушата — зеленые».
«Задача выглядит детской и несерьезной, что зачастую сбивает многих кандидатов с толку: они не могут абстрагироваться от формулировки и работать с утверждениями так, будто это обычные логические последовательности.
По сути, это действительно довольно простая задачка, которая дается на математических олимпиадах школьникам пятых-шестых классов.
Но об этом я кандидатам не говорю; особенно тем, кто не смог ее решить» (задачка очень популярная, и, кстати, она была в одном из выпусков нашей рубрики. — Прим. ред.).
Развитое логическое мышление иногда ценится даже выше, чем умение писать код. «На мой взгляд, логика нужна любому человеку, а IT-специалисту — тем более.
Поэтому мы, к сожалению, периодически вынуждены отказывать кандидатам, которые пишут неплохой код, имеют немалый опыт, но при этом очень слабо владеют математической логикой.
Программист, который ею не владеет, — это потенциальная угроза будущему продукту».
Еще одна классическая задача на логику от Acronis:
Предположим, что фраза «Завтра будет лучше, чем вчера» верна каждый день. Какое из утверждений может тогда быть неверным?
- (A) Послезавтра будет лучше, чем сегодня.
- (B) Сегодня будет лучше, чем позавчера.
- (C) Послезавтра будет лучше, чем позавчера.
- (D) Завтра будет лучше, чем позавчера.
- (E) В 2006 году 1 апреля будет лучше, чем позавчера.
Ну и конечно, для IT-специалиста важно умение писать код и разбираться в том, что написали другие. По мнению Евгения, то и другое одинаково необходимо. «Если человек умеет писать код, но совершенно не способен понять код коллеги, то он бесполезен, — точно так же, как тот, кто прекрасно читает чужой код, но не может написать ни строчки своего».
Чтобы понять, насколько свободно человек владеет кодом, в Acronis используют задачи наподобие этих:
Объясните, что делает этот код:
((n & (n – 1) ) == 0)
Найдите ошибку в следующем коде:
unsigned int i; for (i = 100; i >= 0; –i) printf(“%d”, i);
Дан текстовый файл размером 32 Гбайт. На тестовой машине установлены Windows и питон. Нужно найти последнее вхождение слова ERROR и вывести десять строчек до и десять после. Как изменится решение, если исходный файл разбит на куски размером 2 Гбайт?
Наконец, есть еще один неочевидный параметр, по которому обычно оценивают кандидата. «Его называют по-разному, но мне больше нравится термин „толковость“. Это некая смесь „соображалки“, умения находить нестандартный подход и вообще работать с новыми и необычными задачами.Задачи для проверки этого качества вызывают самые большие споры. Практически все уже знают вопросы о том, почему крышка у канализационного люка круглая и сколько шариков может поместиться в автобусе. Такие вопросы можно считать дурацкими, но их нужно задавать, чтобы понять, как человек способен справиться с нестандартной ситуацией.
Решения может не быть: это в данном случае не главное».
В Москве есть служба промышленных альпинистов, которые приводят в порядок внешнюю часть зданий и моют окна с наружной стороны. Оцените, сколько таких альпинистов работает в Москве.
Никто не ждет, что кандидат с ходу назовет точное число или хотя бы сможет приблизительно его подсчитать. Главное — посмотреть, как человек мыслит, как подходит к задаче, как пытается найти ответ.
Но разумеется, есть и задачи с конкретным решением. Две из них Евгений предлагает вниманию читателей «Хакера».
Те, кто первыми пришлют правильные ответы (обязательно с обоснованием), получат в качестве приза от компании Acronis ключи от кварти… нет, стоп, не то письмо.
Победитель получит ключ для Acronis True Image 2015 — уникального ПО для резервного копирования в безлимитное облако на один год.
Куда слать правильные ответы?
Правильные ответы принимает Диана Круглова, Diana.Kruglova@acronis.com.Спеши выиграть ключ Acronis True Image 2015 – уникальный софт для резервного копирования своего PC или Mac в безлимитное облако на один год!
Представьте, что у вас есть обыкновенные часы. Они идут точно, без сбоев. В этих часах меняют местами минутную и часовую стрелки. Сколько раз в сутки такие часы будут показывать правильное время?
Нужно написать на листе бумаги число 10 000 и обвести его в круг, не отрывая ручку от этого листа бумаги; при этом цифры не должны соединяться друг с другом.
Разработчик баз данных в свой первый рабочий день в компании Custis обнаружил, что в его проекте используется всего одна табличка с данными по отгруженным товарам (Т).
В ней собираются данные по дате отгрузки (d), идентификационному номеру клиента (c) и количеству отгруженного товара (s).
Разработчик проверил и убедился, что никаких ключей в таблице нет и по одному клиенту может быть сколько угодно фактов отгрузки в один день.
Почувствовав облегчение от того, что не придется возиться со страшными запросами, разработчик пошел на кухню выпить кофе и перекусить фруктами.После возвращения он с легким сердцем схватил первый же инцидент со Scrum-доски и прочитал следующее: «Нужен отчет по ежедневным отгрузкам товара по выбранному клиенту».
Посоветовавшись с товарищами, он выяснил, что отчеты принято оформлять в виде view (представления), то есть для решения проблемы нужно сделать такой view, чтобы запрос
select * from V where c = ?
возвращал отчет по указанному клиенту, причем в результате будут отражены все дни текущего года. Аналитик проекта сказал, что пользователи не любят пустых граф в отчетах, так что все отсутствующие отгрузки придется формировать как нулевые.
Как вы думаете, какой view в результате получился у нашего разработчика?
create view V as select p.d, T.c, nvl(sum(T.s),0) s from ( select trunc(sysdate, 'Y')+level-1 d from dual connect by trunc(sysdate, 'Y')+level-1 new { Product = p, Rests = atlasClient.GetRests(p.Id) }); var fewProducts = allProducts.Where(i => i.Rests > 0 && i.Rests < 10).Select(i => i.Product); var someProducts = allProducts.Where(i => i.Rests >= 10 && i.Rests < 100).Select(i => i.Product); var manyProducts = allProducts.Where(i => i.Rests >= 100).Select(i => i.Product); PrintFewProducts(fewProducts); PrintSomeProducts(someProducts); PrintManyProducts(manyProducts);
метод atlasClient.GetRests занимает около 98% общего времени построения отчета.
Предложите вариант оптимизации построения отчета. Почему ваш вариант работает быстрее? Сколько времени занимает построение отчета после вашей оптимизации?
- Используя ToArray() или аналоги, вычислить последовательность allProducts до ее использования при получении fewProducts, someProducts, manyProducts.
- AllProducts является отложенным Linq-запросом, и его использование в трех выражениях приводит к многократному вычислению элементов последовательности. Вычислив последовательность один раз, мы сэкономим два «дорогих» вызова atlasClient.GetRests на каждый элемент последовательности, но нам потребуется дополнительный объем памяти для хранения результата. Из-за этого при больших объемах данных такое решение «в лоб» не всегда может быть применимо.
- Такой вариант построения отчета будет занимать около двадцати минут.
Разработчик C# решил попробовать себя на поприще Java и перешел в Java-проект. Одно из первых заданий, которое он получил, — сделать таблицу с информацией о проданных товарах.
В постановке задачи было написано, что нужны следующие столбцы: имя клиента, код клиента, название товара и стоимость товара.
Посмотрев на реализацию такого рода таблиц в проекте, он понял, что при настройке таблицы придется написать что-то вроде
table.add( “customer.name” ); table.add( “customer.code” ); table.add( “subject.name” ); table.add( “summ” );Прямо скажем, по сравнению с тем, как он делал это на родном dotNet, это выглядело совсем ненадежно — никаких проверок уровня компиляции, очень легко допустить ошибку. Хочется написать
table.add( customer.name );
Или хотя бы
table.add( {} -> customer.name );
А тут такое… Код получается небезопасный, IDE никак не подсказывает, что писать, и вообще… Решив не сдаваться и привнести свет истины в захолустное царство Java, он объяснил проблемы такой настройки таблиц другим Java-разработчикам.
Ему отвечали, что проект ведется на Java 7, лямбд нет, а с анонимными классами для каждого поля настройка будет выглядеть жутко, поэтому «пишем, как можем».
Однако, найдя единомышленников в стане Java, он смог реализовать движок, который позволял настраивать столбцы вот так:
Payment root = root( Payment.class ); table.add($( root.getCustomer().getName() )); …
Причем интерфейс настройки таблиц менять не пришлось, то есть на вход table.add приходит все та же строка customer.name. Не пришлось менять и модельные сущности («покупатель», «товар», «покупка» и другие), и даже не понадобилось никаких автогенерированных классов. Этот инструмент начали использовать везде, где нужно было сослаться на цепочку свойств.
Как бы вы реализовали такой фреймворк? Важен только принцип, код писать не нужно.
- root — статический метод, на лету создающий особый прокси-объект вокруг модельной сущности. Все get-методы в этом объекте записывают свои вызовы в глобальную переменную (например, ThreadLocal);
- $ — статический метод, который из данной глобальной переменной получает полный путь к полю в виде строки.
IT-компании, шлите нам свои задачки!
Миссия этой мини-рубрики — образовательная, поэтому мы бесплатно публикуем качественные задачки, которые различные компании предлагают соискателям. Вы шлете задачки на lozovsky@glc.ru — мы их публикуем.
Никаких актов, договоров, экспертиз и отчетностей.
Читателям — задачки, решателям — подарки, вам — респект от нашей многосоттысячной аудитории, пиарщикам — строчки отчетности по публикациям в топовом компьютерном журнале.