JavaRush /Java Blog /Random EN /A guide for the future Java developer. Interview and care...
Fry
Level 41
Львов

A guide for the future Java developer. Interview and career

Published in the Random EN group
A guide for the future Java developer.  Interview and career - 1 The Force is a river from which many can drink, and Jedi training is not the only way to draw from it." — Luke Skywalker All the book selections are left behind. It’s up to you to decide which of them to read and which not to. Now you have only one goal left: to get a job and build a career without stepping on a rake. The last article is divided into sections: - Before work - Interview - During work This part contains a lot of my personal opinion, so please do not take phrases out of context and treat it like a frank conversation with an old friend :).

Before work

Below are the ten most popular clichés that arise when the soul is drawn to programming, but certain circumstances interfere with the person. My task is to try to stop your suspiciousness and set you up for a positive way of thinking. If you are reading this article, you are further than you think! Mentally, you are already where you need to be, and if you have already read some books, then you are already halfway there. Therefore, stop doubting - this is the lot of the weak. Only forward! Better already? Then let's go! “I have no education” When I was completely green and entered the academy of one of the large outsourcing companies, the interviewers gently hinted to me that they were not interested in a diploma at all, so the questions were specific - about OOP and basic Java. Of course, you will come across vacancies where the availability of tech. education will be a clear requirement. I just want to say that his absence is not an obstacle these days. Many foreign offices ask for BS/MS Computer Science or, attention, relevant experience. Not convincing? You may be encouraged by the fact that I don’t have a technical education ;), but this absolutely did not stop me from gaining experience in large companies. Ask me now, what would I do if I could rewind the film? Of course, I would go to KPI/NAU, but I wouldn’t be too sad if I didn’t get in. Stop worrying about it. Time will pass - you can get a degree at 40 if you want - but for now, focus on becoming a junior developer here and now. “There will be people smarter than me” There will always be people smarter, smarter, more flexible, more talented than you, and any job is no exception. This fact absolutely does not give you the right to deviate from your goal. Perhaps, somewhere on the other side of the globe, there is a little boy from Japan who multiplies and divides numbers faster than you, and some grandmother from the Czech Republic types on a mobile phone keyboard faster than any teenager. But you don't think about it, right? So why then should you care about the people you work with once you get hired? In some ways, your future colleagues will be superior to you, and in others they will be inferior to you. This is fine! We cross it out. “I don’t think I can” Well, first of all, no one said it would be easy, but this does not mean at all that your goal is impossible. There is nothing stopping you from simply trying, even if you are currently working as an accountant or sales consultant. Come after work and sit down to study. If over time you see some progress, this is a sign that you are moving in the right direction. Do not stop! If you are even a little interested in this and it is given to you, then I do not know a single point that could convince me that you are not worthy of it. "I'm overwhelmed by laziness" Laziness is simply a lack of motivation. If you notice that most of your free time, instead of studying and staying on track, you are stupidly doing garbage - I hasten to notify you that, most likely, being a programmer is not for you. At least not now. Some call laziness a sin, a disease, cholera of the modern age along with obesity. Leave this matter to career hysterics. In my opinion, everything around in this life is imbued with the illusion of struggle and competition: who is taller, who is stronger, who is richer. Who has a cooler car, who in the team has a higher salary, who bench presses heavier at the gym, which of the girls got married earlier and had children - this makes you sick, like stinking fast food. People stopped living and enjoying life, following their dreams, exchanging their comfort zone for a choice between Pepsi and Coca-Cola. For me, laziness is good, it's just wonderful. This is an ordinary protective function of your body to save energy and time on things that are useless to it. Man was created to be free, so if you are lazy, stop trying to lift your butt off the couch - perhaps it is now in its place :). “I’m going there because of the money” If you gather developers and say: from now on your salary will be 3-4k hryvnia for any level, and testers will continue to receive the same rates, then the question will be different: not how many It’s a bomb, but how many programmers will remain programmers after this news. Many people get into IT because of the money. Salary translated from dollars, cheese and an expensive DSLR. No matter how much I worked with people, there were always conversations about this. I’m not saying that this is bad, I just want you not to try to convince yourself that you are coming for purely spiritual purposes to change the world for the better. Before I got a job as a junior, I knew what the salaries of seniors, technical leads, and even middle managers were, and these thoughts only inspired me: in my time before working as a programmer, I could only dream of such figures. Call these things by their proper names and stop being ashamed of it. “It seems to me that this is not mine.” Whose then? You know, it's easy to check. Open Hortsmann's first volume and start reading and writing code from the examples. If you are not bored and you are not marking time on the same chapter for the second week, cast aside your doubts. Studying technical specialties is a sequential thing. You can't move on to B without knowing A, but you'll always have the chance to go back a chapter and strengthen your foundation. Go for it. “There are many like me” There is always competition for a place. I don’t argue, for example, now there are 300-400 testers without experience, or even more per place. Yes, this is the bitter truth, but, on the other hand, even with such indicators I cannot find a sufficiently serious point. Yes, at least 100500 per place!! You always have the opportunity to gain experience on your projects: build some kind of service, a desktop program, use the entire stack that you know - and you’re already making headway, while the rest, apart from sending out your resume, do nothing else. “Nobody responds to my resume” Continuation of the above point. Most likely, for future IT specialists without experience, being able to write a beautiful resume is good, but when there are a lot of people for one vacancy, many resumes are very similar to each other: you, of course, can send a photo with a cleavage (if a girl) or write a lot of technologies , which you yourself only know from Wikipedia. In both cases, HR will simply not care: if the project vacancy must include a person who, for example, knows AWS, then they will look for AWS in the resume. Take into account another important point, such as recommendations from colleagues. This is the pain of any person who does not have such acquaintances, because the lion's share of juniors are taken from there (if the person is recommended - not an idiot, of course). Usually, for the junior position, they hire, I emphasize, an adequate active person who is ready to learn, and even for food. And if such a candidate fails, then you will most likely be next. Well, while the rest are being interviewed, you have many areas where you can improve your skills: open source, tasks on the Internet, and maybe freelancing. “I won’t pass the interview/I want to join a specific company” Yes, most likely, the first interview will be a failure, but the experience you will gain is priceless. With each subsequent interview, you will become more confident and resourceful. I still remember my first... God, what nonsense was I talking about?! It was such a shame to leave after it (I remembered that ghoul who grinned in my face), but when I came home and thought it over, I realized that it was a wonderful lesson. After him, all subsequent similar events were imbued with ease and confidence. No one died, they are looking for people like me, which means I will come up. Believe in yourself! If you specifically want to join a certain company, then I think I won’t tell you a life hack that is popular in our environment, but still: before you organize a meeting with this company, go through an interview with competitors. Perhaps you will be offered something you cannot refuse, or the conditions will be tougher. I know one thing for sure: you won’t regret it. “I feel good at this job too” You know, there is an old saying: Le mieux est I'enneini du bien (“The best is the enemy of the good”). Maybe your job isn't the worst place to be, but yeah, the boss is an asshole, so what? Or, for example, the third year without a bonus, but a stable salary, especially since I’m already over 30. To some extent, this may be true, just remember that you have one life, and it should not be wasted on disappointments, for imaginary comfort, when there are so many interesting things around, and your whole life is not enough to understand. Don't be afraid to be better, don't be afraid to be the best. Don't listen to anyone, go towards your goal persistently if you know that this is what you really want to do. Don't be afraid to change!

Interview

By and large, you can find all this on the Internet or ask your friends, but I think it won’t be superfluous. Below is an example of an interview for a junior Java developer as it would be now if I were the interviewer. The questions can be anything, I just tried to collect something average about the hospital. Let's imagine that you are lucky. Standard scheme Step 1. A recruiter calls you and you arrange an interview with her, for example, tomorrow at 11:00. Step 2. You arrive earlier, since 11:00 is most likely not the time for you, but for the developers, who have reserved some kind of room in which they will torture you. It would be good practice for any recruiter to warn about this. Step 3. In fact, starting from step 3, all the points can be mixed, because interviews can go differently. For example, here you may be asked about basic things, where are you from, why here, and so on. It is possible that HR himself can do this, and of course, it is possible that in English. Really, it depends on the company. Step 4. You are invited to a meeting room, where you will have a conversation with one, two, three people, one of whom will be either a senior or a technical lead who will work with you in the future, among the rest there may be a Scrum master, others developers or HR's. They interview you for a while, then shake your hand and let you go. Step 5. Perhaps this will be the next day, or perhaps immediately after step 4 - you will have a conversation with the foreign customer (if there is one), or maybe he will conduct the interview himself. As you can see, there are many options. Somewhere there are customers, somewhere there is also a telephone interview. This is just an example. Example of a technical interview for a Junior Java developer I feel very sorry for the underdevelopers who read something smart with the goal of drowning/crushing/showing off in front of the applicant at the interview. If you see such a person in front of you and feel pressure and tension on his part, immediately send him to three fun ones, because after successful completion you will have to work with this idiot. Don't waste your precious nerves. The interview, first of all, should be conducted with the goal of finding out what the candidate knows, and not what he does not know. Naturally, if you need a person who knows something specific, ask him, don’t bother him with useless things that you don’t use in the project. Be human, after all! Below are approximate questions that may come up in an interview. 5 questions for each technology. OOP 1. Give a real life example of polymorphism? What are the advantages? Flaws? Write some simple code. 2. What is an interface? Abstract class? Why do we need interfaces if we can stupidly write everything in classes (a little provocation)? The same goes for the abstract class. What are default methods in Java 8? 3. Construct a class hierarchy using a specific example of an imaginary database or program (there is a list of different classes of workers from the database) and the interaction between them (aggregation, composition). 4. How does composition differ from aggregation (is-a, has-a)? 5. How can you bypass the ban on multiple inheritance in Java? JDK/JRE 1. How is JDK different from JRE? What is JVM? 2. What is classpath and what is it for? How to, for example, load other classes into the classpath? 3. What do you know about classloader? 4. Tell us about javadoc? What is it for? 5. What is JAR, WAR? Java Common 1. What is the difference between static and non-static methods? What is final? 2. What is boxing-unboxing? byte b = 127, b++, what is the result and why? 3. What are wrappers, what are they for? 4. What do I need to do to create my annotation? What is overriding/overloading? 5. Why is the String class final? What does the intern() method do? Data Structures 1. Explain the structure of Collections API in Java? Have you already worked with the Stream API? 2. What is the difference between ArrayList and LinkedList? Where is it better to use ArrayList, and where is LinkedList? 3. Tell us how HashMap works? What are the features of working with TreeSet, HashSet? Do you have experience with Guava collections? 4. Arrays in Java, example of a two-dimensional array. 5. hashCode, equals using HashMap as an example? Concurrency 1. What is a process? Flow? How to create a thread? What is synchronized? How to understand this or that piece of thread-safe code? 2. What is Thread.sleep, and also wait, notify, yield? 3. Give an example of deadlock? 4. Collections when working with multithreading. 5. ThreadLocal and Atomic SQL/JDBC operations 1. Using a specific example, get from the Users database the one whose salary is greater than 5000. 2. Examples INNER JOIN, OUTER JOIN, Order By, Group By. 3. Why do you need a JDBC Driver? Examples. 4. Tell us everything you know about ResultSet, a couple of examples. 5. Write a simple DAO using RS. JPA/Hibernate 1. What are the disadvantages and advantages of JPA? 2. What is EntityManager? Entity? 3. Criteria in JPA/Hibernate. 4. One-To-One, Many-To-Many in JPA/Hibernate 5. How would you do a JOIN in Hibernate? HQL? Spring 1. What is DI/IoC? Advantages. 2. What is Application Context? Bean? 3. What are the types of IoC initialization? 4. Singleton, Prototype in Spring? Annotation-based Spring? 5. Life cycle of beans? Init-method, destroy-method? @PostConstruct, @PostDeploy? Maven 1. Main phases of maven, life cycle. 2. How to run maven with tests, without tests? What is archetype, mvn dependency? 3. Profiles in maven, how to create, how to launch. 4. What is snapshot in maven? Central/Remote repositories? 5. Plugins in mvn, how they work, a couple of examples. Algo 1. The concept of an algorithm, its speed, Big-O-Notation. 2. How to find the middle element in LinkedList in one go? 3. Write a primitive Stack? What is the difference between Stack and Queue? LIFO, FIFO? 4. Quick Sort, Merge Sort. 5. Write a program that checks whether a number is a palindrome. I agree, maybe the bar is bent a little more towards the middle than the junior, but I think that such preparation will definitely not hurt you. Try to go deeper into each question. By the way, many areas in Java are not indicated here, please take them into account.

During work

Here are some small recommendations for those junior/middle developers who have already settled down. These simple tips may help you just as they helped me. Don't be stubborn Stop trying to prove your point, even if it's tantalizingly close to the truth. You have already noticed that you have been in an argument for a long time, which means that on the other side of the barricades there is an ordinary donkey who has only two opinions in life: his and the wrong one. We have an incredibly large number of stubborn people who stand their ground to the last, just so that their ego is not shaken. And these are not only your colleagues, they are simply everywhere - on the minibus, in the store, relatives, close friends - you cannot run away or hide from them. You need to somehow interact with them, even if you understand that the person is talking openly nonsense. Moreover, the same thing can happen to you. I agree, simple things can be explained even to a stubborn person, but what if we are talking about architectural issues in a project or personal opinion? Forget about this junk - be flexible. I have a lot of respect for people who can admit they made a mistake in front of everyone. This is precisely the quality that will be useful to you as a junior specialist - it is difficult to enter into confrontation with an open person, especially when he admits that he is learning and has the right to make mistakes. Don’t be late It doesn’t matter whether it’s a probationary period or just a Friday, when everyone forgets and comes at 11. Another thing is important: punctuality is a feature of a professional who earns extra points for himself out of the blue. And extra points won’t hurt a person without experience, right? Try not to be late and leave work after working honestly for 8 hours. Don’t abuse estimates Unfortunately, this is a very common situation that I once got myself into in the past. The developer set himself 8-16 hours to complete the task and unexpectedly completed it in 3-4 hours. He spends the remaining hours on his personal time in the form of table tennis, as was the case with me, or watching YouTube and other entertainment. From a legal point of view, it seems that we have agreed, but from a human point of view, you are depriving yourself of very important things: 1. You are standing still, because you are filling your extra time with unnecessary things; 2. You are not developing because you do not inform your management about your rapid progress; no one knows that you are completing tasks faster than expected; 3. You begin to constantly overestimate the average amount of time for values, this is just a road to nowhere. Take time to study The chance of falling behind the locomotive is unrealistically high, so keep in mind that technology and new versions are developing very quickly. Subscribe to the Java evangelists of our day, read Java digests and generally be interested in, learn new things. This will help you maintain your brand and develop. Help others Don't be afraid to help others, even if they are as green as you. Firstly, you will greatly strengthen your knowledge, and secondly, you will gain respect in the eyes of others, and at the same time they will help you. In such an environment, the best teams are born, as well as very rapid technical and personal growth. Play sports. Have a hobby No, seriously. Not only do people who exercise look and feel better, but their brain function is also better! Scoliosis, lower back, excess weight, various problems with internal organs - sitting at the computer around the clock, even outside of work, contributes to this. If you can’t play sports (which I doubt), use small life hacks: work while standing from time to time, get off two stops earlier and walk to work. And in general, walk more. There is also a risk of burnout if programming takes up much more of your time than 40 hours a week. Personal hobbies will come to the rescue - for example, photography, music, etc. Make time for spirituality regularly. Balance your personal life When your girlfriend/wife says: “the laptop or me,” you need to think carefully about what place programming occupies in your life. On the other hand, when starting your journey in IT, you need to clearly explain to your significant other that now you need to study a lot in order to achieve more. I hope they understand. Well, try to balance and distribute your time correctly. Go beyond Be proactive, if you feel, for example, that you can share knowledge or have interesting topics, why not organize small courses within the company for others? Don't be afraid to take part in large open source projects if you know how you can help. If you want to write a game, a social project or another idea - do it, do it, do it! Don't stand still, always look for ways to develop. Be competitive Watch new trends, stay updated with the trends that are happening in the Java community. For example, it won’t hurt if you occasionally, from time to time, monitor Java vacancies on DOU, but not in order to get away from work, but in order to know which technologies remain relevant and which are slowly disappearing from the market . Also try to take courses on Coursera, Udacity, etc., explore new horizons. And even English: try to watch your favorite films/series in the original with subtitles to improve your speaking skills, download a couple of interesting applications for learning the language (for example LinguaLeo), and, in the end, take courses.

Conclusion

Well, my little project on DOU is coming to an end. Dear friends, I sincerely wish you to get a job and hope that everything that I have described in these 7 articles will be a valuable guide for you, even for those who are already working as a Java developer. Future juniors, remember that nothing is impossible, and if you really push yourself, you will certainly succeed. I want you to finally decide whether it’s for you or not, develop a detailed training plan and calmly follow it. Don’t be upset if you get silence in return - this is all temporary, the main thing is to believe and in no case stray from the course, but to study, study and study again. I'd like to give a huge thank you to the DOU team for editing a lot of the material and giving me prime time on Mondays. DOU is a cool community that has ceased to be just a site for Ukrainian IT specialists. I would also like to say thank you to all the commentators who read my articles diagonally and took phrases out of context. Without you, the articles would not look so interesting :) May the Force be with you! Original article taken from DOU
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION