Проблемы с ООП для использования при кодировании Тесты во время интервью

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

Мои проблемы с программированием, которые у меня на самом деле, на самом деле не способствуют способности людей OO. Я стараюсь, чтобы проблема кодирования была разрешимой в течение 2 часов. Итак, я изо всех сил старался найти проблему достаточно маленькой и достаточно привлекательной, чтобы она предоставляла людям навыки проектирования OO.

Любые предложения?

Ответ 1

Это проблема, которую я использую с некоторыми тренировками, выглядит просто, но сложна OOP-мудрая:

Создайте классы моделей, которые будут правильно представлять следующие конструкции:

  • Определить объект Shape, где объект представляет собой любую двумерную фигуру, и имеет следующие характеристики: имя, периметр и площадь поверхности.
  • Определите круг, сохраняя и точно выдавая значения вышеупомянутых характеристик формы.
  • Определите треугольник. На этот раз имя треугольника должно учитываться, если оно равностороннее (все три стороны имеют одинаковую длину), изоцеле (только две стороны имеют одинаковую длину) или скальне (без двух сторон одинаковы).

Вы можете продолжать и продолжать с помощью четырехугольников (включая квадраты, прямоугольники, ромбы и т.д.) и других полигонов.

То, как они решат вышеупомянутые проблемы, покажет людям, которые понимают ООП, кроме тех, кто этого не делает.

Ответ 2

В идеале вы хотите представить проблему, которая кажется сложной, но имеет простое, элегантное, очевидное решение, если вы думаете в терминах OO

может быть:

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

разработать решение для этого с использованием объектно-ориентированных методов


одно решение OO состоит в том, чтобы иметь Лицо, Заказчика, Учетную запись и Учетные записи, в которых Учетная запись указывает Лицо и Заказчика и необязательную родительскую учетную запись. использование рекурсивного объекта Account обрушивает иначе громоздкую структуру лица/команды/отдела/проекта, прямое решение ERD может дать

Ответ 3

Я использовал Тест программирования FizzBuzz. И отвратительно может подтвердить утверждения статьи. В качестве второго последующего ответа я попросил кандидатов вычислить угол между руками на аналоговых часах. Мы установили ноутбук с установленным VS 2008 и заглушкой на месте. все, что им нужно сделать, это заполнить реализацию.

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

Ответ 4

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

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

С уважением,

Ответ 5

Независимо от того, делают ли люди какое-то кодирование в интервью, я хочу сказать следующее: Расскажите мне о проблеме, которую вы недавно решили, используя объектно-ориентированное программирование. Вы будете удивлены, как часто люди не могут ответить на этот простой вопрос. Много раз я получаю пустой взгляд, или они говорят что-то вроде "что вы имеете в виду? Я программирую в .NET, который является объектно-ориентированным".

Ответ 6

Это не специальные вопросы OO, но проверьте другие вопросы, отмеченные interview-questions

Изменить: как реализовать некоторые шаблоны проектирования? У меня нет лучших знаний в этой области, но кажется, что у вас будет два вопроса по цене одного. Вы можете проверить как OO, так и Design pattens в одном вопросе.

Ответ 7

Как насчет какого-то простого графического интерфейса. Он получил наследование, переопределение, возможно, события. Если вы имеете в виду, что они действительно реализуются как часть теста, вы можете передать им пустую оконную форму с помощью OnPaint() и сообщить им, чтобы она дошла до нее.

Ответ 8

Вы можете сделать хуже, чем попросить их создать библиотеку MapReduce с реализацией одного процесса. Будет ли интерфейс по-прежнему работать для распределенной реализации? Какая политика обработки исключений? Должна ли существовать специальная поддержка цепочки заданий MapReduce в конвейере? Какой интерфейс для входов и выходов? Как вставляются данные? Могут ли разные входы в одном задании перейти к разным картографам? Какие дефолты являются разумными?

Хорошее решение в Python занимает около страницы кода.

Ответ 9

У меня супер простой набор. Идея в основном заключается в том, чтобы использовать их для фильтрации людей, которые действительно не знают своих вещей, а не фильтруют в рок-звездах.

Это все 5-минутные вопросы типа white-board, поэтому они действительно не так уж трудны. Но акт написания кода и разговора через него показывает много о кандидате - и он блистателен, чтобы разоблачить тех, кто может в противном случае BS поговорить.

  • Напишите метод, который принимает радиус круга в качестве аргумента и возвращает область круга (вы были бы удивлены, как много людей борются за это!)
  • Напишите программу, которая принимает ряд чисел в качестве аргументов из командной строки. Добавьте их и распечатайте сумму
  • Напишите класс, который действует как счетчик с ключом (в основном карта, которая отслеживает, сколько раз каждый ключ "подсчитывается" ).