Microsoft Interview Question


Country: India




Comment hidden because of low score. Click to expand.
0
of 0 vote

HashTable would be nice. Since you might want to update the distances every few minutes. You could just maintain a hashtable for the friends that are sufficiently close to the user ( say < 20 miles ). Update the hashtable if needed with new friends and existing friends distances.

A better idea would be to use a min heap, with the distance being saved along with the friend id in each node of the heap. That way, you would only have to check for the friends with minimum distance every few seconds, and update the rest in a longer duration.

- Rushabh October 18, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

HashTable would be nice. Since you might want to update the distances every few minutes. You could just maintain a hashtable for the friends that are sufficiently close to the user ( say < 20 miles ). Update the hashtable if needed with new friends and existing friends distances.

A better idea would be to use a min heap, with the distance being saved along with the friend id in each node of the heap. That way, you would only have to check for the friends with minimum distance every few seconds, and update the rest in a longer duration.

- Rushabh October 18, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

1. There are two types of classes - Person class and Friend Class.
2. Person Class should be notified only when the nearness of friend is updated. Person class should notify of its location changes to friend. Person Class should implement LocationObservable Interface and NearnessObserver Interface
3. Friend Class should be notified only when the location of the person is updated. Friend class should notify of its nearness location based on the location changes he receives from the Person.
4. Following is a simple method stub , not complete solution just class diagram :

public interface LocationObservable {
     addFriend(LocationObserver locationObserver);
     removeFriend(LocationObserver locationObserver);
     notifyLocationChangeToAll();
     notifyLocationChangeToObserver(LocationObserver locationObserver);
}

public interface LocationObserver{
     getLocationUpdates();
}

public interface NearnessObersvable{
     addNearnessNotification(Nearness Observer nearnessObserver);
     removeNearnessNotification(NearnessObserver nearnessObserver);
     notifyNearnessChange(Nearness Observer);
     notifyNearnessChangeToAll();
}

public interface NearnessOberserver{
     getNearNessUpdates();
}

public class Friend implements LocationObserver,NearnessObservable{
     private List<NearnessObserver> persons;

     addNearnessNotification(Nearness Observer nearnessObserver){

     }
     removeNearnessNotification(NearnessObserver nearnessObserver){

     }
     notifyNearnessChange(Nearness Observer){

     }
     notifyNearnessChangeToAll(){

     }

    getLocationUpdates(){

     }
}

public class Person implements NearnessOberserver, LocationObservable{
     private List<LocationObserver> friends;
     getNearNessUpdates(){
     }
     addFriend(LocationObserver locationObserver){
     }
     removeFriend(LocationObserver locationObserver){
     }
     notifyLocationChangeToAll(){
     }
     notifyLocationChangeToObserver(LocationObserver locationObserver){
     }
}

- nilesh.d.agrawal October 13, 2016 | Flag Reply


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More