Об этом спрашивали во время интервью.
Существуют разные производители автобусов. У каждого автобуса есть разные модели, и у каждой модели только 2 варианта. Так что у разных производителей разные модели только с 2 вариантами. Интервьюер попросил меня разработать отдельную программу только с уроками. Она упомянула, что я не должен думать о базах данных, и мне не нужно было их кодировать. Например, это может быть консольная программа с входами и выходами.
Информация о производителях, моделях и вариантах должна храниться в памяти (жестко закодированные значения подходят для этой отдельной программы). Она хотела наблюдать за занятиями и моим подходом к решению проблем.
Она сказала мне сосредоточиться на реализации трех API или методов для этой системы.
Первым было получить информацию о конкретном автобусе. Введите имя производителя, название модели и название варианта. Учитывая эти три значения, информация о конкретном автобусе, такая как его цена, модель, год и т. Д., Должна быть показана клиенту.
Вторым API будет сравнение двух шин, а выводом будет перечисление функций рядом друг с другом, возможно, в табличном формате. Входные данные будут такими же, как и для первого API, т. Е. Название производителя, название модели и название варианта для обеих шин.
Третий - поиск автобусов по цене (> = цена) и получение списка автобусов, удовлетворяющих условию.
Она также добавила, что API должны быть масштабируемыми, и я должен разработать решение с этим условием.
Вот как я разработал классы:
class Manufacturer {
private String name;
private Set<Model> models;
// some more properties related to manufacturer
}
class Model {
private String name;
private Integer year;
private Set<Variant> variants;
// some more properties related to model
}
class Variant {
private String name;
private BigDecimal price;
// some more properties related to variant
}
class Bus {
private String manufacturerName;
private String modelName;
private String variantName;
private Integer year;
private BigDecimal price;
// some more additional properties as required by client
}
class BusService {
// The first method
public Bus getBusInformation(String manufacturerName, String modelName, String variantName) throws Exception {
Manufacturer manufacturer = findManufacturer(manufacturerName);
//if(manufacturer == null) throw a valid exception
Model model = findModel(manufacturer);
// if(model == null) throw a valid exception
Variant variant = findVariant(model);
// if(variant == null) throw a valid exception
return createBusInformation(manufacturer, model, variant);
}
}
Она подчеркнула, что было только 2 варианта, и вариантов больше не будет, и они должны быть масштабируемыми. После прохождения классов она сказала, что понимает мой подход, и мне не нужно было реализовывать другие API / методы. Я понял, что она не была впечатлена тем, как я их спроектировал.
Было бы полезно понять допущенную мною ошибку, чтобы я мог извлечь из нее урок.