Http://blog.zhaojie.me/2011/03/my-interview-questions-for-dotnet-programmers.html
I've interviewed a considerable number of them, too. NET (including C #, not repeat later) programmers, some through the phone, some interviews. Later found that, in fact, the question to go back and forth is just a few. Some of these problems have been 10 years old, at least for three years. I think for a "good". NET programmer, most of the questions should be "fluent" in simple hints. You may also feel that these too details, really want to be held up seems to be mostly not necessary, ignoring these can also write programs, make a website, earn wages, but I will not be satisfied with becoming (including recruiting) such programmers, temporarily do not bother to explain the benefits and importance of mastering these things. Everyone has their own opinion, everything depends on your own choice.
So let's start now.
- What is. NET? What is a CLI? What is the CLR? What is IL? What is JIT and how does it work? What is a GC and briefly describe how the GC works?
- What is the difference between classes (class) and struct (struct)? Do they affect performance? What are the classes (structs) in the. NET BCL and why are they not structs (classes)? How do you choose to be a class or a struct when customizing a type?
- What is a heap and what is a stack during the run of a. NET program? Under what circumstances will data be allocated on the heap (stack)? Do they have a difference in performance? Can the structure object be allocated on the heap? What happens and what needs attention?
- What is the role of generics? What advantages does it have? Does it have any effect on performance? What is it doing when it executes? What are the generic types in the. NET BCL? Give an example of the generic type you define in your programming routine.
- What is the role of an exception? What are the common exceptions in. NET BCL? How do you catch/handle exceptions in the code? What is the difference between "throw" and "throw ex" in "catch (ex)"? How would you design the structure of the exception, and under what circumstances would you throw an exception?
- What is the difference between list<t> and t[] and how do you usually choose? Dictionary<tkey, what do tvalue> do? What are the common containers in the. NET BCL? How are they implemented (which data structure)? Which scenarios are applicable to each?
- What is the difference between an abstract class and an interface? Is there anything you need to be aware of when you use it? How do you choose to define a "complete abstraction" of an abstract class, or an interface? What is an "explicit implementation" of an interface? Why do you say it's important?
- Is the string reference type or struct type? Does it have anything special compared to ordinary reference types? What do you need to be aware of when using strings? Why is it that StringBuilder is more efficient? Is it more efficient to concatenate multiple strings at any time than to add them directly?
- How to efficiently perform array replication? What is the difference between a "two-dimensional array" and an "array of arrays"? When traversing a two-dimensional array using a double loop, how do you choose the traversal order of the inner and outer layers?
- What is meta-programming,. NET what meta-programming means and scenarios? What is reflection? Can you give some common scenes of reflection? Some people say that reflection performance is poor, what do you think of this problem? Is there any way to improve the performance of reflection?
- What is a delegate? What is an anonymous method? In C # 3.0, what is a lambda expression? What is the extension method? What is LINQ? What are some of the important features that you find in C # 3.0, and what advantages do they bring? Which class libraries in the BCL are associated with these attributes? What do you usually use most?
- What technology-related books, websites, communities, projects, etc. do you see outside of work? What else do you touch? NET outside of the technology, can and. NET or. NET in a specific part of the comparison?
The above is a temporary problem, there is a need to supplement--of course, do not provide answers, one is too tired to write, and two, these things often do not have a fully standard answer. You must have found out that these problems are actually and. NET basis, and not much to do with a particular framework or class library. In the actual interview, if the web developer, I will also look at the other side of the net and Web base (more mainly protocol and concept-related, rather than html,js,css programming) understanding, in some cases there will be multi-threaded, concurrent knowledge points. Others may have problems with practices such as software development, design, implementation, and so on. More importantly, I will need you to write code on the whiteboard on the spot to solve a small problem. It is not difficult, and does not directly require the writing of a classical algorithm, in fact, even the "exchange of elements" this simple to almost meaningless problem, but this kind of topic can also screen out more than 80% of people.
I'm not worried about people knowing these issues, and I can say that future interviews are probably not going to get away with it. If you have some intentions, it might be nice to do some specific preparation. Of course, since the interview, there will be "improvise", you and I are the same. I am confident that I can find out whether it is "real material" or "cramming" under constant questioning.
What questions do you think should be added?
[To] I'm interviewing. Questions to ask when net/c# programmers