|
Good Will Hrunting posted:I'm in my interview and the bonus was, once again, using a trie. lol. is this Doctor w-rw-rw-'s company, perchance??
|
# ? Jun 14, 2018 22:19 |
|
|
# ? May 27, 2024 02:32 |
|
Good Will Hrunting posted:I'm in my interview and the bonus was, once again, using a trie. What does the interviewer think of you browsing SA while you answer interview questions?
|
# ? Jun 14, 2018 22:21 |
|
ForrestPUMP69 posted:lol. is this Doctor w-rw-rw-'s company, perchance?? I guess people just loving love autocomplete.
|
# ? Jun 14, 2018 22:23 |
|
ForrestPUMP69 posted:Maybe! The only application I can think of is autocomplete, so is that something you've had to implement in your job? Basic tries are good for autocompletes (well, generally retrieving a word set by prefix), string->value mapping (no risk of hash collisions shooting your perf to poo poo) and intersection that takes time proportional to the size of the intersection itself, rather than smaller of the two wordsets. Generalized tries (e.g. binary ones) are where it gets fun and they let you do interesting things. One example is making a persistent map structure with perf. characteristics of hash maps, Another is the Aho-Corasick algorithm for locating all matches of a word set in string.
|
# ? Jun 14, 2018 22:30 |
|
Pollyanna posted:I guess people just loving love autocomplete. Developers hate all IDEs, therefore they love to create a new one any chance they get, therefore obviously they have to love autocomplete since it is a "must have" feature nowadays. On another hand, I still think fondly of that one day in 1999 that I saw for the first time in my life the JBuilder IDE and that little magic it did when I typed "." after an object name. I no longer had to program with the book by my side. The "book" was right there!!!!
|
# ? Jun 14, 2018 23:06 |
|
TooMuchAbstraction posted:What does the interviewer think of you browsing SA while you answer interview questions? I had to take a dump!!!! Anyway I just had an interview that was 5 sessions and only two parts were algo methods. The rest was design and OOP. I have no idea what to expect, but I feel like it was poor.
|
# ? Jun 14, 2018 23:10 |
|
Doctor w-rw-rw- posted:I mean my college CS isn't representative, but high school level CS is seriously not a high bar to clear. "I've heard of tries" is seriously not a lot to ask. Oh yeah all the high school CS that we get in the public school system.
|
# ? Jun 14, 2018 23:13 |
|
I'd like some genuine help with how to answer these types of questions: Question 1: Design a contact manager with add, search, return all, and return by search string prefix. Question 2: You have a service that relies on a third party API with a 5% failure rate and super long compute time. Discuss workarounds to making sure your user gets a response the fastest way possible. Question 3: Design an OOP light switch and circuitry system. Question 4: Design the entire backend flow of a single page web app for ordering products from a web page with arbitrary items.
|
# ? Jun 14, 2018 23:17 |
|
Good Will Hrunting posted:I'd like some genuine help with how to answer these types of questions: for questions 1, 3, and 4 I would start with requirements gathering for what data needs to be persisted, what the scalability requirements are, and for the latter questions work through more of the user experience. once you have that, i would start from the data model and then refine from that by defining rough implementations of the functional requirements. this would be effectively table stakes, at which point you'd start diving into scaling beyond initial design, the underlying infrastructure for running the applications, a swell as blast radius reduction techniques. keep things simple until simple doesn't work, ex. stick with an rdmbs and a monolith unless you need the feature set of a key-value store or the decoupling of SOA. this will keep things much simpler for you and make it easier to work on pieces of the problem independently. when you switch over to a key-value store, you're likely to have to tweak your data model more to fit your application functionality, and with SOA you're going to have consider service responsibility, contexts, and speak to surrounding infrastructure for maintaining that kind of infrastructure. EDIT: 2 is just checking that you can pick out potential tradeoffs you could make to reduce your reliance on the availability of the third party API. your first question should probably be "when and how can responses be reused?" which will result in some form of (pre-)caching of indexed by some keys. your second question is probably "given the high failure rate, what TPS can I drive to the third party API and what TPS am I expecting to my API? How correlated are failures?" which will inform whether you can kick off multiple requests in parallel to drive down the likelihood of failure while taking advantage of the aformentioned caching. FamDav fucked around with this message at 23:41 on Jun 14, 2018 |
# ? Jun 14, 2018 23:34 |
|
Gildiss posted:Oh yeah all the high school CS that we get in the public school system. I had CS as an AP course in a public high school, his comment didn’t seem out of the ordinary to me
|
# ? Jun 14, 2018 23:42 |
|
Add a bit more to Trie chat. 21 years of development experience, only time using or being asked about a trie was a bespoke interview questions designed to know if you knew about them. (Boggle solver.) and that was just last year. 666, how would it change your world view if I said the same thing you did about a trie word per word but said quaternion instead?
|
# ? Jun 14, 2018 23:49 |
|
ForrestPUMP69 posted:Maybe! The only application I can think of is autocomplete, so is that something you've had to implement in your job? To give you an idea, I've worked for 4 different household name companies and never had to use any data structures beyond the basics (HashMap, List, etc). I only really learned about tries, red/black trees, etc. through interview prep, ironically. Most algorithms are just applications of those basic structures and techniques smartly to solve a specific thing. If an interview asks you to implement a redblack tree or a trie that's a lovely interview, if an interview asks you a problem about prefix matching and you use a trie or come up with something similar that's a better one. At least that's how I do my Google interviews
|
# ? Jun 15, 2018 00:02 |
|
FamDav posted:Words Thanks, I appreciate this, it helps. I wasn't completely off. But they all had insanely vague requirements and the engineers were super dodgy about clearing things up. At least for the last one I went into depth about caching and what the flow would be like. Hard part was just around invalidating the cache. My next question is how do I get better at those types of problems if my job that I'm at now doesn't afford me the opportunity.
|
# ? Jun 15, 2018 00:04 |
|
Doctor w-rw-rw- posted:EDIT: okay so are they actually rare and I've just encountered them in every job I've had by coincidence? The standard data structures are pretty much arrays with or without some wrapper, linked lists, stacks, queues, hash tables, binary search trees, heaps, and adjacency lists and matrices for graphs. Anything above and beyond that is more specialized and not something that everyone should be expected to have heard of. Some writeups and courses will cover some of the more common variations (e.g., circular lists, bit vectors, dequeues, B-trees), but you're taking your chances with a question that assumes familiarity with even those.
|
# ? Jun 15, 2018 00:31 |
|
Good Will Hrunting posted:My next question is how do I get better at those types of problems if my job that I'm at now doesn't afford me the opportunity. That's the kicker, isn't it? Seems like only the top 5% of software jobs actually work at this scale and deal with the associated challenges, so if you weren't hired at one of these companies fresh from college, you're at a handicap. If you spend too long in a CRUD factory working on business apps, you'll never run into such problems. I face this struggle as a "senior" engineer trying to escape a non-tech company.
|
# ? Jun 15, 2018 00:34 |
|
Trie chat made me want to see if my old algo textbook (Kleinberg & Tardos) bothered mentioning them and the structure doesn't have an entry in the index at least. I think it might've been mentioned in some programming languages course I took in the context of "hey, here's a name for an FSM with a state graph in tree form" but I sure wouldn't know that's what it was without googling. Maybe my uni was unusually crap or I was unusually inattentive, I guess? Either way I haven't ever encountered one in the wild. Find words in Boggle/make an autocomplete sound like perfectly OK questions to me if it's a position where knowing how a lexer works is relevant.
|
# ? Jun 15, 2018 00:52 |
|
Xerophyte posted:Trie chat made me want to see if my old algo textbook (Kleinberg & Tardos) bothered mentioning them and the structure doesn't have an entry in the index at least.
|
# ? Jun 15, 2018 00:53 |
|
Xerophyte posted:
I don't even know what a lexer is!
|
# ? Jun 15, 2018 00:58 |
|
Good Will Hrunting posted:I don't even know what a lexer is! Hmm, my "no hire" sense is tingling. You may want to consider a career change
|
# ? Jun 15, 2018 01:18 |
|
Good Will Hrunting posted:I don't even know what a lexer is! This isn't exactly critical knowledge for a lot of computer touching; I just thought that the trie questions were ultimately aiming at the question "does this person know how to make the computer mangle text for us?" That might just be me projecting: it's why I'd maybe ask someone to figure out how to read words out of Boggle. Star War Sex Parrot posted:What about suffix trees (compressed tries)? Xerophyte fucked around with this message at 01:34 on Jun 15, 2018 |
# ? Jun 15, 2018 01:32 |
|
Tries aren’t being brought up interviews to test if you are specifically familiar with them. They are a rough variation on BSTs and even if you’ve never heard of them in your life, the practice on trees you do for a whiteboard interview should be enough for you to do a problem with them after a five minute explanation.
|
# ? Jun 15, 2018 02:29 |
|
Good Will Hrunting posted:But they all had insanely vague requirements and the engineers were super dodgy about clearing things up. That's a flag to me. You asking to clear up a requirement is a good thing, and they were a little lovely for not doing so. Keep an eye open and try to discern more about the culture. Maybe get a tour if you can. If you see Dilbert comics, run.
|
# ? Jun 15, 2018 02:42 |
|
Hughlander posted:Add a bit more to Trie chat. 21 years of development experience, only time using or being asked about a trie was a bespoke interview questions designed to know if you knew about them. (Boggle solver.) and that was just last year. 666, how would it change your world view if I said the same thing you did about a trie word per word but said quaternion instead? To be honest, I learned about quaternions in middle school, but yeah that's absolutely not normal. I specifically read a book on games programming, and I also don't remember anything about them anymore.
|
# ? Jun 15, 2018 02:43 |
|
BurntCornMuffin posted:That's a flag to me. You asking to clear up a requirement is a good thing, and they were a little lovely for not doing so. Keep an eye open and try to discern more about the culture. Maybe get a tour if you can. If you see Dilbert comics, run. It was weird. I'd start to go in some direction, and the first set of interviewers (they were all pairs) were insanely good about it. The second set... one was great, the other said nothing. The third interview was much the same and the fourth was also fairly vague but we had some good chats. I get that they're open-ended questions but the feedback was so neutral during that I was like "uhhh am I... on the totally wrong path?" I legit welcome algo questions now. At least I know what I did wrong and can usually get an optomized solution.
|
# ? Jun 15, 2018 03:18 |
|
Can confirm, from highschool through college and gradschool taking data structures and algorithms from those classic texts (you know the ones, Leiserson et al, Russel & Norvig) and never covered tries until I did interview prep a few years ago (CtCI) and what do you know, one of my Big G interview questions (that I aced) was tries. I hate that their canonical pronunciation is phonetic collision with tree and refuse to pronounce it as anything but 'try'.
|
# ? Jun 15, 2018 03:22 |
|
I didn't learn about tries in college either, but I wish I did, instead of all the time spent learning about the multiple inheritance fiasco in C++, which has just not come in handy.
|
# ? Jun 15, 2018 05:30 |
|
Today at my interviews I expected to discuss multiple inheritance or how it's kinda done in Scala via mixins or pattern matching or the Futures API and how I've used any of them or idk something related to the languages I work with or problems I've solved with them but instead I... designed a light switch? Tech interviews are weird as hell.
|
# ? Jun 15, 2018 05:49 |
|
I signed up for a one-hour class on how to interview people that my work is offering next Thursday. We'll see if there's anything specific to interviewing developers and, if so, how terrible it is!
|
# ? Jun 15, 2018 05:56 |
|
Good Will Hrunting posted:Question 1: Design a contact manager with add, search, return all, and return by search string prefix. A trie in its natural habitat
|
# ? Jun 15, 2018 06:42 |
|
Hughlander posted:how would it change your world view if I said the same thing you did about a trie word per word but said quaternion instead? I would light up, because not nearly enough people know about them, including graphics/game programmers.
|
# ? Jun 15, 2018 08:08 |
|
Re: tries, the furthest I've ever gone in interviews with data structuring stuff and optimization thereof was multilayered filtering and search operations on arrays, and the stuff they were actually interested in was in the tradeoff between performance and code clarity and seeing that I got the gist of O(1) / O(n) / O(n^2) differences, rather than the specifics of how [].find() works.
|
# ? Jun 15, 2018 08:50 |
|
I have two back to back interviews today because I succumbed to pressure from recruiters to get them done by the end of the week. Last time I did this I totally flubbed the second one. I also lost my crib notes of questions to ask employment candidates. gently caress. Guess I’m bill-o-Reillying it.
|
# ? Jun 15, 2018 09:27 |
|
For some reason, the trie is the only data structure from my data structures and algorithm's class that I do remember apart from the more "standard" ones. And I've never ever used one.
|
# ? Jun 15, 2018 11:01 |
|
Horse Clocks posted:A trie in its natural habitat It's going to turn out that GWH's prospective employer was founded by Edward Frenkin
|
# ? Jun 15, 2018 13:43 |
|
Blotto Skorzany posted:It's going to turn out that GWH's prospective employer was founded by Edward Frenkin Another thing I missed yesterday that my interview mentioned (that I had *never* heard of) was an "inverted index"?
|
# ? Jun 15, 2018 14:33 |
|
Good Will Hrunting posted:
|
# ? Jun 15, 2018 14:35 |
|
Naar posted:Conversely, I have heard of that because I used to work on a big-rear end NoSQL search thing that had lots of indices for good performance! Yeah that's exactly what he mentioned! He said to check out ElasticSearch if I was interested in learning more about it. My question is, how do I find a job that affords me the ability to learn this breadth of information if they... ask about loving everything in interviews?
|
# ? Jun 15, 2018 14:41 |
|
Dumb question: why is it called an inverted index? Over in database land there isn't such a concept, right? And if it's a metaphorical index, an index from terms to pages is... an index. An index from page numbers to terms would also be, imo, an index.
|
# ? Jun 15, 2018 14:56 |
|
Also what's the consensus on follow-up thank you emails from an on-site? Seems bullshit to me, and I don't like the idea.
|
# ? Jun 15, 2018 15:04 |
|
|
# ? May 27, 2024 02:32 |
|
Good Will Hrunting posted:My question is, how do I find a job that affords me the ability to learn this breadth of information if they... ask about loving everything in interviews? You're supposed to pick it up on your own because you're so dedicated to programming that you study everything no matter how unrelated to your current job it is.
|
# ? Jun 15, 2018 15:05 |