Amazon Interview Question
Dev LeadsCountry: India
Interview Type: In-Person
class Request{
int quantity;
double price;
public Request(int q,double p){
quantity=q;
price=p;
}
}
class StockRequestHandler{
HashMap<String,List<Request>> buy;
HashMap<String,List<Request>> sell;
public StockRequestHandler(){
buy=new HashMap<String,List<Request>>();
sell=new HashMap<String,List<Request>>();
}
public boolean sellRequest(String name,int quantity,double price){
Request request=new Request(quantity,price);
if(buy.containsKey(name)){
List<Request> buyReq=buy.get(name);
for(Request req:buyReq){
if(req.quantity==quantity && req.price==price){
buyReq.remove(req);
return true;
}
}
}
List<Request> sellReqList;
if(sell.containsKey(name)){
sellReqList=sell.get(name);
}
else{ sellReqList=new ArrayList<Request>();
sell.put(name, sellReqList);
}
sellReqList.add(request);
return false;
}
public boolean buyRequest(String name,int quantity,double price){
Request request=new Request(quantity,price);
if(sell.containsKey(name)){
List<Request> sellReq=sell.get(name);
for(Request req:sellReq){
if(req.quantity==quantity && req.price==price){
sellReq.remove(req);
return true;
}
}
}
List<Request> buyReqList;
if(buy.containsKey(name)){
buyReqList=buy.get(name);
}
else{ buyReqList=new ArrayList<Request>();
buy.put(name, buyReqList);
}
buyReqList.add(request);
return false;
}
}
public class User {
Stockmarket sm;
User(Stockmarket s1) {
sm = s1;
}
public void sendBuyRequest(String s, int p, int q) {
Request req= new Request(p,q);
sm.buyRequestHandler(s, req);
}
public void sendSellRequest(String s, int p, int q) {
Request req= new Request(p,q);
sm.sellRequestHandler(s, req);
}
}
class Request implements Comparable<Request> {
int price;
int quantity;
Request(int p, int q) {
price = p;
quantity = q;
}
@Override
public int compareTo(Request o) {
if(price == o.price && quantity == o.quantity) return 0;
return 1;
}
}
public interface Stockmarket {
public void buyRequestHandler(String stock, Request req);
public void sellRequestHandler(String stock, Request req);
}
public class StockServer implements Stockmarket {
ConcurrentHashMap<String, List<Request>> BuyRequest = new ConcurrentHashMap<>();
ConcurrentHashMap<String, List<Request>> SellRequest = new ConcurrentHashMap<>();
public void buyRequestHandler(String s,Request req) {
boolean requestCompleted = false;
if(SellRequest.containsKey(s) && SellRequest.get(s).contains(req)) {
requestCompleted = true;
SellRequest.get(s).remove(req);
}
else
if(BuyRequest.containsKey(s))
BuyRequest.get(s).add(req);
else {
List<Request> r = new ArrayList<Request>();
r.add(req);
BuyRequest.put(s, r);
}
}
public void sellRequestHandler(String s, Request req) {
boolean requestCompleted = false;
if(BuyRequest.containsKey(s) && BuyRequest.get(s).contains(req)) {
requestCompleted = true;
BuyRequest.get(s).remove(req);
}
else
if(SellRequest.containsKey(s))
SellRequest.get(s).add(req);
else {
List<Request> r = new ArrayList<Request>();
r.add(req);
SellRequest.put(s, r);
}
}
}
- Anonymous February 22, 2017