A graduate software developer has to be proficient at applying the right algorithm and unit testing as well.
Here is a good online resource available that may help you in this regard:
Programming Interviews Exposed
You can make up your own MCQs, depending upon what area of programming or development you'd like to concentrate more. Here is one more link that may help you as well:
Programmer Competency Matrix
It depnds upon what background, qualification and the type of candidate you are seeking for. Remember, that there are 2 approaches people usually follow as a software developer.
Approach 1 : Mastering problem solving
People who follow this approach focuses on problem solving and then determines how to translate their worked out solution into the required programming language. Their concentration is more on system analysis and design than technical aspects of coding and programming language. They can derive abstractions from the given problem and implement the solution successfully in the given programming language with little efforts.They can fully apprehend the phases of the SDLC very well and do realize the support and maintenance aspects of the solution as well. Such people are always here to stay in the software development industry and climb up in their career in 5-8 years time.
Approach 2: Mastering the programming language
People following this approach are geeks who concentrate more on the coding and technical aspects of the language then understanding the problem domain and working out it's solution. They are more or less like problem translators or interpreters. They work 9 to 5 just to translate a given solution task to the syntax of the programming language. They have to work for 10 years or probably more, depending upon their job role and learning capacity. Either such people get tired very soon or they struggle to become a problem solver quite late in their career.
Wish you best of luck!