It is not easy to hire a smart person who is engaged in software development. If you are not careful, you will get a bunch of low-performance baboons. I encountered this kind of thing last year. You certainly don't want. Listen to me. That's right. No standing meeting door opens on the tree.
A difficult question can help you separate smart people from baboons. I decided to send out my interview questions for software developers, hoping to help you.
This list covers most of the knowledge domains defined in the software development knowledge system. Of course, if you only want to find outstanding programmers, you only need to talk about structures, algorithms, data structures, and tests. If you want to hire an architect, you can only consider requirements, functional design, and technical design.
However, whatever you do, remember one thing:
There are no right or wrong answers to most questions here!
You can take my questions as an example to discuss them. For example, the reason for using static methods or Singleton is as follows. If the interview goes on for a long time, he may be a smart and competent guy! If he looks at you with a blank face, it's obvious that this is just a babbling. Likewise, there are many ways to determine whether a number is a multiplication operator of 2, but if the interviewer wants to use the MOD operator, well ...... You know what I mean. (You don't know, it doesn't matter. Why don't you get a banana ?)
Requirement
Can you give examples of non-functional (or quality) requirements?
If the customer needs high performance, extremely convenient use, and high security, what advice would you give him?
Can you provide different technologies to describe the requirements? What scenarios are they applicable?
What does requirement tracking mean? What is forward tracing and what is Backward Tracing?
What tools do you like to use to track requirements?
What do you think of demand changes? Is it good or bad? Give your reasons.
How do you study requirements and discover requirements? What resources can be used?
How do you set a priority for a requirement? What technologies are there?
What are the responsibilities of users, customers, and developers in the demand process?
How do you deal with incomplete or confusing needs?
Function Design
What are the metaphors in functional design? Several successful examples are provided.
If some functions have been executed for a long time, how can users not feel too long to wait?
If you have to select multiple entries from a regular list in a small area, what controls do you use?
What methods can be used to ensure the integrity of data items?
What technologies are involved in building a system prototype?
How can applications establish user behavior expectations? Some examples are provided.
How can you design a group of massive and complex features? Can you give me some design ideas?
There is a list with 10 elements, and each element has 20 fields to edit. How do you design this situation? If there are 1000 elements, what if each element has 3 fields?
How can I highlight text in a piece of text in different colors?
What are the restrictions on the web environment and Windows environment?
Technical Design
What is low coupling and high aggregation? What is the encapsulation principle?
In Web applications, How do you avoid conflicts caused by several people editing the same data segment?
Do you know the design pattern? What design patterns have you used? In what scenarios?
Do you know what a stateless business layer is? How can long transactions adapt to it?
How many images have you used to build an architecture or technical design?
What are the layers in the n-layer architecture? What are their respective responsibilities?
What methods can be used to ensure that the data in the architecture is correct and robust?
What are the differences between object-oriented design and component-oriented design?
How to model user authorization, user configuration, and permission management in the database?
How can we build a model for the animal kingdom (including various species and their respective actions) according to the hierarchy?
Structure
How do you ensure that your code can handle various error events?
Explain what is test-driven development and cite some principles in extreme programming.
What do you most care about when looking at other people's code?
When to use abstract classes and interfaces?
What tools do you like besides ide?
How do you ensure that code execution is fast without any problems?
When is polymorphism or delegation used?
When do I use a class with static members and a singleton instance?
In the code, how do you handle demand changes in advance? Here are some examples.
Describe the process of implementing a piece of code, from requirement to final delivery.
Algorithm
How do I know if a number is a multiplication of 2? How can we determine whether a number is an odd number?
How to find the elements in the center of the linked list?
How can I change the format of all phone numbers on 10,000 static html pages?
Here is an example of recursion you have used.
Find an element in the hash table and sorted list. Which of the following queries is the fastest?
What is the last algorithm knowledge you have learned from books, magazines, and the Internet?
How to reverse the string? Do you need a temporary string?
What types of languages are you willing to use to compile complex algorithms?
There is an array with an integer ranging from 1 to 1,000,000, And a number appears twice. How do you find the repeated number?
Do you know "Traveling Salesman Problem?
Data Structure
How to Implement the London metro structure in the memory?
How to store color values in the database in the most effective way?
What is the difference between a queue and a stack?
What is the difference between storing data using stacks or stacks?
How to store N-dimensional vectors in databases?
Which type of language do you prefer to write complex data structures?
What is the binary value of 21? What about the hexadecimal value?
What is the last point of Data Structure you have learned from books, magazines, and the Internet?
How to store football match results (including team and score) in XML documents )?
Which text formats can save Unicode characters?
Test
What is regression testing? How can we know that the new changes have not damaged the existing functions?
If there is a dependency between the business layer and the data layer, how do you write a unit test?
What tools do you use to test the code quality?
What type of problems do you encounter most often after product deployment?
What is code coverage? How many code coverage rates are there?
What is the difference between functional testing and exploratory testing? How do you test your website?
What are the differences between test stacks, test cases, and test plans? How do you organize testing?
What types of tests will you perform to perform smoke tests on e-commerce websites?
In the acceptance test, the customer finds something unsatisfactory. How can this problem be reduced?
What did you learn in testing and quality assurance last year?
Maintenance
What tools do you use to monitor products during maintenance?
If you want to upgrade a product that is being used in the product environment, what are the important issues?
If an error occurs in a large file and the Code cannot be tracked gradually, how do you find the error?
How do you ensure that changes in Code do not affect other parts of the product?
How do you compile technical documents for the product?
What methods have you used to ensure that software products are easy to maintain?
How to debug the system in the product running environment?
What is Server Load balancer? What are the load balancing methods?
Why does the software maintenance cost the most during the application lifecycle?
What is the difference between re-engineering and reverse engineering?
Configuration Management
Do you know the basic meaning of Configuration Management? How can we freeze an important moment in a project?
What do you usually include in version control?
How can we ensure that everyone in the Team knows who has changed what?
What is the difference between tag and branch? When should I use the tag and branch?
How to manage changes in technical documents, such as product architecture documents?
What do you use to manage the status of all digital information in a project? Which tool do you like most?
What should you do if the customer wants to change a released product?
What is the difference between version management and release management?
What is the difference between managing changes to text files and binary files?
What do you think of this situation when processing multiple change requests or performing incremental development and maintenance at the same time?
Project Management
Which of the following three items can be controlled by customers?
Who should make an estimate of what the project has to do? Who has the right to set the deadline?
Which of the following methods do you like to reduce the number of deliveries or the workload of each delivery?
Which image do you like to use to track the project progress?
What is the difference between iterations and increments?
Try to explain the practices used in risk management. How Should risks be managed?
Do you like task breakdown or rolling plan?
What do you need to help you determine whether the project meets the time requirements and operates within the budget?
What are the differences between DSDM, Prince2, and scrum?
If the customer wants too many things, how can you reach an agreement with him in terms of scope and time?
From: http://www.infoq.com/cn/articles/programmer-interview
Jurgen appelo, translator Li Jian
100 interview questions for software developers.
January 13,200 9
100 interview questions for software developers
Hiring smart software developers is not easy. if you're not careful you might end up hiring a bunch of moronic Mandrills, like I did last year. and you don't want that. trust me. stand-up meetings are very hard to do in a tree.
The key is to ask challenging questions that enable you to distinguish the smart software developers from the moronic Mandrills. and to help you with that, I decided to publish my private list of 100 interview questions for software developers.
This list covers most of the knowledge areas defined by the software engineering body of knowledge. of course, if you're just looking for brilliant programmers, you may be want to limit the topics to construction, algorithms, data structures and testing. and if you're looking for different ts, you can just consider the questions under the headings requirements, functional design and technical design.
But whatever you do, keep this in mind:
For most of the questions in this list there are no right and wrong answers!
My questions are simply starting points for interesting discussions. for example: there is a question about reasons to use static methods. singletons. if this triggers your candidate to start a tirade againt both static methods and singletons, there's a good chance you're dealing with a smart software developer! But if the candidate can produce nothing more than a blank stare and this sound, then he might very well be a moronic Mandrill. likewise, there are using correct ways to find out whether a number is a power of 2. but if the candidate suggests using the MOD operator, well... you know what I mean. (and if you don't, no problem. fancy a banana ?)
Requirements
Can you name a number of non-functional (or quality) requirements?
What is your advice when a customer wants high performance, high usability and high security?
Can you name a number of different techniques for specifying requirements? What works best in which case?
What is requirements tracing? What is Backward Tracing vs. Forward tracing?
Which tools do you like to use for keeping track of requirements?
How do you treat changing requirements? Are they good or bad? Why?
How do you search and find requirements? What are possible sources?
How do you prioritize requirements? Do you know different techniques?
Can you name the responsibilities of the user, the customer and the developer in the requirements process?
What do you do with requirements that are incomplete or incomprehensible?
Functional Design
What are metaphors used for in functional design? Can you name some successful examples?
How can you reduce the user's perception of waiting when some functions take a lot of time?
Which controls wocould you use when a user must select multiple items from a big list, in a minimal amount of space?
Can you name different measures to guarantee correctness of data entry?
Can you name different techniques for prototyping an application?
Can you name examples of how an application can anticipate user behavior?
Can you name different ways of designing access to a large and complex list of features?
How wocould you design editing twenty fields for a list of 10 items? And editing 3 fields for a list of 1000 items?
What is the problem of using different colors when highlighting pieces of a text?
Can you name some limitations of a web environment vs. A Windows environment?
Technical Design
What do low coupling and high cohesion mean? What does the principle of encapsulation mean?
How do you manage conflicts in a web application when different people are editing the same data?
Do you know about design patterns? Which design patterns have you used, and in what situations?
Do you know what a stateless business layer is? Where do long-running transactions fit into that picture?
What kinds of diagrams have you used in designing parts of an architecture, or a technical design?
Can you name the different tiers and responsibilities in an N-tier architecture?
Can you name different measures to guarantee correctness and robustness of data in an architecture?
Can you name any differences between object-oriented design and component-based design?
How wocould you model user authorization, user profiles and permissions in a database?
How wocould you model the animal kingdom (with species and their behavior) as a class system?
Construction
How do you make sure that your code can handle different kinds of error situations?
Can you explain what test-driven development is? Can you name some principles of extreme programming?
What do you care about most when reviewing somebody else's code?
When do you use an abstract class and when do you use an interface?
Apart from the IDE, which other favorite tools do you use that you think are essential to you?
How do you make sure that your code is both safe and fast?
When do you use polymorphism and when do you use delegates?
When wocould you use a class with static members and when wocould you use a singleton class?
Can you name examples of anticipating changing requirements in your code?
Can you describe the process you use for writing a piece of code, from requirements to delivery?
Algorithms
How do you find out if a number is a power of 2? And how do you know if it is an odd number?
How do you find the middle item in a linked list?
How wocould you change the format of all the phone numbers in 10,000 static HTML web pages?
Can you name an example of a recursive solution that you created?
Which is faster: finding an item in a hashtable or in a sorted list?
What is the last thing you learned about algorithms from a book, magazine or Web site?
How wocould you write a function to reverse a string? And can you do that without a temporary string?
What type of language do you prefer for writing complex algorithms?
In an array with integers between 1 and 1,000,000 one value is in the array twice. How do you determine which one?
Do you know about the traveling salesman problem?
Data Structures
How wocould you implement the structure of the London underground in a computer's memory?
How wocould you store the value of a color in a database, as efficiently as possible?
What is the difference between a queue and a stack?
What is the difference between storing data on the heap vs. On the stack?
How wocould you store a vector in n dimensions in a datatable?
What type of language do you prefer for writing complex data structures?
What is the number 21 in binary format? And in Hex?
What is the last thing you learned about data structures from a book, magazine or Web site?
How wocould you store the results of a soccer/football competition (with teams and scores) in an XML document?
Can you name some different text file formats for storing Unicode characters?
Testing
Do you know what a regression test is? How do you verify that new changes have not broken existing features?
How can you implement unit testing when there are dependencies between a business layer and a data layer?
Which tools are essential to you for testing the quality of your code?
What types of problems have you encountered most often in your products after deployment?
Do you know what code coverage is? What types of code coverage are there?
Do you know the difference between functional testing and exploratory testing? How wocould you test a Web site?
What is the difference between a test suite, a test case and a test plan? How wocould you organize testing?
What kind of tests wocould you include for a smoke test of an ecommerce Web site?
What can you do reduce the chance that a customer finds things that he doesn't like during acceptance testing?
Can you tell me something that you have learned about testing and quality assurance in the last year?
Maintenance
What kind of tools are important to you for monitoring a product during maintenance?
What is important when updating a product that is in production and is being used?
How do you find an error in a large file with code that you cannot step through?
How can you make sure that changes in code will not affect any other parts of the product?
How do you create technical documentation for your products?
What measures have you taken to make your software products more easily maintainable?
How can you debug a system in a production environment, while it is being used?
Do you know what load balancing is? Can you name different types of Load Balancing?
Can you name reasons why maintenance of software is the biggest/most expensive part of an application's life cycle?
What is the difference between re-engineering and reverse engineering?
Configuration Management
Do you know what a baseline is in configuration management? How do you freeze an important moment in a project?
Which items do you normally place under version control?
How can you make sure that team members know who changed what in a software project?
Do you know the differences between tags and branches? When do you use which?
How wocould you manage changes to technical documentation, like the architecture of a product?
Which tools do you need to manage the state of all digital information in a project? Which tools do you like best?
How do you deal with changes that a customer wants in a released product?
Are there differences in managing versions and releases?
What is the difference between managing changes in text files vs. Managing changes in binary files?
How wocould you treat simultaneous development of multiple RFC's or increments and maintenance issues?
Project Management
How many of the three variables scope, time and cost can be fixed by the customer?
Who shocould make estimates for the effort of a project? Who is allowed to set the deadline?
Do you prefer minimization of the number of releases or minimization of the amount of work-in-progress?
Which kind of diagrams do you use to track progress in a project?
What is the difference between an iteration and an increment?
Can you explain the practice of risk management? How shoshould risks be managed?
Do you prefer a work breakdown structure or a rolling wave planning?
What do you need to be able to determine if a project is on time and within budget?
Can you name some differences between DSDM, Prince2 and scrum?
How do you agree on scope and time with the customer, when the customer wants too much?