Interview Advice



  • I'm new to the programming field. I just graduated and have what most people call "book knowledge". I have held some part-time programming positions, but nothing serious. I just had an interview and I wanted to get your opinions.

    The interviewer asked me several technical questions and supposedly I got each one wrong. But I know I didn't. He asked me what polymorphism was and I gave him the textbook definition. He just said to me "Nope, zats not it." I think the interviewer was from Europe somewhere because he said "zat" instead of "that". He asked me some more questions about interfaces and classes, and I know I answered all of them properly. He kept saying "Nope, zats not it."

    It seemed like I was being disqualified because of my few years in the field. I know I answered all the technical questions right. It seemed like he was upset that I knew all the answers. That's the impression I got. Has this ever happened to anyone? Where you were disqualified because you actually knew the material?



  • Which 'textbook answer' did you give him?

    -cw



  • @CodeWhisperer said:

    Which 'textbook answer' did you give him?

    -cw

    I think I said something like "Where you have one name but it may refer to different methods." I phrased it a bit more technical than that, but that was the gist of it.



  • @Todd1 said:

    I think I said something like "Where you have one name but it may refer to different methods." I phrased it a bit more technical than that, but that was the gist of it.

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 



  • @newguy said:

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 

    Er, no it's not. Let me stop you right there before you make a fool of yourself. I am not some newbie ignoramus who just fell off the turnip truck. Even though my professional experience is minimal, I have read quite a lot and have engaged in many high-level discussions with university professors.

    I thought I might be able to have a serious discussion about my interview on this forum, but I see where it's heading already. I've been a reader of thedailywtf for some time and it always ends up being "I say yes, you say no. I say left, you say right. I say up, you say down." Etc. Etc.

    I'm not even going to check back to see your responses to this, but I can bet it will involve bashing me as some stupid user who doesn't know how to program. That's the way it usually goes. Disagree with the post, then bash away at the individual. If I were a hiring manager, I wouldn't hire a single one of you. Your attitudes suck. 



  • Well then. You sure told us! LOL What a dork. (Yes, I'm bashing.)



  • @Todd1 said:

    @newguy said:

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 

    Er, no it's not. Let me stop you right there before you make a fool of yourself. I am not some newbie ignoramus who just fell off the turnip truck. Even though my professional experience is minimal, I have read quite a lot and have engaged in many high-level discussions with university professors.

    I thought I might be able to have a serious discussion about my interview on this forum, but I see where it's heading already. I've been a reader of thedailywtf for some time and it always ends up being "I say yes, you say no. I say left, you say right. I say up, you say down." Etc. Etc.

    I'm not even going to check back to see your responses to this, but I can bet it will involve bashing me as some stupid user who doesn't know how to program. That's the way it usually goes. Disagree with the post, then bash away at the individual. If I were a hiring manager, I wouldn't hire a single one of you. Your attitudes suck. 

    Sorry todd1 but i'd have to agree with newguy on this one, if that's what you answered then it's a very simplistic interpretation of polymorphism, you need to mention interfaces and inheritance as well.  What you were saying was more of a RESULT of polymorphism not actually what polymorphism is.  The guy should have asked you to expand on your answer, if he did and you didn't then you are certainly wrong or partial marks at best.

    P.S., talk about going off unnecessarily, i think you're going to need to handle critiscism a bit better than that in future, but then i guess you'll never heed this advice becuase you're never going to check this thread again ;)
     



  • @Todd1 said:

    @newguy said:

    This & This 

    RAH RAH RAH UR A POOPY HEAD

    So. 



  • @Todd1 said:

    @newguy said:

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 

    Er, no it's not. Let me stop you right there before you make a fool of yourself. I am not some newbie ignoramus who just fell off the turnip truck. Even though my professional experience is minimal, I have read quite a lot and have engaged in many high-level discussions with university professors.

    I thought I might be able to have a serious discussion about my interview on this forum, but I see where it's heading already. I've been a reader of thedailywtf for some time and it always ends up being "I say yes, you say no. I say left, you say right. I say up, you say down." Etc. Etc.

    I'm not even going to check back to see your responses to this, but I can bet it will involve bashing me as some stupid user who doesn't know how to program. That's the way it usually goes. Disagree with the post, then bash away at the individual. If I were a hiring manager, I wouldn't hire a single one of you. Your attitudes suck. 

    I will find it amazing if anyone ever hires you. Trust me, you DO NOT know more than all of us.



  • @Todd1 said:

    Er, no it's not. Let me stop you right there before you make a fool of yourself.

    Well. I see you didn't heed your own advice. Too late for you now.

    Your answer was wrong. If I'd gotten that answer from you in an interview without you going on to expand on it considerably, I wouldn't have bothered to continue the interview; there wouldn't have been any other questions for you to also answer incorrectly.. And if you exhibited any of the attitude that you've shown in this thread, or even a hint of it, you wouldn't have gotten the job even if you'd answered every question 100% correctly.

    Go away.
     



  • @KenW said:

    @Todd1 said:
    Er, no it's not. Let me stop you right there before you make a fool of yourself.
    Well. I see you didn't heed your own advice. Too late for you now.

    Your answer was wrong. If I'd gotten that answer from you in an interview without you going on to expand on it considerably, I wouldn't have bothered to continue the interview; there wouldn't have been any other questions for you to also answer incorrectly.. And if you exhibited any of the attitude that you've shown in this thread, or even a hint of it, you wouldn't have gotten the job even if you'd answered every question 100% correctly.

    Go away.

    I think you're being unnecessarily harsh here. Sure, we all know what polymorphism is. Todd1 probably also knows what it is, conceptually, but just didn't express it right. While he did get the answer wrong, that doesn't mean that he doesn't know what polymorphism is. His answer wasn't even that far from correct. As someone said, he got an effect of polymorphism rather than polymorphism itself. If I were interviewing him I would have asked him to elaborate on his answer if he didn't do it on his own. If he still doesn't demonstrate the knowledge in an elaboration, then I'd end the interview.



  • @Welbog said:

    ]I think you're being unnecessarily harsh here. Sure, we all know what polymorphism is.

    I have to aggree with you. I even have a feeling that polymorphism is a bit like obscenity -"we know it when we see it, but we cannot define it". The wikipedia article about that topic has a promient not attached to it: Parts of this article may be confusing or unclear.

    I would assume that an article about such a major topic in CS would have been improved long ago if it was that easy.


  • Discourse touched me in a no-no place

    @Todd1 said:

    @newguy said:

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 

    Er, no it's not. Let me stop you right there before you make a fool of yourself. I am not some newbie ignoramus who just fell off the turnip truck. Even though my professional experience is minimal, I have read quite a lot and have engaged in many high-level discussions with university professors.

    I thought I might be able to have a serious discussion about my interview on this forum, but I see where it's heading already. I've been a reader of thedailywtf for some time and it always ends up being "I say yes, you say no. I say left, you say right. I say up, you say down." Etc. Etc.

    I'm not even going to check back to see your responses to this, but I can bet it will involve bashing me as some stupid user who doesn't know how to program. That's the way it usually goes. Disagree with the post, then bash away at the individual. If I were a hiring manager, I wouldn't hire a single one of you. Your attitudes suck. 

    Not that you're coming back to read this, but you may find http://www.catb.org/~esr/faqs/smart-questions.html#not_losing somewhat instructive. 


  • Discourse touched me in a no-no place

    @ammoQ said:

    I even have a feeling that polymorphism is a bit like obscenity -"we know it when we see it, but we cannot define it".

    There are views on that... http://yro.slashdot.org/comments.pl?sid=202186&cid=16552188 

     What about string bikini pics.

    What about bikini pics that you
    can make out anatomy through (oh wait, JC Penneys add three months ago
    had that and it ran in the newspaper too).

    What about a lady in a full corset & stockings (that cover more than the bikini).

    <nobr> <wbr></nobr>...holding a banana<nobr> <wbr></nobr>...holding a zuchinni<nobr> <wbr></nobr>...holding a vibrator<nobr> <wbr></nobr>...holding a realistic dildo<nobr> <wbr></nobr>...holding a real guy.<nobr> <wbr></nobr>...with just a hint of her aereola showing.<nobr> <wbr></nobr>...with the top half showing.<nobr> <wbr></nobr>...with nipples.<nobr> <wbr></nobr>...oh wait, it's really a male transexual (male nipples being legal)<nobr> <wbr></nobr>...but he's in a corset.<nobr> <wbr></nobr>...but that was fine for Tim Curry

    Someone else said it best here in the past.

    PLEASE
    post a web page with a continuam of pictures from fully appropriate to
    fully inappropriate with each one flagged as to how appropriate or
    inappropriate it is. That way we can all go to it and see what is an is
    not appropriate to have on the web.

     



  • @ammoQ said:

    @Welbog said:

    ]I think you're being unnecessarily harsh here. Sure, we all know what polymorphism is.

    I have to aggree with you. I even have a feeling that polymorphism is a bit like obscenity -"we know it when we see it, but we cannot define it". The wikipedia article about that topic has a promient not attached to it: Parts of this article may be confusing or unclear.

    I would assume that an article about such a major topic in CS would have been improved long ago if it was that easy.

    Oh, we can define it easily enough. The problem is that the definition is incomprehensible to anybody who is not familiar with the theory and notation of type systems and semantic analysis. Translating the definition into real-world terms is quite subtle and involved, and has to incorporate the fact that most practical languages only implement certain limited forms of polymorphism - so the "polymorphism" in C++ is not the same thing as the "polymorphism" in Haskell, although they are both different breeds of the same fundamental equations. The definition is of little practical use unless you are designing or validating a type system. It's the sort of fluffy question asked by people who don't know how to ask intelligent questions and don't know the answer anyway.

    Wikipedia is in general weak on subjects relating to type theory, probably because it's a fairly obscure area of CS, isn't part of the typical undergraduate courses, and none of the people who do understand it have any particular desire to rewrite all those articles. Like Zermelo-Fraenkel set theory, it isn't really a subject that is accessible to the layman.

    So it isn't that easy, but an answer does exist anyway.



  • @PJH said:

    @ammoQ said:

    I even have a feeling that polymorphism is a bit like obscenity -"we know it when we see it, but we cannot define it".

    There are views on that... http://yro.slashdot.org/comments.pl?sid=202186&cid=16552188 

     What about string bikini pics.

    What about bikini pics that you
    can make out anatomy through (oh wait, JC Penneys add three months ago
    had that and it ran in the newspaper too).

    What about a lady in a full corset & stockings (that cover more than the bikini).

    <nobr> <wbr></nobr>...holding a banana<nobr> <wbr></nobr>...holding a zuchinni<nobr> <wbr></nobr>...holding a vibrator<nobr> <wbr></nobr>...holding a realistic dildo<nobr> <wbr></nobr>...holding a real guy.<nobr> <wbr></nobr>...with just a hint of her aereola showing.<nobr> <wbr></nobr>...with the top half showing.<nobr> <wbr></nobr>...with nipples.<nobr> <wbr></nobr>...oh wait, it's really a male transexual (male nipples being legal)<nobr> <wbr></nobr>...but he's in a corset.<nobr> <wbr></nobr>...but that was fine for Tim Curry

    Someone else said it best here in the past.

    PLEASE
    post a web page with a continuam of pictures from fully appropriate to
    fully inappropriate with each one flagged as to how appropriate or
    inappropriate it is. That way we can all go to it and see what is an is
    not appropriate to have on the web.

     

    What about women in heels stomping on model train sets?



  • @asuffield said:

    What about women in heels stomping on model train sets?

    Not, that isn't it. Send more pics. 



  • The question is completely worthless in this context.  I doubt Todd1 was applying for a position in a university CS department, and even if he had been, then his answer STILL would have been wrong, because they'd have been completely justified in expecting a far more exact answer.  More than likely, the interviewer's understanding of polymorphism was equally limited.  Questions of this sort struck me as stupid when I was first interviewing.  They had  my resume.  It says I graduated with a CS degree.  I sure as hell know what classes and interfaces are, unless I'm a total fraud.  So those questions seemed to me to be their way of asking, "are you a total fraud?"  And in that case, I much preferred the questions like, "It says here you have seven years of $PROGRAMMING_LANGUAGE experience, which is what we use here.  Write a function to do $GENERIC_PROGRAMMING_TASK."



  • @newguy said:

    @Todd1 said:

    I think I said something like "Where you have one name but it may refer to different methods." I phrased it a bit more technical than that, but that was the gist of it.

    Er, sorry. If I were the interviewer I would have marked that one wrong too. It's a bit more complicated than that. 

    Owned!



  • The interview questions which cause me to sweat aren't the technical ones. They're the psychological ones.

    In one of CPound's posts, the Mr. Grunt one, he mentions a question where they ask "if you had to choose between purchasing a car or paying half of your mortgage, which would you choose?"

    I have never been asked this question, but I have heard of it before. I know it is a trick, but what is the correct answer?

    If you say "pay half your mortgage", then that labels you as a financially savvy person, because of course buying a car would be frivolous.

    But there's a catch. Most people need a car to drive to work, so the car purchase would be just as savvy. And some might argue that paying some money (even half) on a mortgage is useless from a financial standpoint unless you BUY the home (meaning fully purchase it).

    So I can see the trap. But which is the more correct answer?



  • @newguy said:

    The interview questions which cause me to sweat aren't the technical ones. They're the psychological ones.

    In one of CPound's posts, the Mr. Grunt one, he mentions a question where they ask "if you had to choose between purchasing a car or paying half of your mortgage, which would you choose?"

    I have never been asked this question, but I have heard of it before. I know it is a trick, but what is the correct answer?

    If you say "pay half your mortgage", then that labels you as a financially savvy person, because of course buying a car would be frivolous.

    But there's a catch. Most people need a car to drive to work, so the car purchase would be just as savvy. And some might argue that paying some money (even half) on a mortgage is useless from a financial standpoint unless you BUY the home (meaning fully purchase it).

    So I can see the trap. But which is the more correct answer?

    The answer, of course, is whatever's best for the company. 



  • @newguy said:

    The interview questions which cause me to sweat aren't the technical ones. They're the psychological ones.

    In one of CPound's posts, the Mr. Grunt one, he mentions a question where they ask "if you had to choose between purchasing a car or paying half of your mortgage, which would you choose?"

    (...)

    So I can see the trap. But which is the more correct answer?

    Must be a hell of a car or a very small mortgage. So in real world, you might choose to pay 40% of your mortgage and a buy a new car. 



  • Sure, we all know what polymorphism is.

    *cough* 

    Hi.

    When I think of polymorphism -- "multi-form" -- I associate it with overloading and generally as a thing to be avoided lest the program become unnecessarily complicated. But that's possibly very very wrong, so tonight I'll see to reading up on it.



  • Anybody think the guy might have interviewed some other people and no matter what the question was, the answer would have been "zats not it" anyway ? He might have already made his decision, but since the interview was already scheduled, he went through it anyway. Its tough getting a job right out of school, and its not about getting the right answers. Todd, if you're still following this, try to be persistent. The guys in this forum are right, having the right attitude makes all the difference. While some people on this forum may bash a bit, others might offer helpful advice. When you answered "Where you have one name but it may refer to different methods.", depending on what the guy got from it, he might have thought you were talking about method overriding.  If you would have elaborated on the relationship of virtual methods between the base and derived class, and even though you can't instantiate an abstract type, you can still use that type definition to provide a generic interface to the derived class methods. Your description is way too short and without mentioning that it involves several objects, then your answer would be, in a way, incorrect.

     I hope you use this as constructive critisizm. I know it can be frustrating, and you have it against you because you're fresh out of school. My only advice is to keep coding. Sometimes the best programmers aren't the smartest people, they just are the people who have written more code. The more time they spend in the trench, they know how to get around things a lot easier, and manipulate the system a lot faster than when they started.

     Best Wishes



  • @newguy said:

    The interview questions which cause me to sweat aren't the technical ones. They're the psychological ones.

    In one of CPound's posts, the Mr. Grunt one, he mentions a question where they ask "if you had to choose between purchasing a car or paying half of your mortgage, which would you choose?"

    I have never been asked this question, but I have heard of it before. I know it is a trick, but what is the correct answer?

    If you say "pay half your mortgage", then that labels you as a financially savvy person, because of course buying a car would be frivolous.

    But there's a catch. Most people need a car to drive to work, so the car purchase would be just as savvy. And some might argue that paying some money (even half) on a mortgage is useless from a financial standpoint unless you BUY the home (meaning fully purchase it).

    So I can see the trap. But which is the more correct answer?

    Since the quantities of money are likely quite different, clearly the only way this situation would come up (nevermind the impossibility of splitting the money) would be if some wealthy person were offering to either pay half your mortgage or buy you a car. So, the choice is obvious - whichever one involves more money. (and, a car can be an investment too.)



  • @dhromed said:

    When I think of polymorphism -- "multi-form" -- I associate it with overloading and generally as a thing to be avoided lest the program become unnecessarily complicated. But that's possibly very very wrong, so tonight I'll see to reading up on it.

    Yes, you're up the wrong tree; overloading is only one fairly uninteresting variation of polymorphism. To give you a rough pointer in the right direction:

    Let's imagine you're implementing a function to compute a square root approximation on positive integers in C. So, you have this function type:

    unsigned int isqrt(unsigned int a);

    But, that's not the only integer you might have in C. So in order to correctly cover the possibilities, you're also going to need to implement these:

    unsigned char csqrt(unsigned char a);

    unsigned short int sisqrt(unsigned short int a);

    unsigned long int lisqrt(unsigned long int a);

    unsigned long long int llisqrt(unsigned long long int a);

    By this point you are probably completely bored, because you've just implemented the same damn logic five times over, just with different types. The sane way to implement this, in a language which supports it, is by writing a single polymorphic function, with the type:

    "taking a single parameter of type X and returning a value of type X, where X is any integer type"

    And that's what polymorphism is all about: functions that match more than one type. Three common variants are parametric polymorphism (templates in C++, generics in Java), ad-hoc polymorphism (overloading in C++), and subtype polymorphism (inheritance in C++, which can be combined with ad-hoc polymorphism by overriding functions in subtypes). If you want to really understand the power of polymorphism, learn Haskell; the C++ and Java forms are really quite weak by comparison.



  • @Todd1 said:

    @CodeWhisperer said:

    Which 'textbook answer' did you give him?

    -cw

    I think I said something like "Where you have one name but it may refer to different methods." I phrased it a bit more technical than that, but that was the gist of it.

    How on Earth do any of you consider this to be even close to correct? It's not in any way, shape or form even close. And "I phrased it a bit more technical than that"??? I certainly hope so. Phrased as presented, I'd say "Thanks for coming in. We'll let you know." and go on to the next interview; hopefully that one wouldn't be as much a waste of my time.

    I suggest some of you might want to visit here: http://dotnetslackers.com/articles/csharp/PolymorphismEncapsulation.aspx



  • @KenW said:

    I suggest some of you might want to visit here: http://dotnetslackers.com/articles/csharp/PolymorphismEncapsulation.aspx

    What they describe is just one form of polymorphism, called subtype polymorphism. I suggest you read assuffield's posts, he seems to know a little bit more about that than you. (No offence intended) BTW, the original poster's answer is not totally wrong, it only describes in rough words another form of polymorphism.



  • @asuffield said:

    [stuff]

    And that's what polymorphism is all about: functions that match more than one type. Three common variants are parametric polymorphism (templates in C++, generics in Java), ad-hoc polymorphism (overloading in C++), and subtype polymorphism (inheritance in C++, which can be combined with ad-hoc polymorphism by overriding functions in subtypes). If you want to really understand the power of polymorphism, learn Haskell; the C++ and Java forms are really quite weak by comparison.

    Not quite clear on the subtleties, obviously, but I managed to compile the standard factorial thing in Haskell last week, so I guess I'm on the right track.



  • @asuffield said:

    If you want to really understand the power of polymorphism, learn Haskell; the C++ and Java forms are really quite weak by comparison.

    A good programmer writes ML in any language. I suppose learning Haskell makes learning ML easier, so it can't be a bad thing. :-)



  •  

    Personally I'm more interested in why people seem to be channelling CPound in thinking that the interviewer is so starved for something to do that they bring in people just to 'trick' them.

    -cw



  • I think that this whole thread can be summarized as this:

     

    Todd1, you need to buy a better textbook!! 



  • @alunharford said:

    @asuffield said:

    If you want to really understand the power of polymorphism, learn Haskell; the C++ and Java forms are really quite weak by comparison.

    A good programmer writes ML in any language. I suppose learning Haskell makes learning ML easier, so it can't be a bad thing. :-)

    Haskell's type system is roughly equivalent to that of Standard ML (both of which are a little bit more powerful than caml), but the syntax is a heck of a lot easier to work with. There's little practical difference between working in ML and Haskell, except that Haskell tends to be a little bit slicker and neater, Haskell's monads are amazingly hard to comprehend, and ghc is usually a better compiler than any of the ML ones (since pure, lazy languages are easier to compile than impure, strict ones).

    It is not unreasonable to think of Haskell as a modernised variation on ML, although there's a bit more to it than that. There's about 15-20 years of development in language design between them (both being designed by people who really understood the field). If ML was created today it would probably look a lot like Haskell.


Log in to reply