How to introduce one's own project experience in the interview (oriented to java improved version)

    The blog post I wrote 3 years ago, how to introduce my project experience in the interview , after everyone’s support, got nearly 70,000 hits one after another, and also got reprinted on the official accounts of many websites, but I feel that this The article focuses more on methods, and does not give specific rhetoric about Java.

    Three years have passed. With the accumulation of my interviewer experience and the advancement of technology, I will rewrite this article with an interview scenario suitable for the current Java primary development in 2021. Please note that this article is not a simple technical upgrade, nor does it mechanically teach you to recite some rhetoric when introducing project experience, but to teach you how to combine project experience to better showcase your own technical highlights, so that you can maximize Improve the probability of passing the interview.

1 Use your resume to get more interview opportunities

    I didn't want to write this paragraph, but when I was helping some classmates to prepare their resumes recently, I found that although they are competent for Java development jobs in the current company, they may not be able to get an interview opportunity with their resumes, or they cannot get a salary that matches them. Moreover, the process of preparing a resume is also a process of preparing a project statement, so here are the points of attention when writing a resume.

    Note 1: Read the skill requirements in the job description and indicate that you have sufficient experience in relevant technical projects in a prominent position on your resume.

    For example, a position requires 3 years of Spring boot experience, or a position requires 2 years of big data development experience, and you happen to have it, just write it directly under the introduction of personal information on the first page of your resume.

    In case you lack something, for example, the requirement is to have 2 years of big data, and you only have one year, just think about it, have you done part-time jobs outside, and have helped teachers do projects together? Don't be polite if you have, and add the technical years of this part.

    Note 2: Carefully read the required skills in the job description, and they are also listed in a prominent position on the first page.

    For example, a position requires jave core development, multi-threaded development experience, and distributed component development experience. In fact, for people doing development, these techniques have been used in projects to some extent, but if you don't write them, even your resume cannot be screened, and you don't even have an interview opportunity. 

    Note 3: Write more of your highlights. See the example below for how to write.

    In other words, on the first page of your resume, after you have written basic information such as your name, gender, age, and mobile phone email, you can generally use the following summary to show the interviewer how well you match your position. The following is an example.

    1 With 3 years of Java development experience, 2 years of Spring Boot development experience, and 2 years of database development experience. (The number of years here needs to be greater than or equal to the requirements on the job description. If it does not meet the requirements, many companies will not give interview opportunities)

    Following is a general outline of the skills you have mastered based on the skills required in the job description to prove that you are a good match

    2 Have experience in database development such as Oracle and MySQL.

    3 Have development experience in multi-threading, collection, etc.

    4 Have experience in xx technology and xx technology development in big data.

    Here you can list as many skills you have mastered on JD, and then you can list your highlights according to the following example.

    5 Have experience in database tuning using indexes and execution plans. (Currently, I will not check it myself, this piece of information is too much)

    6 Familiar with the structure of the Java JVM virtual machine, familiar with the garbage collection process, and experience in JVM performance tuning. (Currently, I will not check it myself)

    7 Have experience in analyzing logs and troubleshooting problems in Linux. (If you can’t, just go to see some linux file opening and search related commands)

    8 Familiar with object-oriented thinking and used design patterns in projects. (Look at a singleton or factory model for yourself, and then apply it to the project requirements)

    9 Have experience in the development of distributed components. (If not, don’t write it, but for junior developers, this is definitely a bonus item)

    10 Familiar with the underlying code of Java collections and so on. (Look at HashMap, ConcurrrentHashMap for yourself, fast failure, ArrayList add, delete, modify, and check the underlying code, it's not difficult)

    11 Strong sense of responsibility at work, with certain pressure-bearing ability, willing to work overtime. (You can’t write it wrong)

    In fact, for most junior developers, you should have the above skills. Even if you don't have them right now, you can definitely learn them in just a few months, so you can write them on your resume.

    However, many of the resumes I received from Java development simply list the technologies that will be met, without any polished text. Such resumes may not be able to fully demonstrate the candidates' abilities. Correspondingly, the interview opportunities may be Greatly reduced.

    On the contrary, regardless of whether the candidate is from a training class or a major, but with a prominent display on the first page of the resume, at least the interviewer is willing to continue to look down on the project experience, so that you can get the interview. The chances, and even the chances of passing the interview, have greatly increased.

2 When introducing myself, immediately throw out the technology stack and highlights

    At the beginning of the interview, the interviewer will most likely allow the candidate to introduce himself. Needless to say, this is the difference. Just introduce yourself directly based on the general outlines listed on the resume given above. Examples are given below.

    Let me talk about the match between skills and jd.

    My name is Zhang San. I am 25 years old. I graduated from Jiaotong University in 18 years. I am a computer science department. I currently have 3 years of Java development experience (this is a requirement on jd), Oracle, MySQL development experience, and technical experience such as xx (these Experience is also a requirement on jd) .

    Let me talk about my own highlights.

    In the project, I have used database tuning experience with indexes and execution plans, and I have experience in troubleshooting OOM in JVM, in terms of big data, used frameworks such as Spark, in terms of distributed components, used Redis and Dubbo, etc. Experience in looking at logs on Linux and troubleshooting online problems.

    In fact, the conscience of heaven and earth, the above-mentioned highlights, in addition to the big data spark, other skill highlights should be the primary development, even if not, you can easily learn. But in this way, many candidates won't say it, but on the other hand, if you say it, you are better than others. Then immediately extend the recent project, because most companies will measure whether the jd technology has been used in the recent project.

    In a recent project, I used the Spring Boot framework, which specifically used JPA components and Oracle for the database. The most recent project was the xx system, which used the agile development model. In this project, in addition to coding, I also did it. Unit testing, discussion of requirements and detailed design work, and the recent project schedule is relatively tight, I feel that I can take the initiative to work overtime, and work with my colleagues to complete the project with quality and quantity.

    In the self-introduction stage, you don’t even need to start the project, because you will have the opportunity to explain in detail later, but first you must use this to further highlight that your recent skills and experience match the job description, and second, you must also use this to show that you are willing to work overtime and other characteristics. (After all, it is more credible to illustrate that you are willing to work overtime through projects than simply saying that you are willing to work overtime).

     Again, in the self-introduction stage, you only need to explain the main points that you are competent for the current job. These points do not need to be expanded, such as how to troubleshoot OOM abnormalities. And other things that have nothing to do with finding a job, such as hobbies, family members, personal characteristics, etc. don’t need to be said.

    Before the interview, everyone can practice speaking according to the above examples. Say these things unhurriedly. It is estimated that it will take 2 minutes. Even people who are shy or introverted and eloquent can speak well after practicing a few more times. But if the interviewer thinks that the communication skills are poor because you didn't say it well, it would be too wrong.

3 First introduce the background of the project and dispel the interviewer’s questions

    Since you have been involved in the most recent project during the self-introduction phase, the interviewer will definitely ask again. But no matter what, the interviewer will always ask about your recent project, so you always have the opportunity to prove that you are competent for the job by introducing project experience.

    When the interviewer asks you to introduce the most recent project, you can first briefly describe the background of the project. Because the project experience of some candidates on the resume looks like a learning project (in fact, I know a lot of project experience is really), but you can prove that this project is a commercial project experience through the following arguments.

    I recently did the xx project in the xx company (to highlight the commercial project). The client of this project is xx and it is already online (but if it is a web project interviewer, it will probably be checked). This project uses the agile development model (not to mention it, don't start, it's a question point), the project team is xx people, and I have been working for n months, and I made xx and xx modules in it. 

    By saying this, you can show that the project was not compiled by you through factors such as the company where the project is located and the client. Someone may ask, if the project is really made up, what should I say? I don't care about this, you can say it yourself.

    But before you say this, you need to do the following homework in advance.

    1 Understand the agile development model, such as what everyone should say at the stand-up, use jira to manage the progress, set several release dates a year, release once a month, etc., because you mentioned, the interviewer will most likely ask later.

    2 If you are talking about xx financial system, xx library system, etc., some senior interviewers may ask, there are ready-made projects in this area, why does your company develop it yourself? So when you prepare the project description, you can't exaggerate, such as exaggerating the maintenance project of a data collection module into an xx financial system. However, I have also met some candidates, and they said that this is a project taken by the company, and they can't control why they have to place an order for this project.

    3 Once you talk about this project, the interviewer will think that you have done it, so each of the business requirements, such as where the data is collected, which front-end the customer sends the request from, the process of processing the customer request, and the size of the data table Wait for the information, you have to know and be prepared to answer the plan in advance, I often use this to confirm whether the candidate's project is a real project or a compiled project. 

4 By talking about project management tools, show that you can not only write code

     After introducing the background of the project, you can even talk about the tools of project management to prove that you have done other things in the project, not just writing code. Specific examples are as follows.

    In this project, we used maven, git to manage code, jira to manage tasks and bugs, and jenkins tool to release. I have also used junit to write unit tests, and we also use sonar to count the test coverage of the code. Our project manager requires that the code can only be submitted when the "line coverage is higher than 80%".

    As mentioned above, maven, Git and junit are not difficult, and there is nothing to ask about jira management bugs and tasks, but you need to understand the basics of sonar management code quality and line coverage in advance. As for the jenkins release script, This does not require general development to worry about, just say it. In the above, you only mentioned tools, but you have to use these tools to praise yourself.

    When I use junit, I will not write cases perfunctorily, but will write cases based on real business data, and I will also focus on various boundary conditions (these are capable of doing even junior development), and when writing code , I will pay great attention to coding standards. For example, when defining variables, people will understand it at a glance. Write more comments in key code places. Do not write too complicated in conditions such as ifs. A method will not be too long, or you can Let me talk about other good coding standards. Moreover, once I encounter my bug, I will follow up as soon as possible and resolve it with the relevant counterparts.

    The above text, although it is said to be self-selling and boasting, but because you are integrated into the project, the interviewer will not feel inconsistent. And if you say this, the interviewer will think that in addition to writing code, you have a strong comprehensive ability in other development projects.

    However, please note that the purpose of introducing project experience is mainly to prove the matching of skills, so don’t say too much about the above-mentioned “introduction to the project background” and “explaining the tools used in the project” and “selling and boasting”. , You can control them within 1 minute through practice.

5 Use the Spring Boot project as an example to illustrate your technical fundamentals

    Then you need to introduce the technology used in the project. Even if you talk about the highlights, you have to ensure the fundamentals of the technology. Here I will use Spring Boot, the mainstream framework of the current Java project as an example, to show you how to demonstrate Java development. The basic skills.

    Our project uses the Spring Boot framework, in which JPA is used to connect to an Oracle (or MySQL, etc.) database, and the @RequestMapping annotation is used in the control layer to write business processing methods. In the business code, the @Autowired annotation is used to introduce the class in the IOC way, and the @Service and @Component annotations are also used. When we get the data from the database, we will map the data with the model class that contains @Entity and @Table annotations. In this project, we also used the @Transactional annotation to define transactions. This annotation acts on the Service layer. In this project, we also use multiple Java collection classes and exception handling classes.

    Through the above examples, you should be able to demonstrate the basic technical aspects of Spring Boot well. In fact, for most of the primary Java development, the daily work is to write some additions, deletions, modifications and investigations with Spring Boot. The so-called based on the existing The business writes a new business, so the above rhetoric is enough. But since you mentioned Spring Boot, during the questioning stage, the interviewer will most likely ask the following questions.

    1 What is the difference between @Service and @Component annotations? 

    2 Various Restful request formats and various http request return codes.

    3 The concept of transaction isolation level and transaction propagation mechanism in @Transactional transactions.

    4 Spring dependency injection concept and usage of @Autowired.

    5 The life cycle of Spring Bean.

    6 You may even ask about the Spring Boot startup process and the underlying source code.

    For Java 0 to 3 years of primary development, in fact, according to the rhetoric given in this example, combined with the online questions to say the first 4 questions, it should be enough to deal with most interviews. 

6 Use examples to illustrate your experience in memory tuning

    After you have introduced the technical fundamentals based on Spring Boot, you can further explain the many highlights. Here is an example of showing memory tuning in combination with the project.

    (Previously, I introduced the technical fundamentals of the project, such as Spring Boot) In this project, I will pay great attention to the performance of memory usage, and have experience in troubleshooting and analyzing OOM projects in the project. I will also pay great attention to it when coding. Memory performance. At the same time, I have also learned about JVM memory structure and GC algorithm.

    No matter how you organize the language, you need to highlight four points in this regard: first, emphasize that you have memory tuning awareness, second, you have experience in troubleshooting OOM, third, you will pay attention to memory performance when you write code, and fourth You also understand the knowledge of JVM structure and GC process. But I still want to emphasize that you are still in the project introduction stage, you can just explain the main points, don't expand, if you expand the memory tuning practice here, the interviewer will think that your thinking is not clear, but since you mentioned it, the interviewer You may immediately interrupt your introduction and let you explain in detail, or you will continue to ask after introducing the project. In short, you have the opportunity to show the memory tuning highlight skills in detail.

    This not only gives you what you said during the introduction phase of the project, but also gives you how to answer in detail later.

    If the interviewer asks you in detail afterwards to investigate the OOM experience details, you can answer like this.

    In the test environment, we often receive warnings that the memory usage rate is higher than 70%. (As for how to set the warnings, you can look at new relic. If you are a junior developer, you don’t even need to master relevant experience), received After the alarm, I first observed the current memory mirroring through the dump command (you have to be familiar with the dump command and the way to open the dump file and the contents of the dump file), and secondly, I observed which method was thrown out through the log, and finally found that it was due to In the order module (or other modules), a JDBC connection object is not closed (or a large Hashmap object is not cleared after use) , so the memory cannot be reclaimed. Reclaim it after finding the problem.   

    Here you combine the business (such as the order module) to explain, and then when the interviewer asks the dump details, you can talk about the structure of the dump file, that's it.

    If the interviewer asks you how to pay attention to memory performance in the code, you can say:

    When writing code, I will pay great attention to closing or releasing Connection and large collections in try...catch...finally clauses. After some large objects are used, I will set them to null in time. Improve their collection time. In for loops, I will not frequently manipulate String objects because it will generate a lot of memory fragmentation. At the same time, I will use the finalize method very carefully (look at it beforehand), because this may cause the object to be uncollectible.

    In fact, these four points are enough. If you feel capable, you can make the following points on the premise of understanding strong, weak, and soft references. This is very valuable. 

    In the business scenario of data synchronization, I use weak references (or soft references) to improve the recovery time of data objects.

    If the interviewer asks you about the JVM memory structure and the GC (garbage collection) process, this is actually a theoretical problem. There are too many online materials and the back is enough, so I won't go into details here. But having said that, the theoretical knowledge of GC process and JVM architecture is a common test site for interviews, and you are prepared to not suffer. 

7 Show your experience in database tuning

    Many candidates actually don’t show their experience in memory tuning in interviews. If you follow the above statement, on the one hand, you can introduce the main points when introducing the project experience, and on the other hand, you can explain the details in subsequent exchanges. Say, you have surpassed many competitors, and even said something that shouldn't be said. Some junior developers can even use this to enrich their project experience.

    When introducing project experience, if you simply show the experience of memory tuning, it may not be very convincing. Here is an example that actually illustrates the database tuning skills. First of all, you can introduce the main points through the following rhetoric when introducing the project.

    In this project, I have participated in data table design, so I will consider using anti-paradigm to avoid performance loss caused by large table associations. At the same time, we will set up indexes reasonably to improve database access performance, and I have used it The experience of executing plan optimization statements, and when using transactions, I will pay great attention to configuring the transaction isolation level and transaction propagation mechanism to avoid locking tables.

    Similarly, in the project introduction stage, the rhetoric of database tuning does not need to be expanded, just give a few points. Since you mentioned it, the interviewer will most likely ask later.

    But before you interview, you need to prepare the following skills (in fact, these skills are the basic points of the database, you will have problems if you don't prepare).

    1 Look at the data structure of the index (such as B+ tree), the sentence to build the index, the type of index, especially the compound index and the corresponding back table and the leftmost matching principle.

    2 Take a look at the correct usage of the index in advance, and under what circumstances the index is not used, such as where a !='xx' may not be used.
    3 The cost of the index (it will occupy the hard disk, and the index will be rebuilt when reading and writing in large quantities, so the performance is slow), and in the small table, there is no need to build an index.

    4 The concept of the execution plan, and the points to pay attention to when troubleshooting slow SQL through the execution plan (avoid full table scans, set up reasonable association table methods, etc.).

    5 Three-paradigm and anti-paradigm related concepts, as you mentioned.

    6 Concepts such as dirty reads in the transaction isolation level, as well as the transaction propagation mechanism, in particular, you have to specify which is used in your project.

    In fact, the above points are common interview test sites, but according to the results of my interview, some candidates with 3 years of java development experience may not be able to say well, but once again, these skills are not difficult to learn, and most of them can be done by backing, so Even if you have just graduated or only have a small amount of development experience, as long as you memorize these points hard, on the one hand, you can highlight the points when you introduce the project, and on the other hand, you can also deal with subsequent database problems well. This way your performance is enough to exceed most of your competitors.   

8 Summary of the previous remarks

    Here, based on the main points given above, I will sort out the rhetoric that introduces the project experience.

    (Introduction to the background of the project) My most recent project is the xx community love supermarket project done by xx company (don’t say the project is too big). The client is xx company. There are 6 people in the project team. It has been developed for eight months, and it is still in the recent past. Development, in which I have done the business of deleting and updating the order module (if it is a project done in school, add the following words), this project is a part-time project that I started from my junior year and looked for xx company to do it. I can get money every month during the project. 

    (Introduce the project technology, try to be as full as possible in the JD list) This project uses the Spring Boot framework, the database is Oracle, and JPA is used to connect to the Oracle (or MySQL, etc.) database, and the @RequestMapping annotation is used in the control layer to write business processing methods . In the business code, the @Autowired annotation is used to introduce the class in the IOC way, and the @Service and @Component annotations are also used. When we get the data from the database, we will map the data with the model class that contains @Entity and @Table annotations. In this project, we also used the @Transactional annotation to define transactions. This annotation acts on the Service layer. In this project, we also use multiple Java collection classes and exception handling classes.

    (Introduction to project management tools) This project uses agile development model, uses Maven framework, uses sonar to manage quality, uses git to manage project versions, uses jenkins to publish, and uses logback to log. In this project, in addition to writing code, I also Have experience in unit testing with Junit. We also use sonar to count the test coverage of the code. Our project manager requires that the code can only be submitted when the "line coverage is higher than 80%".

    (The highlight is thrown at the end) In this project, I used singleton and factory design patterns. In this project, I have done JVM tuning and database tuning. In order to deepen understanding when working on the project, I also I read the low-level code of ArrayList that quickly fails, and I also read the low-level source code of HashMap about HashCode and put and get parts. The late progress of this project is relatively tight, and I can also work overtime to ensure that the project can go online normally, and if I encounter online problems, I will try to participate and solve them.

    Before the interview, you can prepare your speech reasonably based on the above examples. The order and content can be adjusted, but the several elements included are as comprehensive as possible. If you can, practice a few times beforehand to ensure that you can throw out your relevant skills and highlights in sufficient quantities.

    But be careful, when introducing the project, for specific points, such as memory tuning, you click until you click, don't expand, otherwise, the interviewer will definitely think that the idea is not clear. In short, when introducing the project, the main points that need to be followed are: first, you must explain the skills you have used on JD as comprehensively as possible, and second, you must throw out bright topics and wait for the interviewer to ask questions.

9 When preparing the project remarks, you can also prepare questions for subsequent interviewers

    In fact, most interviewers may still be debugging the code before the interview, or are still in a meeting, that is, they will not prepare interview questions in advance. So when you throw out highlights when you introduce yourself and project experience, they will often follow the topic casually. In other words, as long as the realization is ready, you know what the interviewer will ask.

    According to the project introduction speech given above, you mentioned agile development, Spring Boot framework, database tuning, memory tuning, design patterns, junit and project management software, java collection and underlying source code, etc., which are also given in the previous article Some questions that the interviewer may ask and the corresponding preparation points are listed. In addition, you can also make the following preparations.

    1 Understand the singleton mode, especially the double-checked singleton mode. You need to be able to write code and give a project usage scenario. For example, a certain tool class needs to be created in a singleton way. Similarly, prepare a usage scenario for the factory pattern, which is easier to handle. For example, the xml parser class is created with the factory pattern.

    2 On the basis of understanding, memorize and silently write the underlying code of the ArrayList that quickly fails. During the interview, when the interviewer continues to ask questions according to the words you give, you can write while talking, and you can also prepare HashMap and Hashcode. Low-level source code.

    3 Look at the related theories of JVM memory tuning and garbage collection. It is best to look at the strong reference, weak reference and soft reference theories.

    Please note here that when you introduce yourself and the project, you can guide the interviewer to ask questions by throwing out highlights, but at the same time, you need to prepare other common questions, because some interviewers still ask other questions. In this regard, you can brush more interview questions in the Spring Boot framework, database and Java core development, and even prepare more written questions. So in this way, what are the benefits of throwing out highlights?

    First, after some interviewers follow your words to ask questions, they find that you answer very well (because you have prepared in advance, it is difficult to answer if you don't think about it), and then they stop asking questions.

    Second, the interviewer will ask about some of the highlights you mentioned, so that you can avoid the interviewer asking about the points that you are not familiar with.

    Third, in fact, most of the primary development in the project is only to add, delete, modify and check, but on the one hand, you have prepared a number of stable points based on the above description, on the other hand, you can well prove that you are familiar with design patterns, including JVM and database debugging Excellent experience, then you may perform better than others in the interview.

    In short, if you prepare some basic and bright technical points on the premise of preparing project experience, you will not suffer. 

10 Summary: The rhetoric and methods contained in this article are sufficient to deal with junior interviewers

     I recently helped trainees from a well-known training school in Shanghai. After teaching them to prepare resumes and project presentations using the above methods and narrations, they all succeeded in finding jobs. And there are several classmates with 2 to 3 years of development experience. I originally expected the salary to be 11 to 13k a month (after all, I did not dare to be higher because of the training class). After I counseled them through the technical interview, when discussing salary, I asked them at least 15k. When they bite the bullet and gritted their teeth, they all managed to get the price, and a courageous classmate , And it's 16.5k. Now they have begun to worry about how to pass the probation period after joining the company, but this is a later story. If I have time, I will write an article to introduce such experience.

    This is how I dare to introduce relevant methods and rhetoric in this blog post. In addition, the confidence that I dare to write this blog post lies in my years of experience as a technical interviewer and the two interview books I have published. The same is true for the graduates of the training course. If you are still doing real projects in software companies recently, then I dare say that this article will help you even more.

    That is to say, through the skills given in this article, everyone can deal with some junior interviewers with less than 2 years of interview experience. Of course, if you want to support some senior interviewers (such as me), this alone should not be enough, but more important. In the interview, I will demonstrate skills in multithreading, distributed components, microservice frameworks, and high concurrency. For this, I will continue to give relevant skills in subsequent articles.

    Please pay attention to my official account: make progress together and make money together. In this official account, there will be more exciting articles.

 

Guess you like

Origin blog.csdn.net/sxeric/article/details/112461920