4 ms·
It's wasteful for companies to focus so much on implementing data structures for front-end coding jobs when they're packaged commodities nowadays. If you're go
by johnwheeler 10y ago
It's wasteful for companies to focus so much on implementing data structures for front-end coding jobs when they're packaged commodities nowadays.
If you're going to be building search engines or whatever, OK. And, time complexity questions should be asked. But chances are, the broad majority will end up doing line of business apps that require three data structures of which you will never write a better version than your stdlib: list, hash, set.
There's only one time in my 20 year career I've ever had to implement my own data structure (Directed Graph), and I basically copied it line by line out of a book and ended up replacing it with Neo4j.
- nogridbag 10y agoI was actually quite surprised the questions were relatively basic (and web-dev focused) for a position with the AWS team.
- segmondy 10y agoPerhaps he would be working on the front end, have you seen the frontend for AWS? Nothing fancy!
- dominotw 10y agobut programmer has to know what ds/algorithm to choose, of course you can look up complexities and stuff but it doesn't help in cases where performance tuning of caches ect is necessary. you have to understand what that particular algorithm/ds is actually doing to tune it properly.
- cookiecaper 10y agoIt's much more important to get a smart and adaptable programmer than one who memorized his compsci textbooks. Yes, an understanding of data structures and algorithms can be helpful, but unless messing around in that space is really going to comprise a large percentage of on-the-job duties (and as the grandparent indicated, it's not for 99% of us who can just use the canned implementations from the stdlib), it's stupid to make it a large percentage of success in the interview process. I'm glad to hear that Amazon kept the textbook-style questions light -- it's not what you usually hear about happening in interviews with big tech companies.
- vonmoltke 10y ago> I'm glad to hear that Amazon kept the textbook-style questions light -- it's not what you usually hear about happening in interviews with big tech companies. Yeah, this was a pleasant surprise about the process for me.
- johnwheeler 10y agoYour example of performance tuning caches is a perfect. It's enough to generally know about caches. Databases have query caches. Memcache and Redis are memory caches. Retrieval is O(1) because they're based on hashes. You can influence object expiration and turn on LRU. I can't implement a cache with LRU by the seat of my pants though, but I'm experienced enough to know you shouldn't do that anyways. And, I know enough to read the docs and ask intelligent questions. None of that changes the fact that when my cache blows up in production, I'm going to be in the exact same position as my all-algo-knowing colleague -- scared, grasping at straws, and applying grit to fix the problem.
- plandis 10y agoI've always considered an LRU cache question to be pretty decent. The general idea is fairly obvious (linked list + hash table) and straightforward to get something working and is a good indicator on how someone can synthesize data structures to fit the needs of the problem. Plus there is a lot of open endedness that makes it easy to drill down into someone's thought process.
- greenleafjacob 10y agoWow, I could not agree more. What you are calling grit is massively under-measured in the current bullshit whiteboarding interviews for software developers today.
- johnwheeler 10y agoThanks. Another name for it is StackOverflow :-P
- collyw 10y agoI learned that sort of stuff 15 years ago. By now it is forgotten, but I am perfectly capable of reading up on stuff and relearning it. I learn new stuff all the time in this line of work.
- dominotw 10y ago> but I am perfectly capable of reading up on stuff and relearning it How do you prove this to a potential employer though? Also, it should be possible to read up on algorithms for the interview.correct?.
- johnwheeler 10y agoYes, but in that case you're reading up on algorithms for the sake of the interview and not the job. There, it becomes a filter or rite of passage. There are better filters, and rites of passage (in employment at least) are complete bullshit. My favorite filter is to just ask the candidate to talk about technology, open ended, like they would to a friend. You get a real sense of what they care about, and you give them a chance to lead the discussion. Do they ask questions back to you (I hope so), or do they monopolize the discussion. Are they even prepared to have an open ended discussion? You'd be surprised how many 'software engineering' candidates can't do that.
- dgemm 10y ago> If you're going to be building search engines or whatever, OK. But this one does build search engines or whatever.
- johnwheeler 10y agoPlease don't be condescending.
- deanCommie 10y agoThe whole point is that Amazon DOES work on search engines, and systems of a kind of scale matched by less than a dozen other companies and requires in depth understanding of algorithms, data structures, and distributed design.
- serge2k 10y agoIt's not condescending to point out that Amazon is a company that will at times require people to know their CS fundamentals.
- johnwheeler 10y agoI meant the tone of the response. Specifically, mocking my OP by adding 'or whatever' at the end was distracting. I think the substance of dgemm's comment has merit though. It could be Amazon was trying to place the candidate so were assessing the breadth of his/her skill. My OP was more generalized. Most positions in software don't require fine-grained understanding of algorithms and data structures, but interviewers nevertheless focus on those. A general understanding is good enough along with more important factors: Are they talented at what we're hiring them for? Are they an asshole? Will they finagle their way out the door and on home when production is on fire?
- RussianCow 10y agoBut not every dev working at Amazon works on the search engine, or anything super challenging (from a CS standpoint).