A small interview take-home (Duda home assignment): model vehicles with fuel or electric engines and sort them with a custom Comparable ordering. Plain Java, no dependencies.
Vehicle(abstract) — holds the wheel count, theEngine, and a normalized amount of energy; implementsComparable<Vehicle>.Car,Motorcycle— concrete vehicles. The constructor overload chooses the engine type:new Car(wheels, int fuelLiters)— fuel enginenew Car(wheels, float batteryCharge)— electric engine (charge given as a fraction between 0 and 1)
Engine/Engine.EngineType— fuel or electric.
Energy is normalized so both engine types compare on the same scale: fuel vehicles report liters of fuel, electric vehicles report battery percentage (charge fraction × 100).
The natural ordering (Vehicle.compareTo) sorts fuel vehicles before electric ones, then by amount of energy in descending order within each group. Main builds a demo list, prints it, sorts it with Collections.sort, and prints the result.
- JDK 8 or newer
javac -d out src/*.java
java -cp out MainExpected output:
Car{wheels=4, engine=Fuel, energy=20.0}
Car{wheels=4, engine=Electric, energy=40.0}
Motorcycle{wheels=2, engine=Fuel, energy=5.0}
Motorcycle{wheels=2, engine=Electric, energy=80.0}
---------------------------------------------
Car{wheels=4, engine=Fuel, energy=20.0}
Motorcycle{wheels=2, engine=Fuel, energy=5.0}
Motorcycle{wheels=2, engine=Electric, energy=80.0}
Car{wheels=4, engine=Electric, energy=40.0}
Or open the project folder in any Java IDE and run Main.