You said that you are interviewing for intern positions in the question so this is from that standpoint, for full time developers the bar is going to be a bit higher.
When you are interviewing interns you have to remember that they may not have completed their studies and that they may have also entered into college without any previous background in programming and computer science. As such, you need to scale expectations to what you can reasonably expect someone to know and to the degree of prestige of the position (i.e. Google can get away with expectations that a company people haven't heard of can).
Looking through the questions that you presented I would likely view them as follows in an interview:
1) Write a function that returns true if triangle sides (all integers) a, b and c can represent a right triangle.
Basic application of geometry with simple coding, most students should be able to do this without much difficulty. At most a reminder of the Pythagorean Theorem might be needed if they are showing a bit of stress because of being in an interview. This could almost be seen as a "ego boost" problem in that it can help settle some people if they are very nervous going into the interview.
Again, another application of some basic control statements. Students that haven't been exposed to the modulus operator, or haven't used it much, might need to be reminded of it, but shouldn't encounter any real problems solving the problem.
3) Calculate the Nth element of Fibonacci using recursion (if they didn't
know what Fibonacci was, I would even write them the definition F(n) =
F(n-1) + F(n-2); F(1) = 1; F(0) = 1).
This tends to be a fairly common problem so most (if not all) students will see it at some point prior to graduation. The catch is that it usually shows up when recursion is presented to the students as it lends itself well or a recursive or loop based solution which can then be compared so students from different schools might see it at different times depending upon the sequence of courses. In practice, if someone couldn't come up with the recursive I'd ask for an alternative using loops and if they couldn't come up with that I would be more concerned at their potential ability.
4) Implement structure List for integer and write function to reverse it.
This question might actually be a bit too open-ended as it is written so it could also be a good question to see how the candidate seeks additional information (e.g. should delete functions be included, conversion to arrays, etc), but given a well defined problem statement ("Implement a basic list structure for integers that allows for numbers to be added to the end or at an arbitrary index, deleted, and include a function to return a reversed copy of the list") students should be able to solve the problem as long as lists are a common structure presented either in an early data structures course, or in an early basic computer science course.
In terms of dealing with the candidates, if they are struggling, make sure they are relaxed and allow them a bit of leniency as they might just be having performance anxiety as this might be their first real interview. Tips on solving the problems might be required, most so in the case of the third and fourth problems as opposed to the first two.
Also, structure the overall interview process so that there are "graceful exit" points built in. For example you might have the following agenda:
- Meet and greet, interview procedures.
- Short interview with staff programmer(s), basic questions about background.
- Presentation of programming quiz.
- Return from break, dismissal of some candidates that aren't a good fit.
- Extended interview with staff programmer(s).
- Interview with human resources (if required).
- Wrap up.
This interview flow tends to work well if you want to be able to dismiss candidates early as they know from the beginning that they might be dismissed after the break. The short interview before the quiz also means that they aren't just showing up to take the test which gets them some interview practice and may also allow them to decide that they aren't a good fit. If there are other programmers observing the quiz or assisting the candidate during it then it also gives them a chance to pass/fail the candidate while they are taking a short break.
At all time when you are interviewing for an internship and the candidates are students you must remember that they are still students and may not have much practice with interviews (leading to possible performance anxiety) and may also have not reached the point in their studies to even be able to answer the questions which means it might be a good idea to send them on their way with a copy of the "ideal solution(s)" to the problems they are given as well.