2010-08-11 3 views
0

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

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

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

Thanks & С уважением,

мышиный

ответ

1

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

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

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

+0

Я думаю, что объекты в вопросах являются производителями и потребителями известной проблемы производителя-потребителя. –

0

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

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

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

Смежные вопросы