With demand for skilled professionals rising, Mark Kendall likes to give candidates the benefit of the doubt. The senior software engineer for Dallas-based EXCO Resources evaluates .NET developers for staffing firms. “Some interviewers want to take you down, but I prefer a different style,” he says. “I ask questions to assess a developer’s proficiency level, listen to their responses and give everyone a chance to rise to the occasion.”
Here are some of the questions Kendall asks to separate .NET rookies from experienced pros.
When is it beneficial to use an IoC Container?
- What Most People Say: “I’m not sure what an IoC Container is. I think it has something to do with testing or design patterns.”
- What You Should Say: “Although I use IoC Containers in a variety of situations, I most often use them for dependency injection. If I have a third party dependency, I’ll inject it. Doing so lets me swap implementations or isolate that dependency behind a facade. Dependency injection allows you to modify a behavior without modifying services and use different implementations in different environments and situations. In addition to facilitating changes by decoupling your program, IoC allows independent testing of components.”
- Why You Should Say It: From a manager’s perspective, dependencies are problematic, Kendall says. “I want to initiate changes to an application without modifying vast amounts of code or waiting for developers to finish another part of the program,” he explains. “The real pros view IoC containers as valuable tools for creating efficiencies.”
When and how do you use an interface?
- What Most People Say: “I’m not sure. I know Microsoft creates interfaces, so they must be good.”
- What You Should Say: “Interfaces reduce compatibility problems because they let you develop enhanced implementations without jeopardizing existing code. I also use interfaces to facilitate the mocking of dependencies in unit testing.”
- Why You Should Say It: Architects like interfaces because they provide control, Kendall says. They let you change products or programs with only minor coding modifications. Architects ensure optimization of the app while coders and developers are responsible for implementation decisions.
What’s a static class and when should you use one?
- What Most People Say: “You use a static class to cache information throughout an application.”
- What You Should Say: “A static class is a way to organize methods not associated with particular objects. With a static class, you don’t have to create an object in order to call its methods, so it’s inherently faster. The math class in the system namespace is a good example of a well-thought-out static class.”
- Why You Should Say It: Creating static classes requires a higher proficiency level with .NET. Experts employ static classes throughout an application because they use a single line of code.
What’s the difference between a base class and an interface?
- What Most People Say: “I’m not sure.”
- What You Should Say: “A base class can contain an implementation. An interface cannot.”
- Why You Should Say It: All classes are made up of base classes or interfaces. Knowing how they differ and when to use each one is a sign that you understand .NET.
When and how do you use reflection in your projects?
- What Most People Say: “Reflection allows you to ask questions of the .NET framework.”
- What You Should Say: “System.Reflection namespace, together with System.Type namespace, allows you to obtain information about loaded assemblies and the types defined within them, such as classes, interfaces and value types. Also, reflection can be used to create type instances at run time, and to invoke and access them.”
- Why You Should Say It: .NET is based on a common type system that performs a variety of functions. Reflection enables you to build types at run time and implement enhancements and improvements in real time.
Where and when do you use an Assert.AreEqual statement?
- What Most People Say: “I use it during debugging.”
- What You Should Say: “I use an Assert.AreEqual statement during unit testing. I typically use one of the common unit testing frameworks like NUnit or Microsoft’s testing framework MS Test.”
- Why You Should Say It: Debugging is only 10 percent of the answer, according to Kendall. An Assert.AreEqual statement is an integral part of unit testing. Unit testing reports the correctness of the code’s behavior, but only if you include Assert statements. “Developers who incorporate unit testing into the development process write cleaner code and have better productivity,” Kendall says. “It’s a real concern if a developer isn’t familiar with the fundamentals of unit testing.”