Amazon Interview Question
SDE1sCountry: United States
Interview Type: Phone Interview
Please ignore earlier one.. check this one
Public class Dog
{
String id;
boolean genderFemale;
List<Dog> childrens;
Dog mother;
Dog father;
Pedigree pedigree;
int age;
List<String> characteristics;
public boolean matches(SearchCriteria criteria)
{
boolean matches = true;
// check pedigree
if( criteria.pedigree != null &&
!pedigree.equals(criteria.pedigree)
{
matches = false;
}
// check dog characterstics
for(String c : criteria.characterstics)
{
// check dog characteristics
// check breed characterstics
}
return matches;
}
}
Public enum Breed
{
PAMERIAN("white", "short", "sweet"),
ALSESIAN("dark", "huge", "dangerous"),
DOVERMAN("huge", "faithful"),
UNKNOWN();
public Breed(String... characterstics)
{
breedCharacterstics = Arrays.asList(characterstics);
}
List<String> breedCharacterstics = new ArrayList<String>();
}
Public class Pedigree
{
}
Public class PurePedigree extends Pedigree
{
Breed breed;
}
Public class MixedPedigree extends Pedigree
{
Pedigree motherPedigree;
Pedigree fatherPedigree;
}
Public class DogsInBreederCamp
{
List<Dog> admittedDogs = new ArrayList<Dog>();
Map<String, Dog> allDogs = new HashMap<String, Dog>();
public List search(SearchCriteria criteria)
{
List<Dog> results = new ArrayList<Dog>();
for(Dog dog : allDogs.values())
{
if(dog.matches(criteria))
{
results.add(dog);
}
}
return results;
}
}
Public class SearchCriteria
{
List<String> characterstics;
Pedigree pedigree;
}
- Anonymous December 19, 2013