Why is project introduction important?

You can try to talk about your project experience. The first time I spoke, I was quite confused. I got stuck, lacked professional vocabulary, was illogical, used inappropriate words, didn’t introduce the key points of the project…

Project experience interview in the interview accounted for a large proportion, the interviewer through some professional technical questions to understand your technical level, the question from where? Either come from a structured interview question bank (the same question for every candidate, mostly on campus), or from project experience on your resume. Therefore, the importance of the overall and in-depth review of the project is self-evident.

When introducing a project, the interviewer will examine the applicant’s communication and thinking skills. In most cases, we are doing a function or a module of the product. But even so, have we made clear the whole system architecture or product and introduced why we are doing this system? What is the value of this system? What are the functions of this system? What are the pros and cons? If you could redesign the system, how would you design it? That’s something to think about.

Project Introduction

This technique is also applicable to projects on your resume.

  1. Start with a one-sentence description of what the project does. For example, I implemented a XX using the XX framework

  2. The main function

    Pick highlights and innovative points to speak, the functional points of a sentence.

  3. Then talk about the basic implementation: the main technical points used are XXX.

    (The interviewer is looking at the technical points you mentioned, so review the details of the technical points used in the project.)

  4. architecture

    (The interviewer will also ask why you chose the structure/approach to implement it.)

  5. My role in the project

    It mainly introduces the responsibilities and functions of the project, and is a generalist or leader or technology. This highlights your workload and contribution.

Note: You can attach the github address of your project to your resume and upload giFs demonstrating key features, so that the interviewer can intuitively assess the size and difficulty of your project.

What are the interviewers looking for?

Know yourself, know your opponent, understand the interviewer’s psychology, you can be targeted to prepare.

1. Ability and technology

  • Depth of investigation: Which technology do you know in depth?

    What open source frameworks were used throughout the project? What’s their idea? Have you read their source code? Not only do you need to be able to use open source libraries and third-party SDKS, but you also need to know the implementation principles and technical details. Otherwise, an App is stacked by a third party. If you ask this App, you say you don’t know about it. If you ask which App, you say you don’t know about it. [stand hand]

  • Visit breadth

    What considerations did you have and how much research did you do when choosing a technology? Learn in detail how different tools/framework ideas compare. What was the final reason? You settled on this technology. Remember a word: technology is not good or bad, only suitable. There are many ways to implement a function point, often choosing the most suitable one.

    At the same time, the interviewer may test whether you care about product data, whether you care about proper workflow, whether you care about the knowledge and process of front and back interaction, whether you care about test automation, continuous integration and other aspects.

2. The potential

  • How to solve problems in a project?

    Show your ideas for solving problems.

  • The ability to draw inferences

    The interviewer will bring up points similar to the technology in the project, see if you can relate the new information to the technology you’ve already learned, and then try to solve it.

  • Optimize which parts of the project

    The interviewer is testing your ability to think and do things. Open source libraries have more or less holes in them, and whether you can spot and bury holes in your application.

  • How to quickly learn the technical points needed for the project

    First of all, search for information in the following order: official documents > authoritative books > Google >StackOverflow > blogs. Secondly, learning new technology is very basic. For example, you haven’t learned RxJava, but if you know the observer pattern of design patterns, you will understand it quickly.

3. The details

  • What are the details of the SDK

    It takes time to build your own wheels, but do you know what improvements the SDK has made?

  • Custom control optimization

  • Contrast works

    Did you compare your project with competing products on the market, objectively evaluate what you learned from others’ work, and based on that, did you improve your own work?

  • algorithm

    It is mainly some pits and solutions, inspiration sources of solutions, etc. Data structure will definitely be involved in the project, such as the cache of the latest 100 click records, and if the number exceeds 100, the earliest cached records will be removed and realized by ourselves. You might think of it as a queue or a heap, but if you look at the caching algorithm the Lru algorithm, what container does it use, why is it designed that way?

4. Initiative

  • Have you done knowledge summary and knowledge precipitation? (This is usually pay attention to the benefits of blog accumulation)
  • Is knowledge sharing practiced?
  • Did you offer unsolicited comments or suggestions to the project?

5. Communication skills

There’s another test that goes on quietly during the interview — communication skills. Think about whether you can make the interviewer feel comfortable in the interview, whether you can clearly communicate your main points, and whether you can clearly communicate your personal development plans. Try audiotaping a mock interview to see if there are too many emotional expressions that suggest inconfidence.

Example 6.

With all that said, let’s do an intuitive example.

Q:

How is push implemented in the project?

A:

When I started to push, I had a general understanding of the current mainstream push scheme. Find more than one push implementation.

(Display the technology selection and scheme, a brief talk is OK)

(1) GCM service

Advantages: Services provided by Google, native, simple, no need to implement and deploy the server.

Disadvantages: The service is not stable in China and requires users to bind their Google accounts.

(2) XMPP

Advantages: Open, standard, extensible, cross-platform, and open source projects.

Disadvantages: Data redundancy (based on XML), no binary data support, while the protocol is complete and scalable, it consumes a lot of network traffic and runs much slower than MQTT; Up to 70% of the traffic is spent on the tags and codecs of XMPP itself.

(3) the MQTT

Advantages: compact, compact, scalable, save traffic, save power.

Disadvantages: immature, complex implementation, server component RSMB is not open source, high cost of deployment hardware.

(4) ADVANTAGES of HTTP round-robin: simple implementation, strong controllability, low cost of deployment hardware. Disadvantages: Poor real-time.

(Show technical details)

Therefore, I chose XMPP + MINA + AndroidPN for the subsequent selection.

(Reflect the optimization and improvement of the project, reflect my own thinking and ability, and transform the open source project)

But the AndroidPN open source project has some drawbacks:

  1. If messages are pushed off the server, they are no longer managed.

    What I do is: the client sends a feedback to the server after receiving the push. If the server does not receive the feedback within a certain period of time, it resends the push.

  2. How does the AndroidPN server know which user to send the message to after receiving it?

    So I added a tag dimension to group users

  3. Once the server is restarted, the client does not seem to reconnect automatically, requiring the user to interrupt the background Service and restart the application.

    The perfect solution is to add a heartbeat mechanism and disconnection to reconnect

  4. AndroidPN server does not save messages. This means that it will send a message as soon as it gets one, even if the client is not online at all.

    The solution is to let the server maintain monitoring of the client state

Ask:

Why not use the current aurora push?

A:

The initial version of aurora push is not complete, so it is difficult to access. Meanwhile, I am very interested in the principle of push, so I want to practice it myself.

Problem of the sample

Finally, a summary of questions the interviewer may ask about the project.

  • Are you working on projects independently or as a team, and what is your role in the team? Is it the person in charge or the participant?

  • How did you deal with the problems during project execution?

  • Ask professional technical questions to get an idea of your level.

  • If it was a project with no clear outcome, what did you learn and what lessons did you learn?

    It depends on your project experience, as well as your logical thinking and overall understanding of the project, including the selection of technology and the design of the architecture.

  • Specific application scenarios of project technical points, such as multi-threaded control, performance optimization, database design, encryption obfuscation, etc.

  • Pick a project you’re most familiar with and talk about it.

  • Explain how you developed and reinvented projects from zero to one.

    Topic establishment -> Product requirements development -> Outline design -> Detailed design -> Test cases -> Coding -> Testing -> Optimization -> production of promotional video posters.

Open question

Of course, some interviewers tend to ask open-ended questions. It’s all about how you solve problems and how your way of thinking spreads.

For example, the interviewer asks me, why do you think you make better products than others? Why do you want to optimize the performance of your product, and what are the major bottlenecks? How do you optimize? How do you think about optimizing the point? For what purpose do you use third-party services, how do you rate them, and how do they benefit you? It makes you think about how best to serve developers. What else do you think developers need? Are you interested in developing tool-based products?

These questions show that the interviewer is not just looking for your technical skills, but also your knowledge of the product. Interviewers are looking for someone who is not just technically brilliant, but something else that appeals to them.

The last

The most important point: don’t pretend to know what you don’t know. Many times we will encounter a situation, that is, the interviewer’s question, I will not at this time most of the time don’t immediately said that I won’t, also don’t deceive answer, want to know the traction, change the subject in the direction of similar you are good at technical point, or when you take chances to answer the question, the interviewer will always along the dig down, dig to dig out so far, This is awkward.

Limited by personal level, if there is any mistake, please understand. Address of this essay