Проблемы ООП для использования при тестировании кода во время интервью - PullRequest
12 голосов
/ 29 октября 2008

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

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

Есть предложения?

Ответы [ 9 ]

16 голосов
/ 29 октября 2008

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

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

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

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

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

6 голосов
/ 29 октября 2008

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

возможно:

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

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


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

3 голосов
/ 29 октября 2008

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

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

2 голосов
/ 29 октября 2008

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

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

С уважением,

1 голос
/ 29 октября 2008

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

0 голосов
/ 29 октября 2008

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

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

0 голосов
/ 29 октября 2008

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

0 голосов
/ 29 октября 2008

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

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

  • Напишите метод, который принимает радиус круга в качестве аргумента и возвращает площадь круга (Вы были бы удивлены, сколько людей борется за этот!)
  • Напишите программу, которая принимает ряд чисел в качестве аргументов из командной строки. Сложите их и выведите сумму
  • Напишите класс, который действует как счетчик клавиш (в основном это карта, которая отслеживает, сколько раз каждый ключ «подсчитывается»)
0 голосов
/ 29 октября 2008

Это не только вопросы OO, но посмотрите другие вопросы, помеченные интервью-вопросы

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

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