2010-01-27 2 views
2

я готовился к техническому интервью и хотел бы знать, как я мог бы идти о кратко объяснить интервьюер о подходе к разработке следующих программ, не вдаваясь в излишние подробности4 дизайн программы интервью вопросы

1. Program that lets people play tic tac toe with each other over the internet?    
2. A suitable data structure for a photo editor or text editor? Why? 
3. Implementing code to operate the elevators? 
4. Implementing the rendering engine of a web browser? 

я мог приходят со следующим:

  1. В программе в основном 2 части. Один имеет дело с отображением дисплея платы. Другой - это фактический движок, содержащий методы для поиска выигрышного хода, AI, завершения игры и т. Д. Тогда будет код, связанный с сетью.

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

  3. Это снова включает в себя визуализацию лифтов вместе с синхронизацией ресурсов.

  4. Не знаю, как подойти к этому.

Достаточно ли достаточно? Не хватает ли некоторых важных деталей для решения этих проблем.

+0

это выглядит как домашнее задание ... –

+0

Нет, я готовился к техническим интервью. И я попытался предоставить свой подход к решению этих проблем. – Epitaph

+0

Около 4, некоторые предложения включали бы создание парсера css и html до самого рендеринга (как только это не настоящий ответ, я помещаю комментарии) –

ответ

4

Редактор фотографий является интересным.

Вы должны учитывать требования фоторедактор: (? 16M +)

  • быстрого выбор, декодирование и отображения части многослойного структуры мегабайта данных
  • отзывчивого дисплей операции пользовательской инструменты для рисования - кисть не должна отставать, даже если щеткой по всему изображению
  • Вы можете эффективно управлять инструментами рисования при уменьшении масштаба?
  • экономить на общедоступных форматах
  • Рассмотрите влияние всех этих данных на кеш-память и пропускную способность ЦП - обратите внимание, что доступ к основной памяти может занять в 100 раз больше времени, чем доступ к кешу. Как сделать большинство операций в кеше?
  • какие общие особенности у существующих редакторы - отменить, слои, эффекты в реальном времени, режимы наложения, гамма-преобразование на заключительном проходе дисплея

Я предлагаю проведение нескольких уровней масштабирования с более низким разрешением и битовой глубины (как mipmaps) в памяти сразу, чтобы обеспечить эффективную работу на разных уровнях масштабирования, изменение кодировки в виде патчей к базовому изображению, а не прямое редактирование базы (т. е. уровень каждого изменения отдельно). Патчи могут быть закодированы как сетка с только раскрашенными квадратами с выделенной им памятью. Редактирование может быть закодировано как действие (например, инструмент, мышь вниз, движение, мышь вверх), прежде чем они будут отображены в пикселях - это позволяет сделать дешевую краску как патчи на текущем уровне mipmap и быстро отображать, тогда как фоновый поток создает патчи на других уровнях mipmap.

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