To introduce myself

Double non two books, software engineering

Like programming, ancient style, Japanese and English.

I wrote a small blog during my job search, if you are interested, you can read it

【GitHub】

Why did you leave?

This is a question I’ve been asked in almost every interview I’ve ever had. I graduated on July 1, 2015, and the last resignation date is December 18, 2020.12. It’s a short job experience, and it’s normal to be asked. The main reason is to pursue greater development space and technological breakthroughs.

After my mentor jumped ship and went to Meituan, there was an obvious technical fault in the team. I have fewer and fewer colleagues to consult with on certain issues. As for the source code, there is even less communication at the data structure and algorithmic level.

And these deep things, is the real sense of the technology stack, is really can improve personal technical ability and core competitiveness.

What to consider before jumping ship?

In my opinion, there are two core factors that determine the success of job-hopping: one’s technical ability and the general environment of the current recruitment market. It is recommended to make a comparison between their technical ability and recruitment requirements first. If you think you are competent, then you can deliver. As for the market environment, it is probably gold three silver four, gold nine silver ten and the end of the three stages of expansion.

Once the technology is ready and your resume is polished, you’re ready to send it out. Internal push or other recruitment software, you can choose.

The most important thing is that naked resignation is not recommended. If you quit naked, be prepared. In most cases, it’s not unusual for a month to go through the interview process, from the offer review to the offer call to the final email. Job interviews can be stressful, not to mention a naked resignation.

If you work for a short period of time and you quit naked, then I can only say that it will be a disadvantage in resume screening. For example, I applied for 15 jobs, got knocked out, and didn’t get an interview until the 16th. Fast man 4 inside pushes, got killed 4 times, the fastest one killed me in about an hour. I have to say, quick hand efficiency is in place. I did not give up the fifth time, successfully arranged the interview.As for why I was invited to interview with Monkey Counseling, Baidu, 58.com, Qunar and Meituan, I guess it was all due to luck… Or is there a shortage of people?

Bytedance interview experience

One side

  1. What collections do Java have
  2. What are the implementation classes for Set, List, and Map? What are the differences
  3. ArrayList and LinkedList
  4. How to check whether a key is null when a HashMap is put
  5. Several algorithms of GC
  6. How to identify garbage (reference counter, reachability analysis), what’s wrong with reference counting, what’s the GC root
  7. Why does Java use reachability analysis instead of reference counters
  8. How do threads communicate in Java
  9. Difference between synchronized and volatile
  10. The difference between sleep() and wait()
  11. Tell me the HTTPS
  12. Is HTTPS any different from HTTP in programming
  13. Write a Socket
  14. What are the methods of HTTP request? Get/POST is different
  • Programming problem: find the array with the highest ascending subarray length 2

Second interview

  1. Four Java references
  2. Finalize () function
  3. Write a double-checked singleton to ensure thread-safety
  4. The principle of volatile, ReentrantLock
  5. Http1.0, HTTP1.1, http2
  6. The HTTP status code
  7. How do I close an HTTP connection
  8. How do you use try catch finally
  9. What other design patterns do you know
  • Programming problem: Find the number of islands. Leetcode problem 200

I didn’t write the programming question, the interviewer guided me for nearly an hour without writing it, and then I passed.

On three sides

  1. Remove the specified element from the List. Use only the functions of the List interface.
  2. The difference between overloading and overwriting
  3. The principle of polymorphism
  4. Difficulties in the project
  • Programming problem: Find the first occurrence of the target element subscript from a non-descending array

Int [] array = {1,2,2,2,3,3,5,6,8}, int target =2

For answers, check out my [GitHub】

How to prepare technically?

Combined with my more than 20 interview experience, a core is summed up: basic. Even big factories do not neglect the basis of questioning, but pay more attention to it. The foundation is unstable and the earth shakes. The foundation is as steady as a dog. The following information I mentioned will be linked at the end of the article, you can view.

Interview Knowledge

  • A mind map

  • Android interview process skills to master

Every interview has a process. Take an Android interview for example, it’s not going to be all Android questions. There should be questions about programming fundamentals. I categorize the Android interview questions as follows:

In general, an Android application development position is not need too much data structures and algorithms, but this does not mean that the candidate can completely don’t understand data structures and algorithms, data structures and algorithms so you still want to know a little, because it is not necessary, so it doesn’t matter even if the interview process to answer is not good, As long as the following Java, Android related questions can be answered perfectly. Some students told me that the interview was based on data structure and algorithm, which should be rare in social recruitment, mostly because the Android question was not well answered. This is the difference between social recruitment and school recruitment. School recruitment depends on the foundation, while social recruitment depends on technical depth and business.

As for design patterns and architecture, in fact, the requirements for this interview are not particularly high. It is ok to be familiar with common design patterns, such as singleton pattern, engineering pattern, observer pattern, etc.

Next, I will describe the requirements of Android technology in the interview process. In my Understanding of Android article, I have divided the Android technology categories, as shown below

For most of the interviewees, everyone’s target position should be senior, intermediate position (Baidu T4) need to master the knowledge is: basic knowledge, in-depth knowledge; The knowledge points that senior positions (Baidu T5) need to master are: basic knowledge points, in-depth knowledge points, details of basic knowledge points and system core mechanism.

1. Basic knowledge, such as how to use the four components, how to create Service, how to layout, etc. This kind of knowledge needs to be mastered, and it is not difficult.

2. Deeper knowledge such as AIDL, Binder, multi-process, View drawing process, event distribution, message queue, etc. This kind of knowledge is a must for senior developers as well, but many candidates don’t have a thorough understanding of these questions before the interview. These questions are basically very common in the interview process, but also the questions that senior positions must master, do not solve these questions can not meet the standard of Baidu senior engineers, so it is impossible to pass the interview.

3. Details of basic knowledge, such as the start mode and flag bit of an Activity, stop problems when a Service is in the start and bind states at the same time, synchronous AsyncTask asynchrony problems and limitations of use, etc., there are many other problems. This is the kind of knowledge that people don’t pay attention to during the development process, which can lead to the problem that developing apps is fine, but when the interviewer asks for details or special situations, they can’t handle it. These are the kinds of questions that senior developers need to master. Some interviewers like to ask tough questions, but it’s not good for a candidate to be unable to answer them.

4. The system core mechanism, such as the message loop of the main thread, how the main thread interacts with AMS across processes, the working mode of various services in the SystemServer process, and the working principle of AsyncTask, etc. This kind of knowledge is also recommended for advanced developers, as it can help them understand how Android works. This type of question isn’t something that every Android interview will cover, but it’s something that can be asked at a large, technical company.

5. Little thingsI define these knowledge points as important but not technically difficult problems, such as how to open a web page, how to make a phone call, how to send a text message, how to locate, multi-touch, etc. These problems are often hard to remember, but can be looked up when needed. These types of questions rarely come up during an interview.

The end of the

Recently, Xiaobian bought dozens of sets of interview questions for Alibaba, Toutiao, Tencent, Meituan and other companies from 2020 to 2021, and sorted out the technical points into videos and documents (a total of 20G, in fact, much more energy than expected), including knowledge and many details, due to the limited space, Here are some of them in the form of pictures.

This information is particularly suitable for:

1. No working experience, but solid foundation, familiar with Android working mechanism, common design ideas, common Android development framework. 2. Those who have some work experience but do not know where to start in the face of the current popular technology and need to improve their core competitiveness quickly. 3. You’ve been at the company for a long time and you’re comfortable, but you hit a brick wall when you change jobs. Need to study in a short time, job-hopping to get a high salary can sign up. 4. Want to know the latest recruitment requirements/technical requirements of “first-tier Internet companies”, find out their strengths and weaknesses by comparison, and evaluate their competitiveness in the existing market; 5. Programmers who have worked on Android development for several years but have not formed a systematic Android knowledge system and lack a clear direction for improvement and learning path.

I believe it will bring you a lot of harvest. Android Interview Questions (part of the presentation)

  • Android Beginner – Advanced Learning Advanced mind brain map (there are hundreds of branches, systematic learning)

  • Study Notes (part only)

  • Interview notes (including interview questions + analysis + interview HR essential knowledge + learning Android basics – advanced knowledge)

My study notes and the knowledge to be learned at each stage are put in the following learning thinking brain map. Since it is a cross-major, the knowledge points are very detailed and relatively complete. You can save and download what you need by yourself.GitHub【 Free to share with you! (The notes are corresponding to the mind brain map, and each knowledge point is explained in detail. If necessary, please check my GitHub to share with you.)

Need to be able to think brain map and corresponding study notes of friends, click to get

【Jq.qq.com/?_wv=1027&k…】

conclusion

If you have confidence in your IQ, problem solving ability, and research attitude, the IT industry is perfect for you; Ability to exercise out, the salary is high, keep throwing problems for you to solve, so that you have a sense of achievement; With the accumulation of time, the technical level becomes stronger and stronger. Then you should enroll in classes/learn by yourself, start as an intern, and after 3 years, it will be natural. If you want to mix (lack of research spirit), really miserable; Rest didn’t earn any decent assets (junior programmer salary really is not high), overtime dropped a disease for a long time, then 40, in addition to programming what also not, programming thief dish, also get mixed up in a small company business code, when the boss might say farewell, then compete with guys junior programmer position… ;

The experience of the eight-year veteran tells me that in the wrong direction, the more adhere to the more hurt;