3 ms·
Sounds like a pretty good interview question. Better than asking you to invert binary trees or similar WTF. They're testing your judgment and asking you to as
by VLM 10y ago
Sounds like a pretty good interview question. Better than asking you to invert binary trees or similar WTF. They're testing your judgment and asking you to assess your own skills and possibly they're interested in the actual assessment results assuming you're any good at assessment.
Most people would generally break the task chronologically or kinda data flow oriented. Probably. Now should you start at the part you're familiar with or less familiar or unfamiliar with? My philosophy is its a bathtub shaped curve and if you know the topic dead cold or have absolutely no idea how to do it, start there because those will be your constraints, either you are an industry expert on a topic and can define the constraints with the best of them in which case you should definitely start there unless you suspect a trick question (LOL you thought we meant HTML browser, actually we're passing you DB2 ISAM files and COBOL PIC statements), or you have absolutely no idea what you're doing in which case you should start there to begin to discover your constraints and APIs and interfaces and data structures. Never start at a point where you have intermediate level of knowledge, the impact when you smack into the unknown is going to be painful so start in the unknown to begin with.
Basically, it boils down to try not to paint yourself into a corner, so either start painting in the most obvious safe area to start or the most mysterious area on the assumption escape will be the easiest. But never, ever start to paint a floor by just dumping the can out in the middle of the floor.
If you have a flat level of skill across the entire project (yeah not likely) then if its a "simple" project like a viewer/browser where you've seen all the parts before, start in the middle and work both directions at once if you can handle the inevitable mystifying weirdness at both ends simultaneously, and if its a "complex" project like replace the entire air traffic control system then start at one edge and work to the other to minimize simultaneous confusion. Yeah yeah I know I just said never start painting in the middle of the floor, well if you think there's a perfectly flat skill level you probably haven't analyzed the problem enough so the real answer is not to start at all, and instead to think about it a lot more.
Of course half the fun is defining the starting point. Do they give you a working example to clone as a goal, access to all RFCs, no docs and cleanroom reimplement using a protocol analyzers traces, can you use a language you like, can you use language libraries that implement some fraction of the problem, does it have to be a 1995 level of browser or 2015 or 2035 level of browser ...
To some extent its a meta interview question where they want to see if you start talking like you're a system architect or systems analyst type like above or if you're a security guy you'd probably start with "review all the latest exploits and avoid all of them simultaneously (good luck lol)" or if you're a code monkey maybe you'd start with a rant about your favorite font to use in Eclipse and how nice your mechanical keyboard is or maybe you're not even a programmer in which case the response will sound like the dude from the office space movie in the scene arguing about his radio "well I was informed this was a programming test and I got permission to list the integers from 1 to 100 and print fizz when they're a multiple of ..." and so on.