Доброе утро. Решил немного продолжить тренд задач по программированию на технических интервью. Итак, вот ещё одна реальная задачка с которой я встретился на одном из собеседований. Компанию называть не буду, скажу лишь что это одна из компаний, в области разработки алгоритмов, связанных с распознаванием голоса, ведущая деятельность в Санкт-Петербурге. Когда группа разрастётся, у меня будет стимул публиковать ответы. А пока вот несколько задачек
Пусть у нас есть компонент (например, API), разработанный не нами и, следовательно, мы не можем его модифицировать.
Этот компонент является по сути Singleton и реализует всего одну функцию:
int Sum (int , int );
Эта функция реализует сложение двух простых чисел.
Однако у компонента есть одна проблема — он не может работать в многопоточной среде,
т. е. данный метод может быть вызван только из одного определенного потока, такого который создал этот компонент.
В качестве аналогии можно привести пример из WinForms - с оконной формой тоже можно работать только из потока, который ее создал.
Кроме того, у нас уже разработано многопоточное приложение каждый из потоков которого обращается к данному компоненту.
Необходимо предложить решение данной проблемы.
Этот компонент является по сути Singleton и реализует всего одну функцию:
int Sum (int , int );
Эта функция реализует сложение двух простых чисел.
Однако у компонента есть одна проблема — он не может работать в многопоточной среде,
т. е. данный метод может быть вызван только из одного определенного потока, такого который создал этот компонент.
В качестве аналогии можно привести пример из WinForms - с оконной формой тоже можно работать только из потока, который ее создал.
Кроме того, у нас уже разработано многопоточное приложение каждый из потоков которого обращается к данному компоненту.
Необходимо предложить решение данной проблемы.
Задача 2. Имеется некий конвейер, состоящий из двух пересекающихся в нескольких местах очередей A и B, содержащих простые числа:
Конвейер предполагается использовать следующим образом - проталкивать простые числа по очереди в любую из очередей A или B и получать число на выходе из данной очереди с помощью функций:
int PushA(int);
int PushB(int);
При этом числа, находящиеся на пересечении очередей, принадлежат обеим очередям,
т. е. будут проталкиваться по той очереди, в которую в данный момент проталкивают новое число.
Необходимо предложить хотя бы один способ реализации такого конвейера, рассказать из каких классов будет состоять решение, какие контейнеры и почему будут использованы.
Перед Вами стоит именно задача реализации конвейера, предполагается, что задача инициализации решена,
в конструктор класса Вам передали все необходимые данные для инициализации (точки пересечения, длины рёбер и тд).
Конвейер предполагается использовать следующим образом - проталкивать простые числа по очереди в любую из очередей A или B и получать число на выходе из данной очереди с помощью функций:
int PushA(int);
int PushB(int);
При этом числа, находящиеся на пересечении очередей, принадлежат обеим очередям,
т. е. будут проталкиваться по той очереди, в которую в данный момент проталкивают новое число.
Необходимо предложить хотя бы один способ реализации такого конвейера, рассказать из каких классов будет состоять решение, какие контейнеры и почему будут использованы.
Перед Вами стоит именно задача реализации конвейера, предполагается, что задача инициализации решена,
в конструктор класса Вам передали все необходимые данные для инициализации (точки пересечения, длины рёбер и тд).
XP В соответствии с одной из рекомендаций XP, "Система должна быть собрана и все тесты должны пройти в течении..."
Anonymous Quiz
15%
часа
15%
15-ти минут
15%
30-ти минут
45%
5-ти минут
9%
10-ти минут
XP Какую из данных практик XP можно отнести к управленческим практикам:
Anonymous Quiz
14%
Улучшение дизайна системы
34%
Игра в планирование
14%
Совместное владение кодом
31%
Введение стандартов кодирования
7%
Метафора системы
XP Какой фактор лежит в центре треугольника управления проектами?
Anonymous Quiz
28%
Объем работ (Scope)
28%
Время (Time)
28%
Качество (Quality)
16%
Цена (Cost)
XP На какой вид/метод тестирования похоже написание тестов при test-driven разработке?
Anonymous Quiz
34%
white-box тестирование
7%
тестирование производительности
24%
стресс-тестирование
14%
интеграционное тестирование
21%
black-box тестирование
XP В соответствии с XP, как часто нужно проводить интеграцию своего кода с репозиторием?
Anonymous Quiz
46%
раз в день
11%
раз в неделю
6%
несколько раз в неделю
37%
более раза в день
XP Одна из практик XP предлагает держать этот фактор открытым для маневрирования во время реализации проекта:
Anonymous Quiz
9%
Цена (Cost)
13%
Качество (Quality)
34%
Время (Time)
44%
Объем работ (Scope)
XP Какая техника XP унаследовала методики от "V-образной" (V-Model) модели жизненого цикла?
Anonymous Quiz
52%
Test-Driven Development
10%
40
24%
Planning game
14%
Small releases
XP Что из перечисленного является правильной последовательностью действий в XP:
Anonymous Quiz
16%
написать код, написать тест, отрефакторить код
11%
написать код, отрефакторить код, написать тест
49%
написать тест, написать код, отрефакторить код
24%
спроектировать, написать код, написать тест
XP Что такое фактор загрузки (load factor) программиста?
Anonymous Quiz
20%
При парном программировании - отношение количества времени, которое человек кодировал, ко времени, к
20%
Реальное количество часов, потраченных на решение задач (за некоторый период)
14%
Отношение времени, которое человек реально работал в день, к 8-ми часам
46%
Отношение реально потраченного времени на решение задач к идеальному времени (за некоторый период)