|
HondaCivet posted:. . . Huh? Admitting that there's someone out there besides you that understands the subject very well automatically means that you aren't good at anything? No it just looks bad to say that in an interview. The algorithm isn't that hard, its just whether you remember it or not so if you say that you sound like someone who doesn't know their poo poo. Imagine if it went something like A: Do you know what a Hash is? B: No, but I would consult an expert. So should they give the expert the job instead of you? Why should they hire you? Saying this probably gets you crossed off the eligible list, and if you don't understand why then you should take a moment to figure out why that is a bad response to a question. But the company shouldn't completely base it on whether or not you bothered to remember this specific algorithm. For me here is how the interview should progress. quote:Interviewer (A): If I wanted to calculate the first 10 digits of this exponent: 2^100, how would I do it? I'm going to stop because its looking like a chat log. But that's the gist of it, if it appears that the person I'm talking to actually understands some basic maths, or can explain why they are using a hash vs a binary tree vs an array for the data structure in the problem, and can explain the general algorithm use to solve this after talking with him then I think that's good enough for him to move on to the next step, which would probably be a more difficult coding problem. If the person answers this question very fast I would hope the Interviewer would follow up with an additional question with a slight modification which would distinguish the difference between someone who knows their poo poo vs. someone who just memorized the question from an interview book.
|
# ? Mar 19, 2012 02:33 |
|
|
# ? Apr 29, 2024 05:39 |
|
The real answer is that you write a program on your HP calculator that talks over the serial cable and sends back the result of running MODEXP on the input. The worst is how I was at a job fair recently, and I told an undergrad we were a rather data structures & algorithms-heavy company. The undergrad told me, "I'm more of a practical programmer." Then he told me about the video games he was going to make. (Actually, the worst were the "business-oriented" undergrads who want to waltz right into project management. I wish I had acted like more of an rear end in a top hat towards them.)
|
# ? Mar 19, 2012 02:51 |
|
Strong Sauce posted:No it just looks bad to say that in an interview. The algorithm isn't that hard, its just whether you remember it or not so if you say that you sound like someone who doesn't know their poo poo. A: Do you know what menstruation is? B: Of course! I'm the best menstruator in the region and have years of experience with the best menstruation practices! They would hire the interviewee because of answers to questions that are actually relevant to the job, such as hashes, not stupid gotchas whose answer mostly depends on whether the interviewee has first read the big book of "Bullshit Questions Interviewers May Ask", or not. Fine, let's say a programmer may be expected to crank out some kind of solution eventually. (It really isn't so hard.) In the context of a phone interview however, it's stupid bullshit. Someone may be a master in all sorts of difficult areas like parallel programming, and "fail" on that question, yet someone who has read a book on interviewer trivia without being able to code anything, may not. So I would presumed it to be gauge of question about how to approach a problem outside of immediate domain of knowledge, in which case the approaches - in terms of ending up with quality code that does what is needed - would be something like 1. "Why exactly do you need that?" 2. Ask an expert 3. Google for a solution 4. Solve it yourself It's not (just) about laziness and (just) getting things done faster and better, but as long as the programmer avoids assumptions and instead asks questions when unsure, synchronizing the understanding of the problem, then that's how a lot of bugs and rework is avoided. edit: Check out this article: http://www.unlimitednovelty.com/2011/12/can-you-solve-this-problem-for-me-on.html pigdog fucked around with this message at 12:16 on Mar 19, 2012 |
# ? Mar 19, 2012 09:50 |
|
I'm honestly amazed that CS graduates ITT have never heard of modular exponentiation (or modular arithmetic). It speaks to how lovely the curriculum is at a lot of programs.
|
# ? Mar 19, 2012 12:49 |
|
pigdog posted:Someone may be a master in all sorts of difficult areas like parallel programming, and "fail" on that question, It's not like that was the only question asked. All reasonable interviews push questions past the limits of what a candidate can do. Including phone screens (once he's answered the give-away and trivially easy questions, why not ask an easy question like modular exponentiation?). Also, nobody who is a master of Maybe some run-of-the-mill programmer would have trouble with it at first, but not a master of motherfucking Fake edit: Parallel programming is easy, it's concurrency that's hard. Fake edit II: But also, any master of parallel programming would have no problem recognizing how to split a big multiplication into subproblems.
|
# ? Mar 19, 2012 13:04 |
Shrughes, are you on Github? I'd love to browse your commits, if you don't mind.
|
|
# ? Mar 19, 2012 13:18 |
|
How do you go from "expecting to do that stuff on the phone" to "never heard of"?
pigdog fucked around with this message at 13:44 on Mar 19, 2012 |
# ? Mar 19, 2012 13:19 |
|
pigdog posted:How do you go from "expecting to do that stuff on the phone" to "never heard of"? What? You just said that the question "really isn't so hard." Oh, wait. This is all making sense. You're the same person that was talking about how impossible it is to work remotely in that other thread. You don't actually have a problem with modular exponentiation, you are just morally offended by the idea of a phone screen. Is that it?
|
# ? Mar 19, 2012 13:24 |
|
Oh hello, person who is madly offended by the statement that you probably wouldn't be working from home.
|
# ? Mar 19, 2012 13:45 |
|
pigdog, I'm wondering what you ask when you interview developers.A MIRACLE posted:Shrughes, are you on Github? What, and judge me by my code??? Well, only some code I've written years ago is online, and it's at http://samuelhughes.com . (That's not necessarily my real name, by the way, I registered it so that qntm couldn't have it.)
|
# ? Mar 19, 2012 13:52 |
|
Put it this way. You're a manager with a vacancy for a developer in an average software company, say doing web apps or Android stuff. You create a phone interview script and include that multiplication question. There are two candidates for the job, one passing that particular test, one not. You already have plenty of smart people working for you. How much more would you be willing to pay the "better" candidate compared to the other? What's the pricetag on whatever that question is supposed to prove?
|
# ? Mar 19, 2012 13:54 |
|
pigdog posted:Put it this way. You're a manager with a vacancy for a developer in an average software company, say doing web apps or Android stuff. You create a phone interview script and include that multiplication question. There are two candidates for the job, one passing that particular test, one not. You already have plenty of smart people working for you. It's not a matter of price tag - I'd reject the one who'd say "I'd ask a math expert".
|
# ? Mar 19, 2012 13:55 |
|
shrike82 posted:It's not a matter of price tag - I'd reject the one who'd say "I'd ask a math expert". What if the guy who passes asks for $300k and the other guy asks for $30k?
|
# ? Mar 19, 2012 13:58 |
|
This is all a really silly to me because within the first few minutes of the phone screen when you see the candidate write code for the first question, you're already very sure about whether they'll pass. Also your contrived scenario is absurd, you could ask the same thing about any part of the interview. What is your point?
|
# ? Mar 19, 2012 14:00 |
|
I think we're through the looking glass if you consider a guy who knows basic modular arithmetic as indicative of someone making 300K.
|
# ? Mar 19, 2012 14:01 |
|
shrike82 posted:I think we're through the looking glass if you consider a guy who knows basic modular arithmetic as indicative of someone making 300K. What if you already have a dozen people who can easily solve such tasks? What kind of value would it bring to the organization to pass that test given that, well, it's not hard and there are plenty of people who can easily offer solutions to much harder problems than these?
|
# ? Mar 19, 2012 14:05 |
|
pigdog, I'm wondering what you ask when you interview developers.
|
# ? Mar 19, 2012 14:07 |
|
We outsource the bulk of our development, so we don't precisely do a lot of actual developer hires, but the process we used for the last guy we did get was 1) Ask for CV and code samples. 2) Give a smallish coding task as "homework". 3) Review the code. The task, as specified, included non-obvious, intentional ambiguities and contradictions. The speed at which the candidate called us back and asked for clarifications, was a metric. The same kind of process was used to evaluate potential outsourcing partners, too. pigdog fucked around with this message at 14:31 on Mar 19, 2012 |
# ? Mar 19, 2012 14:28 |
|
I think mostly the argument is just that some CS programs take a genuinely academic approach to the mathematical underpinnings of the field and others are more pre-professional Programming degrees. I'm biased towards the former because of my undergraduate experience, but it's not really surprising for someone to get a CS degree without ever having thought too much about even relatively simple math, and pretty understandable that they'd be irritated if in an interview the were presented a question for which they were never prepared and which they'd be able to do the job without.
|
# ? Mar 19, 2012 15:10 |
|
I think this boils down to a difference in job-specific requirements. Shrughes, you seem to be in a position (or multiple positions in succession) that requires high familiarity with algorithms and data structures. A lot of the other folks posting in this thread aren't. I learned all of the things you're saying are important and make you a "good coder" in college, but that was almost a decade ago and I've forgotten most of it because it's totally irrelevant to the jobs I've had. I've worked with guys who were fantastic coders within our specific problem domain and had no formal computer science education. They couldn't even tell you what a linked list was. If I interviewed at a place that asked me in-depth questions on data structures and efficient ways to manipulate large numbers, I'd fail horribly. Of course, I probably wouldn't apply for a job like that to begin with, because I know that it doesn't match my skill set. New Yorp New Yorp fucked around with this message at 21:14 on Mar 19, 2012 |
# ? Mar 19, 2012 15:29 |
|
I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures. Seriously, I'm just having a hard time even imagining a coding job which doesn't require some level of knowledge of algorithms or data structures. What would software they write even look like? shrike82 fucked around with this message at 15:37 on Mar 19, 2012 |
# ? Mar 19, 2012 15:34 |
|
shrike82 posted:I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures. Having worked on several academic programming projects let me assure you that it's not pretty at all. Just yesterday my friend was telling me his co-worker, an Indian grad student, was caught passing member variables between private methods and (in AS3) was passing the count of arrays around with the arrays themselves.
|
# ? Mar 19, 2012 18:54 |
|
pigdog posted:A: Do you know what menstruation is? I am not even sure what menstruation has to do with programming so your example, maybe it is way over my head. But your reply is funny for me because I think the question is kind of dumb especially if the interviewer offers no help. And this problem alone shouldn't kill your chances because maybe you haven't looked at modular exponents in forever and only know some vague steps to achieve it. But maybe you will say something real dumb during the question and the interviewer can cross you off their list of candidates. I haven't interviewed many people but hearing #2 and #3 seem to be immediate "don't hire" answers regardless of whether you are in the 'right' or wrong. The interviewer is trying to evaluate your fitness as a software engineer, so consider how that reply reflects on you as a software engineer. And I think saying #1 is perfectly fine... after you answer the question. Are these questions sometimes a little bullshit? Yes. So you can either decide the company is complete bullshit and not continue further with the interview process or you can just try to answer it to the best of your abilities and see if the company is worth working for. If you're just antagonistic about the whole process that doesn't bode well for their perception of your sociability. No one wants a guy who is nitpicky. So politely tell them that you don't feel you are a good fit for the company, thank them for their time and hang up. Edit: I've read that article before. If you do have a GitHub or some other proof of your code, then yes, I agree maybe these questions are dumb to ask. But if your GitHub is pretty good you'll probably get to skip a lot of the interview process. Strong Sauce fucked around with this message at 19:11 on Mar 19, 2012 |
# ? Mar 19, 2012 19:06 |
|
shrughes posted:It's not like that was the only question asked. It kind of was. It was a very quick phone screen, and after the initial resume talk (and subtracting the final question and answer session), the interview was basically about this one problem, which was frustrating because I was really stressed out. The interview before this one I answered 2 questions, but this one we only had time for one. I think if it were another setting, like an in person interview, I would've done far better, because I do know the basics of a lot of this stuff. The environment was not very conducive to applying my knowledge on something I hadn't done before.
|
# ? Mar 19, 2012 21:12 |
|
shrike82 posted:I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures. It's not a matter of "can't handle", it's a matter of them not having any formal background in the area. They know that hash tables have very fast data access, but they probably don't know a drat thing about collisions or hashing algorithms, or big O. I was discussing a problem with a former boss of mine, who is one of the best developers I've met, and he suggested we use a data structure where each node contains a reference to the next node. I said "Oh, a linked list?" and he shrugged. He just didn't have the CS background to know that the data structure he thought of already had a name.
|
# ? Mar 19, 2012 21:24 |
|
Ithaqua posted:It's not a matter of "can't handle", it's a matter of them not having any formal background in the area. They know that hash tables have very fast data access, but they probably don't know a drat thing about collisions or hashing algorithms, or big O. Maybe everyone should read Niklaus Wirth's book Algorithms + Data Structures = Programs. Or at least read the title of the book.
|
# ? Mar 19, 2012 22:19 |
|
Volte posted:I'm not arguing that algorithms and data structures aren't important, and you're right: Good developers who aren't familiar with these things will learn about them, at least in general. I'm just arguing that people who don't know about these things in excruciating, CS-graduate level detail aren't automatically bad developers. I haven't had to do a drat thing with trees of any sort since college. Ergo, I remember next to nothing about trees. If I'm interviewing for a job that I'm a perfect fit for, and they ask me a question about the inner workings of trees, I'm going to say "I don't remember". If that's the sole disqualifying factor, and that job has nothing to do with trees, then that's a lovely interview question. If your team is working with a lot of custom data structure implementations and non-standard searching/sorting algorithms, sure, disqualify a developer based on not knowing relevant details about that sort of thing. Their skills and experience don't mesh with what you're looking for.
|
# ? Mar 19, 2012 22:29 |
|
There's a huge continuum between "excruciating, CS-graduate level detail" and " I remember next to nothing about trees". Absolutely no one in the thread has argued that the former is necessary. Also, not knowing something as fundamental to CS data structures as trees is a big ding in my view. I'm really curious about the nature of the development work you do, Ithaqua. shrike82 fucked around with this message at 23:53 on Mar 19, 2012 |
# ? Mar 19, 2012 23:50 |
|
shrike82 posted:There's a huge continuum between "excruciating, CS-graduate level detail" and " I remember next to nothing about trees". Absolutely no one in the thread has argued that the former is necessary. I've been all over the place, but pretty much entirely in the .NET world. I worked on a medical claims clearinghouse, a website that sells women's underwear (), and I'm currently working on a project for a client that integrates with Visual Studio and Team Foundation Server to help with the analysis of application exceptions. I think the .NET world is especially vulnerable to implementation detail atrophy, since the framework has just about every basic data structure implemented out of the box. Of course, now I feel ashamed that I've forgotten so much from college and I'm going to dig my data structures textbook out of the attic and re-read it.
|
# ? Mar 20, 2012 00:39 |
|
Ithaqua posted:I think this boils down to a difference in job-specific requirements. Shrughes, you seem to be in a position (or multiple positions in succession) that requires high familiarity with algorithms and data structures. A lot of the other folks posting in this thread aren't. I learned all of the things you're saying are important and make you a "good coder" in college, but that was almost a decade ago and I've forgotten most of it because it's totally irrelevant to the jobs I've had. You have to remember that the position I'm defending is that asking basic algorithms and data structures questions is a legitimate thing to do, not that everybody needs to be an algorithms and data structures whiz. I don't believe that you have to be. I can point to coworkers I've had that didn't have a CS degree and could hardly tell a linked list from an array, who I'd say was a very good developer. All I'm defending is that it's reasonable to measure their ability in this direction, and that modular exponentiation is not a "wank" question. (I do think it's a suboptimal question, especially if it's the first question on a phone screen... I think phone screens should instead ask for the coding some simple tree-based algorithm on an etherpad clone as the first question.)
|
# ? Mar 20, 2012 00:58 |
|
That's a dumb question because the large numbers are going to confuse people. Interviews are stressful and good questions don't try to exacerbate that. Using 2^100 and the five least significant digits, or even 2^x and the n least significant digits would do just as well at presenting the same problem without getting anyone bogged down in number specifics. It's all very obvious if you've ever implemented BigInt or whatever (IIRC we did that in our first year) but it's going to confuse a lot of people who could answer it after checking a book for ten minutes.
|
# ? Mar 20, 2012 01:12 |
|
NovemberMike posted:That's a dumb question because the large numbers are going to confuse people. Interviews are stressful and good questions don't try to exacerbate that. Using 2^100 and the five least significant digits, or even 2^x and the n least significant digits would do just as well at presenting the same problem without getting anyone bogged down in number specifics.
|
# ? Mar 20, 2012 01:37 |
|
Volte posted:The large number is actually making the question easier, because it's completely obvious that the naive solution won't work. It's a huge hint as to what you should do. It actually reduces the space of possible solutions, thus making the question easier. Especially since you don't seem to have understood it yourself, since the solution has nothing to do with BigInts. Easier and harder is relative, if I get a small number I can work through the math in my head and with a non-specific variable I am going to look at the special case. If I see a large number there's a possibility that I'm going to fixate on the number itself temporarily, when it's largely unimportant (when I saw an example that was 2^123456 or whatever my first thought went to whether the power of two was important). Having done BigInt is useful because the logic is essentially the same as with BigInt.exponent() except that you discard the extra digits. I could be missing something but if it's how I'm thinking then any first year student should be able to solve the problem but it's going to stump a lot of competent people when you ambush them with it.
|
# ? Mar 20, 2012 01:58 |
|
NovemberMike posted:That's a dumb question because the large numbers are going to confuse people. You put the word "dumb" in the wrong place.
|
# ? Mar 20, 2012 02:11 |
A lot of hostility over such an unimportant issue.
|
|
# ? Mar 20, 2012 02:21 |
|
Heh, whether algorithms and data structures are intrinsic to good software development = unimportant. It never ceases to amaze me how many lovely developers are out there in the wild.
|
# ? Mar 20, 2012 02:24 |
shrike82 posted:Heh, whether algorithms and data structures are intrinsic to good software development = unimportant. Don Mega fucked around with this message at 02:35 on Mar 20, 2012 |
|
# ? Mar 20, 2012 02:29 |
|
So speaks the guy looking for a job. I guess when your interview comes up and you can't answer a modular arithmetic question, you can tell the interviewer you're not a goon.
|
# ? Mar 20, 2012 02:34 |
shrike82 posted:So speaks the guy looking for a job. I guess when your interview comes up and you can't answer a modular arithmetic question, you can tell the interviewer you're not a goon.
|
|
# ? Mar 20, 2012 02:37 |
|
|
# ? Apr 29, 2024 05:39 |
|
I would say that I can't answer the question, but I'll consult a goon who can. E: But really, if I want to work a more "data structures and algorithms"-y place, and I feel like my school is more of a "more pre-professional Programming degree" place, would simply finishing my algorithms textbook bring me up to the level of ability expected for such a job? I guess my school's approach isn't horrible, as everything in my area seems to be about gluing together GUI components in .Net. That just seems really boring to me, though. Safe and Secure! fucked around with this message at 03:10 on Mar 20, 2012 |
# ? Mar 20, 2012 03:04 |