Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Need help devising interview questions for a junior

Need help devising interview questions for a junior

Scheduled Pinned Locked Moved The Lounge
csharpjsonhelpquestioncareer
67 Posts 36 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Electron Shepherd

    Iain Clarke, Warrior Programmer wrote:

    OK, I'll bite! That *is* the point, isn't

    No. The point is to prove it doesn't work (ie find a defect) For any piece of software, one of these three must be true: 1) The software contains no defects. 2) The software contains at least one defect, and I know what it is. 3) The software contains at least one defect, and I do not know what it is. The role of the testing process is to determine which one is true. If 1) is true, you are finished. Release the product. If 2) is true, you fix the defect, and reevaluate. If 3) is true, you continue testing until either 1) or 2) is true. So, the point of testing is to move from 3) to either 1) or 2), and that involves finding defects. Of course, at some point, you have to take the view that "absence of proof is proof of absence", in that you can't find any more defects, so you assume there are none (ie you assume 1) is true, when it may not be). When and how you make that decision is what puts the 'engineering' into 'software engineering', and one of the things that makes the question a jumping off point for a broader discussion.

    Iain Clarke, Warrior Programmer wrote:

    but what about utf8?

    Indeed. One of the points of the question is to see if the candidate things in terms of char* only, or can think about other aspects of a (deliberately) vague spec. For example, I didn't even say if the buffer was null-terminated or not.

    Server and Network Monitoring

    B Offline
    B Offline
    Billy Howell
    wrote on last edited by
    #32

    You're mostly playing a word game with this. How do you make sure something works? Make sure it does what it says it will do. A bug will keep the software from doing what it is said to do. I will say that you have been out of the engineering business far too long if you actually think that your 1) is possible. Bug-free code does not exist except in small examples where no user interaction is needed and only very basic logic is used. Even then, you could find a mistake or vulnerability somewhere.

    E 1 Reply Last reply
    0
    • E Electron Shepherd

      Think of a small program, that you could write in say, four hours. Give them VS2008 / 10 / whatever you use, four hours and a spec. See how they get on. Other ideas: We've previously interviewed for a C++ / Windows position, and asked questions like: C / C++ specific, testing basic knowledge of bit operators and pointers. 1. Write code do determine how many bits are "on" in a byte. 2. Write code to reverse a string in place in a buffer. 3. Write the standard atoi function from scratch Windows Specific 1. When do you put elipsis on a menu or button? 2. Why would you use threads in an application? (we look for three different scenarios) General software engineering What's the point of testing software? (you'd be amazed how many people say "to make sure it works")

      Server and Network Monitoring

      B Offline
      B Offline
      Billy Howell
      wrote on last edited by
      #33

      Although I take issue with the last question as you can see below, I do like the way you think for the other questions. You seem to be more interested in the person's reasoning ability than their extensive knowledge of library 'X' that could be looked up in any real life situation. I run into too many "ability tests" from headhunting companies that focus too much on whether or not you've used a specific facet of the language instead of whether you can use tools to solve a problem.

      E 1 Reply Last reply
      0
      • B Billy Howell

        Although I take issue with the last question as you can see below, I do like the way you think for the other questions. You seem to be more interested in the person's reasoning ability than their extensive knowledge of library 'X' that could be looked up in any real life situation. I run into too many "ability tests" from headhunting companies that focus too much on whether or not you've used a specific facet of the language instead of whether you can use tools to solve a problem.

        E Offline
        E Offline
        Electron Shepherd
        wrote on last edited by
        #34

        Someone who knows everything about a language, but took 10 years to learn it, is, I think, much less valuable than someone who knows nothing about a language, but can learn it in one year. To summarise in a cute phrase, I'm trying to assess capability, not abiity.

        Server and Network Monitoring

        1 Reply Last reply
        0
        • B Billy Howell

          You're mostly playing a word game with this. How do you make sure something works? Make sure it does what it says it will do. A bug will keep the software from doing what it is said to do. I will say that you have been out of the engineering business far too long if you actually think that your 1) is possible. Bug-free code does not exist except in small examples where no user interaction is needed and only very basic logic is used. Even then, you could find a mistake or vulnerability somewhere.

          E Offline
          E Offline
          Electron Shepherd
          wrote on last edited by
          #35

          Billy Howell wrote:

          You're mostly playing a word game with this.

          NO, I'm looking for an approach and an attitude.

          Billy Howell wrote:

          Make sure it does what it says it will do.

          I write a program, for which the spec is "accept three numbers, add them up, and print the total". I enter the numbers 2 and 2, and it prints 4. I enter the numbers 1, 2 and 3, and it prints 6. Clearly the program does what is says it will do, so it's tested. In fact, it multiplies them, not adds them, but still prints the correct answers. So my tests don't find my bug, but instead seem to show the program works. That is a contrived example, and yes, almost any other combination of numbers would show the bug. But I've seen too many developers who think their program is wonderful, and tiptoe round the testing, only trying to prove it works, and confirm their own programming abilities. We're getting into psychology rather than pure software engineering, but one of the things I'm looking for is the ability to want to try to knock down the thing you've just built, in an effort to prove how strong it is.

          Server and Network Monitoring

          B 1 Reply Last reply
          0
          • D dazfuller

            And I was holding back, maybe I'm just evil when it comes to potential employees :wtf: I did once write some interview questions for a junior and tried them out on my own team, they all failed!

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #36

            You evil person :) I'd probably ask about something hard about algorithms and datastructures, and something "easy for me" about bithacks. That's probably evil too :) Still if someone doesn't even understand a Min-Heap, or tests for "is a power of 2" with a for loop and Math.Pow, there is something wrong with their education..

            1 Reply Last reply
            0
            • S Simon_Whale

              Need help from people with experience of interviewing, rather than being interview. I have been tasked with creating some .net question for the interview for a junior and I have no idea where to start and would love to have some sensible and as well as wacky (because I know here I'll get some!) from people that have had such experience

              As barmey as a sack of badgers Dude, if I knew what I was doing in life, I'd be rich, retired, dating a supermodel and laughing at the rest of you from the sidelines.

              J Offline
              J Offline
              James McConville
              wrote on last edited by
              #37

              You can work them out pretty quickly by not only asking the differences between interfaces and base classes but how and when it is best to apply each. I wouldn't bother asking silly questions like the number of piano tuners in london. Remeber, you're hiring a junior developer. They're likely to be a bit shy so don't terrify them within 2 minutes of the interview starting.

              1 Reply Last reply
              0
              • E Electron Shepherd

                Billy Howell wrote:

                You're mostly playing a word game with this.

                NO, I'm looking for an approach and an attitude.

                Billy Howell wrote:

                Make sure it does what it says it will do.

                I write a program, for which the spec is "accept three numbers, add them up, and print the total". I enter the numbers 2 and 2, and it prints 4. I enter the numbers 1, 2 and 3, and it prints 6. Clearly the program does what is says it will do, so it's tested. In fact, it multiplies them, not adds them, but still prints the correct answers. So my tests don't find my bug, but instead seem to show the program works. That is a contrived example, and yes, almost any other combination of numbers would show the bug. But I've seen too many developers who think their program is wonderful, and tiptoe round the testing, only trying to prove it works, and confirm their own programming abilities. We're getting into psychology rather than pure software engineering, but one of the things I'm looking for is the ability to want to try to knock down the thing you've just built, in an effort to prove how strong it is.

                Server and Network Monitoring

                B Offline
                B Offline
                Billy Howell
                wrote on last edited by
                #38

                Ok. Now, I understand what you are getting at. I wonder if there is a better way to ask the question though. The question doesn't ask anything about the exhaustive nature of the testing. It only asks the reason for doing it in the first place.

                E 1 Reply Last reply
                0
                • E Electron Shepherd

                  Iain Clarke, Warrior Programmer wrote:

                  OK, I'll bite! That *is* the point, isn't

                  No. The point is to prove it doesn't work (ie find a defect) For any piece of software, one of these three must be true: 1) The software contains no defects. 2) The software contains at least one defect, and I know what it is. 3) The software contains at least one defect, and I do not know what it is. The role of the testing process is to determine which one is true. If 1) is true, you are finished. Release the product. If 2) is true, you fix the defect, and reevaluate. If 3) is true, you continue testing until either 1) or 2) is true. So, the point of testing is to move from 3) to either 1) or 2), and that involves finding defects. Of course, at some point, you have to take the view that "absence of proof is proof of absence", in that you can't find any more defects, so you assume there are none (ie you assume 1) is true, when it may not be). When and how you make that decision is what puts the 'engineering' into 'software engineering', and one of the things that makes the question a jumping off point for a broader discussion.

                  Iain Clarke, Warrior Programmer wrote:

                  but what about utf8?

                  Indeed. One of the points of the question is to see if the candidate things in terms of char* only, or can think about other aspects of a (deliberately) vague spec. For example, I didn't even say if the buffer was null-terminated or not.

                  Server and Network Monitoring

                  A Offline
                  A Offline
                  AlexMaximovic
                  wrote on last edited by
                  #39

                  A junior programmer will not know this. They are applying for a JUNIOR programmer - they have no (or little) experience in these things. It's OK to know the basics, you don't want to hire someone who doesn't have a clue, but to ask from a junior programmer to elaborate on testing? I think you're asking too much. :)

                  E 1 Reply Last reply
                  0
                  • P Pete OHanlon

                    First of all, you haven't been tasked with. You've been asked. Tasked with is vapid management bull serving to make something sound much more dynamic and go-to than it really is. Second - the silly question; ask how many piano tuners there are in London - this should help you to see how they respond to odd requests, pressure situations and what their thought processes are like. Do they start by assuming that the population of London is x, and out of that population, y% have pianos and it takes z tuners to service that many pianos? Do they tell you that they'd Google it? (Ironically, Chrome's spellchecker doesn't recognise Google; it offers Goggle, Googly, Goodly and the rather fun Go ogle as choices). Third - test them on the basics (here I'm assuming the position is for a .NET developer with some experience). Do they know what an interface is? Do they know what an abstract class is? When would you use one over the other? Do they know how to get data out of the database using something other than a DataSet/DataTable?

                    I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be

                    Forgive your enemies - it messes with their heads

                    My blog | My articles | MoXAML PowerToys | Onyx

                    L Offline
                    L Offline
                    Lost User
                    wrote on last edited by
                    #40

                    "He tasks me. He tasks me, and I shall have him...." Khan about a certain James T. Kirk

                    A while ago he asked me what he should have printed on my business cards. I said 'Wizard'. I read books which nobody else understand. Then I do something which nobody understands. After that the computer does something which nobody understands. When asked, I say things about the results which nobody understand. But everybody expects miracles from me on a regular basis. Looks to me like the classical definition of a wizard.

                    1 Reply Last reply
                    0
                    • A AlexMaximovic

                      A junior programmer will not know this. They are applying for a JUNIOR programmer - they have no (or little) experience in these things. It's OK to know the basics, you don't want to hire someone who doesn't have a clue, but to ask from a junior programmer to elaborate on testing? I think you're asking too much. :)

                      E Offline
                      E Offline
                      Electron Shepherd
                      wrote on last edited by
                      #41

                      A junior programmer with no experience of testing? That's not a junior programmer, that's a complete beginner!

                      Server and Network Monitoring

                      A 1 Reply Last reply
                      0
                      • E Electron Shepherd

                        Iain Clarke, Warrior Programmer wrote:

                        OK, I'll bite! That *is* the point, isn't

                        No. The point is to prove it doesn't work (ie find a defect) For any piece of software, one of these three must be true: 1) The software contains no defects. 2) The software contains at least one defect, and I know what it is. 3) The software contains at least one defect, and I do not know what it is. The role of the testing process is to determine which one is true. If 1) is true, you are finished. Release the product. If 2) is true, you fix the defect, and reevaluate. If 3) is true, you continue testing until either 1) or 2) is true. So, the point of testing is to move from 3) to either 1) or 2), and that involves finding defects. Of course, at some point, you have to take the view that "absence of proof is proof of absence", in that you can't find any more defects, so you assume there are none (ie you assume 1) is true, when it may not be). When and how you make that decision is what puts the 'engineering' into 'software engineering', and one of the things that makes the question a jumping off point for a broader discussion.

                        Iain Clarke, Warrior Programmer wrote:

                        but what about utf8?

                        Indeed. One of the points of the question is to see if the candidate things in terms of char* only, or can think about other aspects of a (deliberately) vague spec. For example, I didn't even say if the buffer was null-terminated or not.

                        Server and Network Monitoring

                        R Offline
                        R Offline
                        R Erasmus
                        wrote on last edited by
                        #42

                        "Program testing can be used to show the presence of bugs, but never to show their absence."

                        1 Reply Last reply
                        0
                        • E Electron Shepherd

                          A junior programmer with no experience of testing? That's not a junior programmer, that's a complete beginner!

                          Server and Network Monitoring

                          A Offline
                          A Offline
                          AlexMaximovic
                          wrote on last edited by
                          #43

                          Well, when I applied for my first job, a junior programmer meant that work experience is not required.

                          1 Reply Last reply
                          0
                          • B Billy Howell

                            Ok. Now, I understand what you are getting at. I wonder if there is a better way to ask the question though. The question doesn't ask anything about the exhaustive nature of the testing. It only asks the reason for doing it in the first place.

                            E Offline
                            E Offline
                            Electron Shepherd
                            wrote on last edited by
                            #44

                            These are starting points for broader discussions. They aren't questions that someone can get right or wrong. For example, once they've written an answer to: 1. Write code do determine how many bits are "on" in a byte I'd probably introduce some more constrainsts. Some candidates use shift operatators and shift the byte left or right one place eight times, and test the most/least significant bit as appropriate. In that case, I'd ask how they would improve the speed. You could for, example, create a 256 entry lookup table, and use the byte as an index into that. Very quick result. You can then use that as a starting point for a discussion on whether the lookup table should be static, or built at runtime, and see what criteria they would apply to that decision. If they started with the lookup table approach, you can still have the dynamic vs static discussion, and then ask what they would do in a memory-constrained situation, where building a table was impossible. Essentially, I'm trying to engage them, to see a) how they interact with other people b) what their problem-solving approach is I'm most definitely not trying to get them to sit an exam, which gets marked.

                            Server and Network Monitoring

                            B 1 Reply Last reply
                            0
                            • S Simon_Whale

                              Need help from people with experience of interviewing, rather than being interview. I have been tasked with creating some .net question for the interview for a junior and I have no idea where to start and would love to have some sensible and as well as wacky (because I know here I'll get some!) from people that have had such experience

                              As barmey as a sack of badgers Dude, if I knew what I was doing in life, I'd be rich, retired, dating a supermodel and laughing at the rest of you from the sidelines.

                              E Offline
                              E Offline
                              ely_bob
                              wrote on last edited by
                              #45

                              I do the some of the interviewing for my company, here are some of the questions I like (points are made up for emphasis): ********************************************1**************************** -for the white board or paper test Devise a Recursively searchable tree node structure, and show me an implementation. -wait for the inevitable questions(a good thing) What am i to search for? (and other class specs) A: a string named Name. (+1 pt) What does the recursion return? A: the node of interest. (+5 pts, not -10 pts) Forward recursive or reverse recursive-(+10 pts if they know the difference) ... let them work it out... If they are interviewing without threading background I like to see that they use an iterator, if threading NO ITERATOR ..... (5pts) if they can reason out that they need a temp node for the return value of the recursion before they get that far... (7pts) If it works (10 pts) If they show me that it can be done in less then say 5 minutes. (10 pts) if they use encapsulation (as per the specs that they ask... (10 pts) Yadda-yadda *********************************2************************************* Usually try to find one question which is very trivial for one or two of the random things which they claim they know.. ex: php:: Show me how to print the third member of the array bob. Javascript:: what is the difference between '==' and '===' ? ***********************************3*********************************** Ask at least one question with well defined specs up front but many "suitable" ways to answer it... Reverse the string "the fuzzy red fox". - check to see if they understand the conventions of whichever language you are using for strings, characters, and arrays. you also get to see if they are elegant in their choice of variable names, loop structure, and overall basic programming capabilities.. ********************************** 4 ***************** {Are you an active learner... etc.} do you have any personal projects, if so what.. {are you a member of a community} Do you frequent any forums, if so which one is your favorite and why? (plus 10000 pts if they say codeproject :cool: ) .. if they have a break in their employment history... What have you been doing to stay current with technologies..? ************************** summary ******************************* we like to stress the interviewee out to the point where they might be shaking a little (pressure stress) to see how clear headed they react and work under pressure. Check to see that th

                              1 Reply Last reply
                              0
                              • E Electron Shepherd

                                Iain Clarke, Warrior Programmer wrote:

                                OK, I'll bite! That *is* the point, isn't

                                No. The point is to prove it doesn't work (ie find a defect) For any piece of software, one of these three must be true: 1) The software contains no defects. 2) The software contains at least one defect, and I know what it is. 3) The software contains at least one defect, and I do not know what it is. The role of the testing process is to determine which one is true. If 1) is true, you are finished. Release the product. If 2) is true, you fix the defect, and reevaluate. If 3) is true, you continue testing until either 1) or 2) is true. So, the point of testing is to move from 3) to either 1) or 2), and that involves finding defects. Of course, at some point, you have to take the view that "absence of proof is proof of absence", in that you can't find any more defects, so you assume there are none (ie you assume 1) is true, when it may not be). When and how you make that decision is what puts the 'engineering' into 'software engineering', and one of the things that makes the question a jumping off point for a broader discussion.

                                Iain Clarke, Warrior Programmer wrote:

                                but what about utf8?

                                Indeed. One of the points of the question is to see if the candidate things in terms of char* only, or can think about other aspects of a (deliberately) vague spec. For example, I didn't even say if the buffer was null-terminated or not.

                                Server and Network Monitoring

                                E Offline
                                E Offline
                                Euhemerus
                                wrote on last edited by
                                #46

                                Electron Shepherd wrote:

                                The point is to prove it doesn't work (ie find a defect)

                                I'd back that up completely. Glenford Myers in his book 'The Art of Software Testing (2nd edn.)' argues that testing to demonstrate that errors are not present is impossible, and that proving that a program does what it is supposed to do does not prove that the program is error free. Therefore, Myers defines black box testing as “The destructive process of trying to find the errors (whose presence is assumed) in a program.” Myers, G. (2004) The Art of Software Testing (2nd edn.) Hoboken: John Wiley & Sons

                                Nobody can get the truth out of me because even I don't know what it is. I keep myself in a constant state of utter confusion. - Col. Flagg

                                N 1 Reply Last reply
                                0
                                • D dazfuller

                                  And I was holding back, maybe I'm just evil when it comes to potential employees :wtf: I did once write some interview questions for a junior and tried them out on my own team, they all failed!

                                  E Offline
                                  E Offline
                                  Euhemerus
                                  wrote on last edited by
                                  #47

                                  RavensCry wrote:

                                  I did once write some interview questions for a junior and tried them out on my own team, they all failed!

                                  Doesn't that tell you something :laugh:

                                  Nobody can get the truth out of me because even I don't know what it is. I keep myself in a constant state of utter confusion. - Col. Flagg

                                  1 Reply Last reply
                                  0
                                  • E Electron Shepherd

                                    These are starting points for broader discussions. They aren't questions that someone can get right or wrong. For example, once they've written an answer to: 1. Write code do determine how many bits are "on" in a byte I'd probably introduce some more constrainsts. Some candidates use shift operatators and shift the byte left or right one place eight times, and test the most/least significant bit as appropriate. In that case, I'd ask how they would improve the speed. You could for, example, create a 256 entry lookup table, and use the byte as an index into that. Very quick result. You can then use that as a starting point for a discussion on whether the lookup table should be static, or built at runtime, and see what criteria they would apply to that decision. If they started with the lookup table approach, you can still have the dynamic vs static discussion, and then ask what they would do in a memory-constrained situation, where building a table was impossible. Essentially, I'm trying to engage them, to see a) how they interact with other people b) what their problem-solving approach is I'm most definitely not trying to get them to sit an exam, which gets marked.

                                    Server and Network Monitoring

                                    B Offline
                                    B Offline
                                    Billy Howell
                                    wrote on last edited by
                                    #48

                                    That is what you should be doing. I guess I am so used to people running an interview like an exam when they ask these sorts of questions that I am not expecting a logical approach from anyone anymore.

                                    1 Reply Last reply
                                    0
                                    • S Simon_Whale

                                      Need help from people with experience of interviewing, rather than being interview. I have been tasked with creating some .net question for the interview for a junior and I have no idea where to start and would love to have some sensible and as well as wacky (because I know here I'll get some!) from people that have had such experience

                                      As barmey as a sack of badgers Dude, if I knew what I was doing in life, I'd be rich, retired, dating a supermodel and laughing at the rest of you from the sidelines.

                                      V Offline
                                      V Offline
                                      Vixanna
                                      wrote on last edited by
                                      #49

                                      Besides asking about how he/she individually contributed to projects ask them questions regarding the technologies and roles listed on their resumes. For example a prospective hire labeled himself as a database admin and programmer. When probing further into the database admin aspect we come to find he had no practical work experience as database admin other than a college class. Yet he considered himself an admin. This has happened time & time again.

                                      1 Reply Last reply
                                      0
                                      • E Euhemerus

                                        Electron Shepherd wrote:

                                        The point is to prove it doesn't work (ie find a defect)

                                        I'd back that up completely. Glenford Myers in his book 'The Art of Software Testing (2nd edn.)' argues that testing to demonstrate that errors are not present is impossible, and that proving that a program does what it is supposed to do does not prove that the program is error free. Therefore, Myers defines black box testing as “The destructive process of trying to find the errors (whose presence is assumed) in a program.” Myers, G. (2004) The Art of Software Testing (2nd edn.) Hoboken: John Wiley & Sons

                                        Nobody can get the truth out of me because even I don't know what it is. I keep myself in a constant state of utter confusion. - Col. Flagg

                                        N Offline
                                        N Offline
                                        Naruki 0
                                        wrote on last edited by
                                        #50

                                        And this is a philosophical point that is obviously beyond the ken of most people, else nobody would be writing about it as though it were a big deal. Just look at any religious person who mocks agnostics for not proving God doesn't exist. We all use shorthand concepts for better communication. Ask most programmers who understand that their tests are trying to break the software and they will tell you the purpose of the test is to make sure the program works. Just because they aren't pedantically perfect doesn't mean they are wrongheaded, or clueless, or whatever it is you think that question is supposed to tell you. It is a clue that they might not get it, but it could just be that they never thought about their use of language in that particular instance and how it communicates something different from what they actually do. You would need to follow up on that question if they gave the "wrong" answer, else you are throwing babies out with bathwater.

                                        Narf.

                                        1 Reply Last reply
                                        0
                                        • D Dalek Dave

                                          Just ask "Spoons or Chopsticks?". Watch their faces, it befuddles them. Then ask a technical question, see if their brains can swiftly recover, it is a good technique for whittling out the permanently bewildered.

                                          ------------------------------------ I will never again mention that I was the poster of the One Millionth Lounge Post, nor that it was complete drivel. Dalek Dave CCC League Table Link CCC Link[^]

                                          P Offline
                                          P Offline
                                          Peter Trevor
                                          wrote on last edited by
                                          #51

                                          First, I'd go with spoons: anything you can eat with chopsticks you can eat with a spoon but not the other way round. Second, whatever happened to the spork? Third, ask them about IDisposable ... when and why would you use it. And ask them if you ever need to explicitly call the Dispose method of a winform (and if so, when).

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups