Hey Guys, this is Programmer Cxuan, welcome to watch my latest article. Today’s article is based on the personal experience of one of my loyal readers. This article describes his feelings and summaries from his freshman year to his entry into Tencent.

Vegetable Chicken Adventure

From the end of February to the end of April to get the offer, my spring recruitment is over!

Choosing to work directly instead of going to graduate school like most people do is really a very difficult decision, and the confusion and anxiety I experienced during the college entrance examination was no less than attending the postgraduate entrance examination.

At the beginning of university, like most people, I also wanted to be a good student, to shine like the assistant class, to get high GPA, to participate in various competitions, to obtain the qualification for postgraduate study, and to fill up my resume. Ignorant cognition even made me fall into the gpa theory thinking at that time, and concentrate on hard work.

Unfortunately, at the end of my freshman year, my low GPA made me realize and gradually accept that I might not be good at exams (in the final analysis, I had to make excuses). Even though I tried hard in my freshman year, MY GPA was still very low, which made me gradually doubt my ability.

Now, it seems that gpa is important, but there’s only so much they can prove (at least in the field of computer science), unless they’re really top notch, which is what many college courses know. Here I do not want to criticize university education, but HOPE that GPA will not become the only indicator to quantify students’ ability and cause arrogance and prejudice against others.

The summer holidays at the end of the freshman year, moved to the new campus, start a new life, and since that time, I occasionally find myself interested in all kinds of backpacks technology has complete, from the crawler to the web, from data analysis to the machine learning, basic have had contact for a period of time, that time almost became my technical stages of enlightenment.

In my sophomore year, with my passion for technical ability, I submitted the application for transferring to the College of Accounting and Management with confidence. In my first choice, I failed in the computer test, and in my second choice, I failed in the interview. After asking the reason, I was told that I failed a general education course in my freshman year with a low GPA. It is no exaggeration to say that it was a great blow to me at that time. The voice of questioning myself kept echoing in my head, “Are you better than other students in the computer department without a major?” “You’re not doing your job studying technology! ??” At that point, he was almost out of his depth and faced demotion if he tried to change majors the next semester.

But there were some good things that happened that semester. In my sophomore year, my interest in technology attracted the attention of the Python teacher, who invited me to join his research group. The teacher later became my tutor. In those days, there were almost endless papers to read and algorithms to read. Everything was very novel, and it seemed that I soon forgot the negative energy of failure in my major transfer.

My sophomore year is almost over. Field while feeling algorithm is really cool, I also once fantasized oneself can plunge into the field of artificial intelligence, and under the guidance of teacher learning for some time, also took part in a competition during an article with a prize and water designed example, actually in the heart really appreciate, can meet such a willing to pay for undergraduate students in university career do so teacher really is to me a great deal of pleasure. But on the other hand, while algorithms are really interesting and hot, the bar is really high and the competition is getting tougher.

How to view 2019 autumn recruitment algorithm post ashes?

How to view algorithmic gang a piece of red sea twilight gods?

.

All 985 master returnees, top will thesis, top competition Balabala, really dissuaded. I was not interested in paper mathematics and finally gave up, or development is more suitable for me.

At present, I think what is needed on the market is an algorithm engineer with a solid computer foundation and certain engineering ability, rather than a guide package tuning man. No matter which technical post, it is necessary to have a solid programming language, data structure, network, operating system as the foundation. You should become a qualified software engineer and then try to become a qualified algorithm/machine learning engineer.

At the beginning of 20, I finally made up his mind to, decide the future in-depth study in the field of Java back-end, for now, it seems that this is not necessarily the best choice, but at least not bad, at the same time I also pulled out of the tutor team, although there is no continue to do it, but still hit the bottom of my heart thank you very much teacher, because in the competition during the tutor is crucial to our help can say, It was a great honor during my college years to have a mentor who was willing to devote so much energy to undergraduate students.

I started to bite from Java Core Technology Volume I, and went further step by step. Gradually I started to complete small projects, and the road ahead gradually became clear.

During this period, I also met several like-minded partners working on projects together. Although sometimes it was really hard, I believe that when I look back a few years later, it must have been a very happy and nostalgic time.

Entering the year of 2021, as the saying goes, spring recruitment is approaching. Since the end of February, I have been reviewing for more than half a month, and finally I am very lucky to get the offer of summer internship in Tencent. Maybe it is nothing compared with many big guys, but entering a big factory can be regarded as fulfilling my dream of university.

As a just-concluded 2021 for people, to talk about my first utopia and the reality, tencent and ali is one of my earliest selected target (in shenzhen) because the school is in hangzhou, the home, ali group of surface ahead of the three departments are passed, but the last push processes can only choose one department, one side is smooth evaluation is also very good, But in my left for nearly a month after the wonderful me hang up and then be a department, fishing, side through, second interview evaluation is good also, then waited for more than half a month, hang (factory is radically different than the interview experience and goose, process chaos, department of phenomenon is very serious), byte side hang (play the worst round of the interview), tencent round technical HR + round face, Hikon round technical pass. After getting the offer from goose factory, I also heaved a sigh and pushed out the subsequent interviews.

I set up my official account and personal blog a long time ago, but I only wrote technical articles occasionally. Maybe I was busy (actually lazy), but I didn’t put them into action all the time. I hope I can share my mind process and update my mood with my insignificant experience

Data structures and algorithms

A point can be sure of is that whatever the technical post, for school recruit, the requirements of the technology stack may not particularly high, but for the flexibility of thinking, the coding ability, is in very, personally think should start as early as possible in algorithm had better form the habit of brush daily questions every day, from the beginning of 2020, I started my algorithm learning in LeetCode, and I also brushed 500 questions back and forth. Although my level is far less than that of ACmer, my solid level is enough to cope with the algorithm test of Big factory.

Develop a good habit of brushing questions, in the long run to improve coding ability is very helpful!

Attached are some incomplete points of personal summary:

  • Sorting (quick sorting, heap sorting, merge, bubble, hill, select, etc.) basic ideas of time complexity stability is best written by hand
  • DFS, BFS, backtracking algorithm
  • Monotonous stack
  • Greedy algorithm
  • DP (e.g. knapsack problem, etc.)
  • LRU (bidirectional linked list +HashMap)
  • TopN problem (massive data to find the NTH largest data)
  • Large file statistics word frequency (dictionary tree)
  • An operation
  • Double pointer
  • The list
  • Binary tree
  • Memorization recursion
  • Binary search
  • Heaps (e.g. large/small root heaps)
  • Graphs (directed undirected graphs, Dijkstra, Floyd algorithms, etc.)
  • Check and set
  • Sliding Window
  • Red and black tree
  • AVL
  • BTree, B + Tree

Add some popular algorithm learning books and github address:

  • Sword offer (very classic, almost covers the common algorithmic interview questions)
  • Introduction to Algorithms (It may be difficult, but this book is also the bible of algorithms)
  • Labuladong’s algorithm cheat sheet: github.com/labuladong/…

Computer network

The importance of network planning is also self-evident. Some incomplete points of personal summary are as follows:

  • New features in HTTP 1.1, 2.0, and 3.0
  • HTTP Common status codes and their meanings
  • HTTPS (handshake, CA, problem solved, symmetric versus asymmetric encryption, etc.)
  • Common HTTP request modes
  • How to optimize HTTP/HTTPS
  • OSI layer 7 and TCP/IP layer 4 difference and its meaning
  • TCP three-way handshake (what and why)
  • TCP four waves (what and why)
  • TCP TIME_WAIT CLOSE_WAIT status
  • TCP short and long connection
  • TCP features and packet structure
  • How does TCP guarantee reliable transmission
  • TCP retransmission mechanism
  • TCP traffic control and congestion control
  • TCP sliding window
  • UDP features, application scenarios, and packet structure
  • DNS resolution and its process
  • Differences between IPv4 and IPv6
  • IP address classification
  • Indicates the subnet mask
  • DHCP protocol
  • ICMP (ping command)
  • MAC address meaning
  • The difference between switches and routers
  • ARP protocol
  • What happens when the browser enters the URL

The plan net has nothing to say, the foundation of the foundation, the regular in the interview, all the way Xie Xiren from the top down black book to chew up is finished ~

The operating system

Some incomplete points from my personal summary:

  • Four features of an operating system
  • User and kernel states (what and why)
  • Context switch
  • The IPC communication
  • How threads are synchronized
  • The difference between process, thread and coroutine
  • Three-state model of processes
  • Process scheduling algorithm
  • There are four conditions for deadlock
  • Deadlock prevention
  • How do I resolve deadlocks
  • Linux IO model (Blocking NON-blocking IO multiplexing signals drive ASYNCHRONOUS IO)
  • Reactor model
  • Zero copy
  • Virtual memory
  • The distinction and meaning of paging section
  • Page replacement algorithm
  • Disk scheduling algorithm
  • Linux file system composition
  • Hard links and soft links

Java based

Some incomplete points from my personal summary:

  • Ask about bad HashMap, HashTable, ConcurrentHashMap
  • Some common collection classes (TreeMap ArrayList LinkedList ArrayDeque, etc.)
  • The equals and hashCode
  • = = and equals
  • How to Understand Object-oriented (Abstract Inheritance Polymorphic Encapsulation)
  • Java Exception Classification
  • Deep copy and shallow copy
  • Seven basic types (Grammar sugar wrapper)
  • What methods does the Object class have
  • The StringBuilder and StringBuffer
  • Intern () method of String
  • Why is String immutable
  • New JDK features (8 lambda Optional 9 String byte[])
  • Java BIO NIO AIO
  • Generics and type erasure

Recommended books: Java Core Technology Volume I/II, Effective Java, Thinking in Java

Personally, I do not recommend watching videos. In terms of knowledge acquisition, I prefer to explore and absorb by myself rather than “feed” learning.

JVM

Some incomplete points from my personal summary:

  • Java memory model, runtime data area
  • Java object creation process
  • Composition of Java objects
  • Class loading process
  • Classloaders and parental delegation models (what, why, how to actively break, pros and cons, how to implement)
  • Heap memory allocation allocation policy
  • The differences and meanings of the four reference types
  • How do I determine if an object is dead
  • Memory leak analysis
  • Common GC algorithms
  • Common garbage collectors (CMS, G1, etc.)
  • Is Java passed by value or by reference
  • Full GC cause and troubleshooting
  • Common JVM monitoring tools (such as Jmap, jStack, etc.)
  • JVM common parameters (such as Xms Xms SurvivoRatio, etc.)

Zhou Zhiming teacher’s “in-depth understanding of Java virtual machine” gnawing up to finish, involving knowledge and operating system some association, for the study of Java, do not stay indicated grammar, hands-on practice, do not have high expectations and low skills.

multithreading

Some incomplete points from my personal summary:

  • Thread pool (Exector Framework, Why not use Executors to create a thread pool? Advantages, how to use, how to configure parameters)
  • AQS principle
  • Common JUC tool classes (CountDownLatch, CyclicBarrier, Semaphore, Atmoic atomic classes)
  • The synchronized keyword
  • ReentrantLock ReentrantLock
  • Spin-locks/mutex
  • Optimistic lock/pessimistic lock
  • Fair lock/unfair lock
  • Read-write lock
  • Java Lock upgrade process (Non-biased lock lightweight lock Heavyweight lock)
  • ThreadLocal (Usage Scenario Principles)
  • Volatile keyword (what is, what is done, instruction reorder prohibition, cache consistency principle, happens-before principle)
  • Java thread state (NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED)
  • Object.wait thread. sleep thread. join thread. yield

Recommended books: Java Concurrent Programming In Action and the Art of Java Concurrent Programming are classics

The Spring framework

Some incomplete points from my personal summary:

  • Ideas, characteristics and principles of Spring IoC
  • Spring things
  • Spring loop dependencies
  • Spring AOP (JDK Proxy CGLib AspectJ Java reflection mechanism, etc.)
  • Spring MVC principles
  • Principle of SpringBoot automatic assembly
  • Ioc AOP Aspects JDBC JMS ORM Web Test
  • Spring transaction propagation mechanism
  • Design patterns used by Spring
  • The life cycle of Spring beans

Learning about the Spring framework must be more practical, read more official documents, not just one-sided technical blogs, look at open source projects, start with a small demo, and gradually understand the essence of the framework.

MySQL

Some incomplete points from my personal summary:

  • Three paradigms of database design
  • InnoDB MyISAM Archive
  • Deadlock innoDB row lock (GAP X S lock)
  • MVCC mechanism (Principle and implementation of undo log consistency view)
  • ACID properties of things
  • The isolation level of the thing
  • Dirty read magic read is repeatable
  • The execution of an SQL statement (binlog redolog)
  • Indexes (clustered indexes, secondary indexes, federated indexes, principles)
  • SQL Statement Analysis
  • Slow query analysis
  • SQL statement optimization
  • Read and write separation sub-table (horizontal and vertical split)

Recommended books: MySQL Must Know must Know

Geek time Dinqi teacher “MySQL actual Combat 45” is also popular, very recommended!

More contact SQL statements, in the interview may let you tear SQL questions, more in the project to optimize SQL, analysis.

Redis

Some incomplete points from my personal summary:

  • Five data types (String, List, Hash, set, zset)
  • Other data types (BitMap Geospatial Hyperloglog, etc.)
  • Redis single-threaded model (Why efficient? Why not multithreading? Redis6.0 the purpose of multithreading?
  • Redis IO multiplexing mechanism (SELECT, Poll, Epoll, Reactor model)
  • Persistence mechanism (snapshots, AOF)
  • Redis memory flushing mechanism
  • How to determine data expiration?
  • Redis things
  • Redis progressive Rehash
  • Redis cluster (master/slave replication, Sentinel, Cluster cluster)
  • How to ensure database cache consistency?

Distributed correlation

There is so much knowledge in the distributed domain that it is almost a bottomless pit, and familiarity with one or two of these frameworks is a plus in an interview.

Incomplete points:

  • CAP principle and BASE theory
  • Distributed consistency (such as ZooKeeper, Paxos, and ZAB)
  • NoSQL (Redis, MongoDB, memocached, etc.)
  • SpringCloud (Service discovery and registration, load balancing, gateway)
  • RPC frameworks (such as Dubbo, serialization protocols such as Protobuf)
  • Message queues (most used Kafka, Alibaba’s RocketMQ, RabbitMQ)
  • Distributed things, distributed locks

Programming tools

  • Git
  • Docker
  • Linux command

Delivery and selection

Golden Three Silver four, golden nine Silver ten correspond to the time nodes of spring recruitment and autumn recruitment respectively. Most of spring recruitment is for the recruitment of interns, and finally, in autumn recruitment, a large number of HC will be occupied by interns who successfully become regular employees.

Maybe for non-undergraduate students who want to enter a big factory, the spring recruitment in the third year is the time when you have the best chance to enter a big factory. Often, the later the interview will be more and more demanding. There is nothing wrong with the old saying that “opportunities are for those who are prepared”.

As far as possible to choose advance batch, many companies in advance batch can be removed from the written test, and this time HC, the interview process is fast, as long as the basic position through the interview.

When it comes to job Posting, try to get a job with a big company. A big company endorsement will make your career go more smoothly.

A little soft power

Put aside the technology, in fact, whether it is personality or emotional intelligence, although it seems to have little effect on the technical post on the surface, but it will actually influence others’ impression of you.

For example, in the elaboration of a problem, some people’s speech sounds very layered, very comfortable, including the communication with the interviewer (or chat nonsense), an easy-going and cheerful personality, neither humble nor arrogant, talk to adjust the person, who does not like?

A senior also told me that regardless of the technical level, the interviewer will also care about your values and personality, if there is a problem with your values or personality will be rejected. A haughty, soft-spoken, defiant candidate, no matter how skilled, may not win over the interviewer.

As a matter of fact, soft power should be gradually exercised in life, communicated with different people, and adapted to different people’s personalities. Humility (not inferiority), open communication, and calm thinking are often the potential factors for success in an interview.

Mentality problem

“Complaining less and taking action is the best way to relieve anxiety.”

Almost no one can live a comfortable life, and it is quite normal to have anxiety, all of which comes from some kind of persistent psychological conflict.

  • Alert side selling anxious news, lengnuanzizhi
  • Do your best, just to let the future of their own do not regret

I really recommend getting into the habit of exercising consistently

Thirty minutes of exercise, three times a week, has the same effect as the most powerful psychoactive drugs.

The benefits of exercise are subtle, physical quality, mentality, appearance, personality will slowly become better, and, at night, you will sleep better.

It was as if all the thoughts and worries flowed away with sweat, and the sleep quality improved, which in itself alleviated anxiety. Exercise releases endorphins in the body, which can greatly reduce anxiety levels. Generally speaking, after a run, although the body is tired, the mind is significantly refreshed.

Give yourself positive psychological hints, do not blindly confident, try to do, do not let yourself regret, no matter what the result.

Said in the last

Keep your feet on the ground and stay humble.

The road of technology is far from ending, and it is just a siege. People outside want to try their best to get into the big factory, middle-aged programmers want to try their best to get out of the crisis, but in any case, those who do technology must keep a humble attitude.

Please forgive me for my humble opinion!

In addition, I have uploaded six PDFS by myself, with over 10W + spread across the Internet. After searching the public account of “Programmer Cxuan” on wechat, I reply to CXuan in the background and get all PDFS. These PDFS are as follows

Six free PDFS