In 30 min I could only create a draft. It's crazy what they requrie in an interview. It usually takes hours to come up with a resonable design.

Anyways this design has one very bad blocker that prevents it from being extendable. It's the `CarManufactures` switch. You have a fixed number of those types and you cannot add new ones without modifying the switch and the enum.

I would drop the _Family/Sport-Car_ stuff and replace it with _Coupe_, _Combi_, _SUV_ etc as they are the real car types. Those types should be classes derived from the `Car`  so that you can add new ones easily.

Whether a car is a family or a sport car is usually defined by the features it has - sport seats, engine with more power etc. and it's rather subjective.

    abstract class Car
    {
        protected Car(string make) { ... }
        public string Make { get; }
        public Feature Feature { get; set; }
    }
    
    abstract class Combi : Car {}
    
    abstract class Hatchback : Car {}
    
    class FocusCombi : Combi
    {
        public Focus() : base("Ford") {}
    }
    
    class FocusHatchback : Hatchback
    {
        public Focus() : base("Ford") {}
    }

With this structure you can create new car types anytime.

The feautures could be created with the composition pattern.

Then I would reduce the factory to just:

    public static class CarFactory
    {
        public static Car CreateCar<TCar>(Feature feature) where TCar : Car, new()
        {
            return new TCar() 
            {
                Feature = feature
            };        
        }
    }

and use it like this:

    CarFactory.CreateCar<FocusCombi>(FeatureSet.Family);

You could configure the feature set by composition like:

    var familiyFeature = Feature.Empty
        .Add<NinjectInjection>()
        .Add<PowerWindows>();