Bloomberg LP Interview Question
Software Engineer / DevelopersCorrectness--Code needs to be logically right and work under all test cases and should not fail for any.
Performance: Must take very less time to run,basically you use a design that is efficient in terms of time and space.
Easy of Use: Must be easy to use
Maintainability: I guess if the above three factors are taken care of,there would be little maintenance overhead that you will encounter.
Ease of Learning: The last of the factors as it would depend on the ability of the individual using the design.
Correct me if there is anything that I have missed.
Correctness
For all domain of input, correspond to correct output - test cases are generally too specific, thus there may the need to invove stress testing to account
Maintainability
Since Bloomberg projects are generally maintained by more one one individual (which rotate regularly), this is certainly important esp. when products need to change with real time demands.
Performance
Real time systems in general. Speed is almost everything.
Ease of Learning
This code base will definitely be re used, therefore, time to learn fpor new users is time badly spent.
Ease of Use
There is no point in coding something that is difficult to use or impossible to maintain, however a balance needs to be thought. This point however generally needs to be considered post initial development cycle, since low turn around times are usually of a major factor
Wow, no one ever heard of premature optimization? Performance obviously goes last. You don't have to worry about it until you have proven by measuring that there is a problem. And you only fix what's needed to be fixed.
- stachenov October 20, 2016Other qualities are tricky.
For example, correctness and maintainability. Maintainability is very important for virtually all code, except throwaway prototypes. Correctness, on the other hand, is very tricky. For some problems is essential, and therefore goes first. For some problems, some amount of incorrectness is tolerable. For yet another problems, correct solutions are either unreasonable (think NP-complete problems) or outright impossible (image recognition).
Ease of learning and use are closely related. But I'd put ease of use first because you only had to learn something once, but then you may have to use it for the rest of your life.
This is probably the best interview question I've ever heard.