It's not easy to hire a smart person for software development. If you're careless, you'll get a bunch of low-energy big baboons. I had this kind of thing last year. You certainly don't want to do that. Listen to me, that's right. There are no doors in the trees.
Asking a difficult question can help you separate the wise from the baboons. I decided to send out my own software developers interview questions, hoping to help you.
This list covers most of the knowledge domains defined in the Software engineering knowledge system. Of course, if you only want to find the most outstanding programmers, you only need to cover the structure, algorithm, data structure, testing these topics. If you want to hire an architect, you can consider only requirements, functional design, and technical design.
But no matter what you do, keep in mind that most of the answers to these questions are right and wrong.
You can start the discussion with my questions as a primer. For example, the following question is the reason for using static methods or single examples. If the interview is a lengthy one, then he's probably a smart guy. If he looks at you blankly and makes this sound, it is clear that this is a baboon. Also, there are many ways to know if a number is 2, but if the interviewer wants to use the MoD operator, um ... You know what I mean. It doesn't matter if you don't know, come on, banana. )
Demand
Can you give examples of non-functional (or quality) requirements?
If the customer needs to be high-performance, extremely convenient and highly secure, what advice would you give him?
Can you give some different techniques to describe the requirements? What scenarios they each apply to.
What does requirement tracking mean. What is the forward traceability, and what is the backward traceability.
What tools do you like to use to track requirements?
What do you think of change in demand? It is good or bad. Give your reasons.
How do you study the needs, find the needs. What resources are available to use.
How do you prioritize requirements? What are the techniques.
What are the responsibilities of users, customers, and developers in the requirements process?
How do you deal with incomplete or puzzling needs?
Functional Design
What are the metaphors in functional design? Give a few examples of success.
If some of the functions of the execution time is very long, how can let the user feel not too long waiting.
If a user had to select multiple entries from a regular list in a very small area, what controls would you use?
What methods are available to ensure the integrity of the data item.
What are the techniques for building a system prototype?
How the application establishes expectations for user behavior. Give some examples.
How to design a large and complex set of characteristics, you can cite some design ideas.
There is a list of 10 elements, each of which has 20 fields to edit, and how you design the situation. If it is 1000 elements, each element has 3 fields.
It is problematic to highlight text markers in a paragraph of text in different colors.
What are the limitations of the Web environment and the Windows environment.
Technical Design
What is low coupling and high aggregation. What does the encapsulation principle mean.
In Web applications, how do you avoid the conflicts caused by several people editing the same data?
Do you know the design pattern? What design patterns have you used? Used in any occasion.
Understand what a stateless business layer is. How long transactions fit in with them.
You've used several diagrams when building an architecture, or technical design.
What layers are in an n-tier schema. What their respective responsibilities are.
What are some ways to ensure that the data in the schema is correct and robust.
What is the difference between object-oriented design and component-oriented design.
How to model the functions of user authorization, User Configuration and Rights management in the database.
How to model the animal Kingdom (including various species and their behavior) according to the hierarchy system.
Program Design
How do you guarantee that your code can handle various error events?
Explain what test-driven development is, citing some of the principles of extreme programming.
When you look at someone else's code, you are most concerned about where.
When to use an abstract class and when to use an interface.
Besides the IDE, what are some of the essential tools you like?
How do you guarantee that your code executes fast without any problems?
When to use polymorphism and when to use delegation.
When to use a class with static members, and when to use a single example.
How you handle changes in your code in advance. Give some examples.
Describe the process of implementing a piece of code, from requirements to final delivery.
algorithm
How to know if a number is 2. How to determine whether a number is odd.
How to find the elements in the middle of the list.
How to change the format of all phone numbers in 10,000 static HTML pages.
Give an example of the recursion you've used.
Find an element in the hash list and sorted list, which is the fastest lookup.
Whether it's a book, a magazine, or a web, what's the last thing you learn about algorithmic knowledge?
How to invert a string. Can you use a temporary string?
What type of language would you like to use to write complex algorithms.
There is an array, which is an integer from 1 to 1,000,000, where a number appears two times, how do you find the duplicate number.
Do you know "traveling merchant question (traveling salesman Problem)"?
Data Structure
How to implement the structure of the London Underground in memory.
How to store color values in the database in the most efficient way.
What is the difference between queues and stacks.
What is the difference between storing data in heaps or stacks?
How to store n-dimensional vectors in a database.
You tend to write complex data structures in what kind of language.
What is the binary value of 21. 16 The value of the system.
Whether it's a book, a magazine, or a web, what's the last bit of data structure you've learned from it?
How to store the results of a football match (including teams and scores) in an XML document.
Which text formats can save Unicode characters.
Test
What is regression testing. How to know that the new introduced changes do not cause damage to existing functions.
If there is a dependency between the business layer and the data tier, how do you write unit tests?
What tools do you use to test the quality of your code?
What types of problems do you encounter most often after a product is deployed?
What is code coverage. How many code coverage is available.
What is the difference between functional testing and exploratory testing? How do you test the site?
Test suite, test case, test plan, what is the difference between the three. How do you organize your tests?
To do smoke tests on ecommerce sites, what types of tests do you do?
Customers in the acceptance test will find unsatisfactory things, how to reduce the occurrence of this situation.
What you learned last year about testing and quality assurance.
Maintain
What tools do you use to monitor the product during the maintenance phase?
If you want to upgrade a product that is being used in a product environment, what are the important things to pay attention to?
If there is an error in a large file, and the code cannot be traced gradually, how do you find the error?
How do you ensure that changes in your code do not affect other parts of the product?
How do you write technical documentation for your product?
What methods have you used to ensure that software products are easy to maintain.
How to debug the system in the environment of the product running.
What is load balancing. What kinds of load balancing methods are available.
Why is the software maintenance cost the highest share of the application lifecycle?
What is the difference between recycling engineering (re-engineering) and reverse engineering (reverse engineering).
Configuration Management
Do you know what the baseline means in configuration management? How to freeze an important moment in a project.
What kind of things do you usually incorporate into version control?
How to ensure that everyone on the team knows who has changed something.
What is the difference between tag and branch. Under what circumstances should use tag, when with branch.
How to manage changes in technical documents, such as product architecture documents.
What tools do you use to manage the status of all the digital information in your project? What kind of tools do you like best?
If a customer wants to make a change to a product that has already been released, how do you deal with it?
What is the difference between version management and release management.
The difference between the changes in the text file and the change of the binary file is managed.
Handle multiple change requests at the same time, or incremental development and maintenance at the same time, what do you think of these things?
Project Management
Scope, time, cost, which of these three items can be controlled by the customer.
Who should make an estimate of everything that is to be done in the project. Who has the right to set deadlines.
Reduce the number of deliveries, or reduce the amount of work per delivery, which approach you prefer.
Which diagram do you like to use to track the progress of the project?
Where are the differences between iterations and increments.
Try to explain the practices used in risk management. How the risk should be managed.
Do you like the task decomposition or the rolling plan.
What you need to help you determine whether the project meets the time requirements and work within the budget.
DSDM, Prince2, Scrum, what are the differences between the three.
If the customer wants too much, how can you agree with him on scope and time?