Amazon Interview Question
Software Engineer / DevelopersTeam: Amazon Video
Country: UK
Interview Type: In-Person
class Vehcile {
int VehcileNumber;
public int getVehcileNumber() {
return VehcileNumber;
}
public void setVehcileNumber(int vehcileNumber) {
VehcileNumber = vehcileNumber;
}
}
class Row {
public static final int MAX_NO_OF_VEHCILE_IN_ROW = 10;
int noOfVehicleParked = 0;
List<Vehcile> listOfVehicalParked;
public int getNoOfVehicleParked() {
return this.noOfVehicleParked;
}
public List<Vehcile> getListOfVehicleParked() {
return this.listOfVehicalParked;
}
public synchronized void remove(Vehcile v) {
if (listOfVehicalParked.contains(v)) {
listOfVehicalParked.remove(v);
noOfVehicleParked--;
}
}
public synchronized void add(Vehcile v) {
listOfVehicalParked.add(v);
noOfVehicleParked++;
}
}
class Parking {
static final int MAX_NO_ROWS = 5;
Row[] parkingRows = new Row[MAX_NO_ROWS];
public synchronized void parkVehcile(Vehcile v) {
for (int i = 0; i < MAX_NO_ROWS; i++) {
Row parkingRow = parkingRows[i];
if (parkingRow.getNoOfVehicleParked() < Row.MAX_NO_OF_VEHCILE_IN_ROW) {
parkingRow.add(v);
break;
}
}
}
public void showRowCount() {
for(int i=0; i<MAX_NO_ROWS;i++) {
System.out.println(parkingRows[i].getNoOfVehicleParked());
}
}
}
Sys Requirements
the system does not allow more vehicles than the maximum capacity of the parking lot. if the parking is full, show a message at the entrance panels on the ground floor.
each parkingLot has floors
each parkingLot has multiple entry and exit points
customers collect a parking ticket from entry points and pay the parking fee at the exit points or customer info portal
customers pay via both cash and credit cards
multiple floors
each floor has spots
each floor has counter screen
each spot has a type (motorcycle, compact, large, handicapped...)
the parking lot has some spots for electric cars. These spots have an electric panel for customers to pay
the system has a per-hour parking model (1st hour = $3, 2nd hour = $2, all the remaining hours = $1.5)
The membership class would be something like below.
class MemberShip {
public String Name;
public int Price;
}
class GoldMemberShip extends MemberShip {
}
class SilverMemberShip extends MemberShip {
}
public interface MemberShipManager {
public void subscribe(Vehcile v, MemberShip m);
public void unsubsribe(Vehcile v, MemberShip m);
}
public class ParkingMemberShipManger implements MemberShipManager {
ArrayList<String> subscribedVehicle;
public ParkingMemberShipManger(){
subscribedVehicle = new ArrayList<String>();
}
public void subsribe(Vehicle v, MemberShip m)
{
subscribedVehicle.add(v.no);
//rest of the code
}
public void unsubsribe(Vehcile v, MemberShip m) {
subscribedVehicle.remove(v.no);
//rest of the code
}
}
class MemberShip {
- Sunil June 24, 2017public String Name;
public int Price;
}
class GoldMemberShip extends MemberShip {
}
class SilverMemberShip extends MemberShip {
}
public interface MemberShipManager {
public void subscribe(Vehcile v, MemberShip m);
public void unsubsribe(Vehcile v, MemberShip m);
}
public class ParkingMemberShipManger implements MemberShipManager {
ArrayList<String> subscribedVehicle;
public ParkingMemberShipManger(){
subscribedVehicle = new ArrayList<String>();
}
public void subsribe(Vehicle v, MemberShip m)
{
subscribedVehicle.add(v.no);
//rest of the code
}
public void unsubsribe(Vehcile v, MemberShip m) {
subscribedVehicle.remove(v.no);
//rest of the code
}
}