Bloomberg LP Interview Question for Software Engineer / Developers


Country: United States
Interview Type: In-Person




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

I think they wanted to see how you would design this with your own classes. Using your own classes also means you can easily keep track of the highest value / lowest value in a listing as you consume the stream, getRatio() can then be O(1).

e.g.

public class StockCompany {

    private final String name;

    public StockCompany(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

public class StockListing {

    private final StockCompany company;
    private final List<StockValue> values;

    private StockValue highestStockValue;
    private StockValue lowestStockValue;

    public StockListing(StockCompany company, StockValue initialStockValue) {
        this.company = company;
        this.values = new ArrayList();
        if(initialStockValue == null) {
            throw new StockListingInitialValueNullException();
        }
        this.values.add(initialStockValue);
        highestStockValue = initialStockValue;
        lowestStockValue = initialStockValue;
    }

    public StockCompany getCompany() {
        return company;
    }

    public List<StockValue> getValues() {
        return Collections.unmodifiableList(values);
    }

    public void addValue(StockValue stockValue) {
        this.values.add(stockValue);
        if(stockValue.getValue() > highestStockValue.getValue()) {
            highestStockValue = stockValue;
        } else if(stockValue.getValue() < lowestStockValue.getValue()) {
            lowestStockValue = stockValue;
        }
    }

    public float getLowestToHighestRatio() {
        return lowestStockValue.getValue() / highestStockValue.getValue();
    }
}

public class StockValue {

    private final float value;

    public StockValue(float value) {
        this.value = value;
    }

    public float getValue() {
        return value;
    }
}

public class StockListingInitialValueNullException extends RuntimeException {

    public StockListingInitialValueNullException() {
        super("Stock listing can not have a null initial stock value");
    }

}

- Anonymous December 18, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

columnar db?

- Anonymous December 15, 2016 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Wouldn't a trie with a queue for each node be a nice structure. Wherever queue is present, it indicates a ticker from root to that node exist. And queue can hold the prices read so far in the incoming stream. Thoughts/suggestions?

- Sam December 18, 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