Вопрос по поводу очереди и тестирования - PullRequest
0 голосов
/ 11 августа 2010

Я готовлюсь к собеседованию и наткнулся на эти вопросы. Может кто-нибудь, пожалуйста, помогите, как решить эти вопросы.

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

  2. записать методы очереди и удаления очереди для очереди фиксированной длины, которая совместно используется двумя объектами. Вот к чему относятся объекты? Синхронизация потоков?

Спасибо и всего наилучшего,

мышиный

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Для 1) Вы должны проверить на совпадение в прямоугольниках. Первый тест, который я разработал, просто начинал с прямоугольников друг над другом и медленно раздвигал их, пока столкновения не были обнаружены. Ошибка, скорее всего, должна измеряться либо процентом перекрытия, либо количеством перекрывающихся пикселей. Я бы сделал и то, и другое ... Кто знает, что они, возможно, разработали алгоритм с точностью до пиксельной ошибки или% от размера ошибки объекта. то есть .. точнее для небольших объектов. После этого первоначального «быстрого теста» я попытался бы разработать более общий случай с большим количеством изменений в перекрытии. то есть ... 1 пиксель в верхнем левом углу перекрывается с 1 пикселем в нижнем левом углу другого прямоугольника с разными размерами прямоугольников. Тестирование некоторых умных угловых случаев и некоторых псевдослучайных перекрывающихся треугольников кажется мне хорошим тестовым замыслом.

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

Для 2) Подсчет семафоров приходит на ум как способ решения этой проблемы. Вы хотите, чтобы он блокировался, когда очередь заполнена на стороне ввода, и блокировался, когда очередь пуста на стороне очереди. Я не уверен, могут ли оба объекта ставиться в очередь и в очередь, но на самом деле не имеет значения, используете ли вы семафоры для отслеживания состояния очереди. Вы также хотите получить эксклюзивную блокировку всякий раз, когда вы изменяете очередь.

0 голосов
/ 11 августа 2010

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

Для второго написать круговую очередь. Как правило, что-то не так с вашей работой, если вы пишете общую структуру данных, а не используете библиотеку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...