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
Comment hidden because of low score. Click to expand.
0
of 0 vote

Stock ticker store Company Stock name and their values, it also keeps tracks of trends as well.
I think what interviewer want to know is to produce one such trend, for example, increment since x in constant time,
One way to do this is to store the data in the dictionary with following format.

var stockticker = new Dictionary<string,Dictionary<DateTime ,double>>();

Now, we can store as many data as possible, and when asked from given point what is current trend, we can call the following function

public static double CurrentTrend(DateTime time)
{
	// error conditions and time is not valid input goes here.
	return ((dictionary[this.Name][this.LatestEntry] - dictionary[this.Name][time])/dictionary[this.Name][this.LastestEntry])*100; // for % result.
}

Both Name and LatestEntry are available in the Company class. This method will be implemented inside the Company class. StockTicker, will work as collection class here, which will call indivisual class based upon the requirement.
The the insert complexity is O(1), Figuring out any ratio between two times is also O(1) here.

- sonesh April 01, 2017 | 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