HanselmanArticleIt is very interesting. Although not every question is worth looking at as an interview question, many of them are worth looking at carefully.
An excellent interview question, especially the interview question for senior engineer, should not only ask the usage of an API, but also the content that is easily found in the help. The problem of problem-based scalability is a good problem.
The following is a very long list of questions, mainly about object-oriented design, design patterns, and concepts used in some practical projects, however, the level of a senior engineer is very good, because it involves many aspects.
In addition, you can find answers to the following conceptual questions from Wikipedia. In addition, I will mark a question that I think is worth asking.
Http://www.hanselman.com/blog/NewInterviewQuestionsForSeniorSoftwareEngineers.aspx here.
# What is something substantive that you 've done to improve as a developer in your career?
Have you done anything substantive to improve your performance?ProgramEmployee occupation level?
Good question. My answer: it is hard to say that my practice is to stick to learning and write technology blogs. Also some experience mentioned here http://sunxiunan.com /? P = 1799
# Wocould you call yourself a craftsman (craftsperson) and what does that word mean to you?
I dare not call myself a master. How awesome is that ?!
# Implement a <Basic Data Structure> using <some language> On <Paper | whiteboard | notepad>.
A certain language implements a basic data structure on paper. (Use a pseudo similar to the real formatCode?)
Good question. In my answer, find a basic data structure book, such as the data structure andAlgorithmAnalysis: C language description (original book version 2nd)
# What is solid?
Reference http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29
This solid does not mean "strong", but is short for the five object-oriented principles: single responsibility principle, open and closed principle, lasiskov replacement principle, interface separation principle, and dependency inversion principle.
Good question.These principles should indeed be backed up, which is too basic.
# Why is the single responsibility principle important?
Why is the single responsibility principle important?
Good question. My answer is that with clear responsibilities, the design is not easy to confuse, And it is controllable even with subsequent changes.
# What is inversion of control? How does that relate to dependency injection?
Reference http://en.wikipedia.org/wiki/Inversion_of_control
In actual cases, you can call a meeting to notify everyone (this is a central control type and must have a controller/Manager). You can also post a notice, as you can see, this is an event response type.
# How does a 3 tier Application differ from a 2 Tier One?
What is the difference between a layer-3 Application and a layer-2 Application?
I only know the three-tier MVC application.
# Why are interfaces important?
Why is the interface important?
Good question. The important thing about an interface is that the consumer (client) does not need to understand the details of the producer (server). The interface is equivalent to a contract. When the contract remains the same, it is not a concern of the consumer who produces the interface.
# What is the repository pattern? The factory pattern? Why are patterns important?
Concerning the design model,
1 Reference http://msdn.microsoft.com/en-us/library/ff649690.aspx
The factory model is basically a well-known model.
Why is the mode important? I don't think pattern is important. The importance of pattern is that you can "Oh! This is the original ". However, for a developer without years of programming experience, the mode can only make you more confused.
In many cases, the design pattern is to add an abstract layer to solve coupling and other problems. However, the more layers, the more complex it is, the more bureaucratic the organization leads.
# What are some examples of anti-patterns?
Anti-pattern? Use less mode. Write more clear code.
# Who are the Gang of Four? Why shocould you care?
The four-person group cannot be called, but they are the owners of the design patterns.
# How do the MVP, MVC, and mvvm patterns relate? When are they appropriate?
This is also a special feature of Microsoft. You only need to know MVC. In fact, all users are using MVC now. However, due to the level, the effect is very different.
What MVP and mvvm I Don't Know (I don't know. I only know that mvvm is a concept of WPF, but I don't need WPF either)
# Explain the concept of separation of concerns and it's pros and cons.
Reference http://en.wikipedia.org/wiki/Separation_of_concerns
I don't know much about it either.
# Name three primary attributes of object-oriented design. Describe what they mean and why they're important.
Encapsulation/Inheritance/polymorphism?
Here, http://en.wikipedia.org/wiki/Object-oriented_programming.
Learning the concepts of C ++ is the foundation.
# Describe a pattern that is not the factory pattern? How is it used and when?
It's not a factory model. I know a single-piece model. There is also the template mode/facade mode/strategy mode, which also involves turning over the book and rarely consciously applying it.
# You have just been put in charge of a legacy code project
With maintainability problems. What kind of things wocould you look
Improve to get the project on a stable footing?
Step 1: first compile the Code with the maximum warning level, and then fix all the worth-fixing warnings.
Good question.
# Show me a portfolio of all the applications you worked on, and tell me how you contributed to design them.
If you just read the document, it is hard to say that it is essentially.
Good question.
# What are some alternate ways to store data other than
Relational Database? Why wocould you do that, and what are the trade-offs?
A lot of problems, such as memory/file/cloud storage/nosql. Tradeoff depends on your application requirements. Blabla...
# Explain the concept of Convention over configuration, and
Talk about an example of Convention over configuration you have seen in
The wild.
Good question.
What I can think of is to buy a car and drive a car. Few people take the instruction book to debug the car. Generally, the car factory will give you a relatively good default configuration, that is, "convenience ".
This convenience also ensures that you drive other cars, which are basically similar and do not need to be reconfigured or learn anything.
The so-called convenient "Convention" means that the configuration that is relatively good/more common is built in, and it is used.
# Explain the differences between stateless and stateful systems, and impacts of State on parallelism.
Explain the impact of stateful and stateless systems in parallel.
Good question. This is not good. A stateful system requires a lock synchronization mechanism for access/modification during concurrent running because it remains in the status.
# Discuss the differences between mocks and stubs/fakes and where you
Might use them (Answers aren't that important here, just the discussion
That wocould ensue ).
Issues related to TDD. No.
# Discuss the concept of yagni and explain something you did recently that adhered to this practice.
Explain "yagni ".
The simplest example is that when we define an interface, we reserve one or two parameters for future use. In fact, there is no future. Fart! You don't need it at all!
It is not to say that scalability is not considered, but it must be based on prediction.
# Explain what is meant by a sandbox, why you wocould use one, and identify examples of sandboxes in the wild.
For example, using a virtual machine such as VMware virtualbox as a sandbox can isolate risks. Restart or delete it.
# Concurrency
* What's the difference between locking and lockless (optimistic and pessimistic) concurrency models?
* What kinds of problems can you hit with locking model? And a lockless model?
* What trade offs do you have for resource contention?
* How do I might a task-based model differ from a threaded model?
* What's the difference between asynchrony and concurrency?
These questions are good. It is essential to design a multi-user high-performance system for issues related to concurrency.
# Are you still writing code? Do you love it?
I like programming.
# You 've just been assigned to a project in a new technology how wocould you get started?
If it is me, first understand the risks of this technology. Verify with caution and try to narrow down the scope of use; otherwise, it will be fatal.
# How does the addition of service orientation change systems? When is it appropriate to use?
Don't understand.
# What do you do to stay abreast of the latest technologies and tools?
I followed it very tightly!
# What is the difference between "set" logic, and "procedural" logic. When wocould you use each one and why?
I don't know what to ask.
# What source control systems have you worked?
Clearcase. Difficult to use. Many recent issues are related to CC.
# What is continuous integration? Have you used it and why is it important?
Continuous integration. This concept is also linked to TDD.
# Describe a software development life cycle that you 've managed.
Traditional models are involved, not scrum models.
# How do you react to people criticizing your code/documents?
There is no problem with criticism, but it must be justified.
# Whose blogs or podcasts do you follow? Do you blog or podcast?
This is a lot of things. Read my previous articles.
# Tell me about some of your holobby projects that you 've written in your off time.
It mainly belongs to Lua and Py, and there are many appengine instances.
# What is the last programming book you read?
I recently read the Chinese version of C ++ FAQs. The translation is normal and the content is outdated. It strengthened my determination to use C ++ in the C style.
# Describe, in as much detail as you think is relevant,
Deeply as you can, what happens when I type "cnn.com" into a browser and
Press "go ".
Give a detailed description as much as possible. When you click the URL in your browser and then go the following technical details.
Good question. Very divergent. We can definitely see the Technical thickness of the subject.
# Describe the structure and contents of a design document, or a set of design documents, for a multi-tiered Web application.
# What's so great about <cool web technology of the day>?
# How can you stop your DBA from making off with a list of your users 'passwords?
# What do you do when you get stuck with a problem you can't solve?
Refer to the instructions for new computer programming
Http://sunxiunan.com /? P = 961
# If your database was under a lot of strain, what are the first few things you might consider to speed it up?
Profiling first!
# What is SQL injection?
# What's the difference between unit test and integration test?
Unit testing should be done by programmers. Integration Testing involves tester.
# Tell me about 3 times you failed.
# What is refactoring? Have you used it and it is important? Name three common refactorings.
I have been refactoring my code. Refer to here for refactoring principles
C ++ project code specification (occasionally used) http://sunxiunan.com /? P = 1787
# You have two computers, and you want to get data from one to the other. How can you do it?
There are still many ways to name pipelines, sockets, and shared folders.
# Left to your own devices, what wocould you create?
# Given time, cost, client satisfaction and best practices,
How will you prioritize them for a project you are working on? Explain
Why.
This is worth asking.
# What's the difference between a web server, Web farm and web garden? How wocould your web application need to change for each?
# What value do daily builds, automatic testing, and peer reviews add to a project? What disadvantages are there?
It is to improve the code quality, but it will prolong the construction period.
# What elements of OO design are most prone to abuse? How wocould You mitigate that?
# When do you know your code is ready for production?
Check the statistical curve of the Bug fix.