This is handsome to let a reader to write a learning experience, the reader, and handsome relationship is good readers, he added my wechat when the first year, or often harassed me, ask this ask that, and even let me directly to his algorithm to find a bug... However, I see that he is very sincere and always gives my friends a thumbs-up, so I reply him patiently every time (to be honest, often friends thumbs-up is still a bit useful,).
Notice, at that time handsome is still in school, and not that busy, but now handsome is too busy, this kind of question basic does not reply ha.
Literally, I think, I still gave him a lot of influence, I have been said to him, don't need according to the school, because some school learning atmosphere is really bad, programming this trifle, self-study is enough, he was also always regard me as an example, I hired the tencent, also gave him confidence, it may be because, if I can't get big offer, He will think big factory offer thief difficult, but I want to say is, big factory offer, is not imagined difficult, if you start planning from freshman/sophomore year, the study of the study, then really not very difficult.
This reader, at the beginning, I asked him to concentrate on learning algorithm, then he went to learn computer foundation in advance, deeply learned a language, and did projects. Everything pays off. In this year's spring recruiting, he got the offer from Tencent for the first time. This reader is also an ordinary two universities, so I want to share his experience, to the public number of readers to encourage, the following is his article + handsome typesetting and modification.
Hello, first of all, let me introduce myself. I am a junior at an ordinary university in Jiangsu province.
In March this year, I got the offer of internship in Tencent. My first interview in my life was with Tencent. The department was TEG's cloud architecture, and I signed the contract successfully.
The reader also got an offer from Ali
I am of the view
Act decisively. Don't be afraid that you are not good enough or strong enough, I probably started to send resumes at the end of February. At the beginning, I used the way to send my resume to niu Ke net. Unfortunately, I remember that niu ke net public number gave me the waiting for the interview arrangement until now, I have not received the arrangement, the efficiency is too slow, it is easy to lose the opportunity. However, my resume is very simple to use the template of the cow passenger network.
Have an idea to decisively cast, to the official website cast!
** shuai note: ** usually shuai let everyone go to niuke net, more is that we go there to find the internal push, check the company recruitment time, written test time, and finally to the official website delivery, rather than in the niuke net delivery.
For general knowledge to learn, there are:
- Solid basic knowledge
- Computer network
- The operating system
- Language foundation
- The database
The corresponding books can be found here:
Less detours, must read classic computer books recommended (including download method)
About your resume
I write with the rule that less is better. Originally wrote two or three pages, and finally deleted to the last page of content, useless can be deleted, such as what the student experience, basically useless, but a lot of companies to make a resume are required to fill, you can write up.
If you send your resume directly by internal tweet, it is recommended to write less, put the key points and highlights on it, so that HR can directly see it at a glance. It contains certain required information, such as name, school and what kind of knowledge you are good at, such as Redis, crawler, Linux, or deep understanding of JVM, you can also emphasize. The interviewer will ask about your resume.
Project is not too popular, also don't fake, it is best to own really familiar with, the interviewer will ask ever making links, this time if there is no or which may be embarrassing, can write down key points of article content, the use of knowledge, finally can be summarized deficiency, meet with difficulties, how to solve later will be how to improve. Projects don't have to be many, I wrote two, but more will generally be better, if the premise is more valuable.
A resume template can be found here:
Development post 9 sets of resume template (attached download)
About the Basics
Tencent is basically will ask, TEG the some departments, in particular, my three rounds each round of technical from computer network began to ask, and ask it is quite long, must pay attention to the TCP protocol, on three sides by the interviewer let me speak TCP inside of a variety of mechanisms, and then I because of long time interval, say is disorderly, suggested here can arrange an outline, Fill well next, review finally, do not copy net, one is a variety of versions too much, still have not necessarily completely correct.
I have read this book on top down method of computer network on and off for two or three times since I was a freshman, but it is still enough for an undergraduate interview. I also read only this book, I think the self-directed way is good, and CSAPP is not quite the same, the net still cited a lot of relatively popular small examples, such as mailman, family and neighbor interaction, these are interesting, the first six chapters must be read to understand, remember the key points.
At the college level, the book is quite detailed. Interview, for example, there is a high frequency topic, is the process of web page request, could you seen by the surface is rough said what DNS query, three-way handshake, browser, but the problem is in the book on page 326 ~ 331 has a very detailed process, at the same time capsule over the first six chapters of a lot of knowledge, Bob used his laptop to look up the www.google.com home page at school. The more detailed you are, the more the interviewer will rate you.
The operating system
Operating system was my weakness. I struggled to read CSAPP and often felt sleepy. At that time, the school taught me how to calculate it directly and then wrote an English test paper, which was equivalent to reciting the questions for the test. It's hard for me to read, so I chose to take the operating system course of Tsinghua University at station B. The teachers are Xiang Yong and Chen Yu, who are quite friendly to a stupid person like me. Then, it will be better to look at csAPP.
And Linux, it seems that a lot of interviewers will ask you if you usually use Linux to program, and I will just say, although I usually use Linux to launch projects, I probably only know some instructions, such as ps, netstat, and then go to proc to check the CPU status. The interviewer also asked how do you check CPU status, how do you check memory usage, and how do you locate program errors (probably).
And then I start talking about top and utilization and load rate. In the end, the interviewer also asked a lot about Linux. If you don't, just be honest and say no. Don't force yourself to explain and don't be brave. The interviewer also asked me about the disk, RAID1-5, which I think is quite deep for me...
Video recommendation: Computer basic three course video
Others summary PDF: Illustrated operating system, network, computer composition PDF download!
The second interview interviewer asked more about Java, one and three basic did not ask.
In fact, the second interview was the worst one. Many concepts were vague and I hesitated for a long time. For example, he asked me the difference between abstract classes and interfaces. , goes for a while before doing out a few differences, but in hindsight is really very simple, basically is to see it again just memories came out, and probably classes inherit some of the problems, the JVM let me each piece separately, object-oriented, I each say are not very detailed, very sorry, because I really be confident with Java, haven't go to review to see it, But my eyes were high and my hands were low.
So don't give up every knowledge point. Then I talked about the GO language. I have read the coroutine written by Yunfeng C language before, so I have a general understanding of it. The books I read were the core volumes of Java, Thinking in Java, Effective Java, and ACTUALLY I think those three books are quite enough, especially Thinking in Java. And the details can often decide the success or failure.
In fact, it is three books, and there are many that do not need to read, such as Swing programming and so on. Core volumes are very user-friendly for getting started because they are simple. Effective Java comes last, and often optimizes your code to make it safer, more efficient, and more elegant.
I use the art of Java concurrent programming this book, multithreading must be good to learn, the project must be commonly used, and then recommend everyone to take a look at the concurrent programming network, the content inside is very good. Many are foreign handling translation.
In addition, you can review the interview questions: Java interview questions must know must be (with the answer)
Algorithm by brush, brush more sense, but Tencent is quite love to ask sorting algorithm, the basic stability and instability sorting algorithm is to be familiar with, for example, I asked the second interview of the hill sort, I thought the probability is to ask quick sort, and then the hill time complexity I said wrong ，，，，
The good news is that I'm familiar with the rest: heap sort, quicksort, merge sort (I think this is important, because Java sort is quicksort + merge sort), and merge sort is stable sort. Merge sort algorithm based on the extension of a lot of, there are other big factory written exam algorithm is merge.
Algorithm, if time is sufficient, for example, I was a freshman winter vacation began to write algorithm, I am each problem, and then see the problem solution, often only write two or three a day. So far, the total number of brush questions leetcode + cattle customers, plus some OJ platform, is about 600+ questions, but it is a pity that Tencent interview in the algorithm is not much... First, you need to be familiar with each of the data structures, such as linked lists, hash tables, trees, graphs, stacks, queues, and heaps.
(1) list, what reverse list, circular list, list sorting algorithm, such as LRU, is to use a two-way list + HashMap to achieve. Don't look at the foundation of the list, but a lot of big factory is quite like the list, such as bytedance, such as skip list, is the bottom implementation of The ZSET in Redis.
(2) hash table, it is best to understand the underlying implementation, it is recommended to see the source code, must be clear how to achieve. It's very, very useful. For example, memorizing recursion in cases where arrays don't work is to use map, HashSet, TreeSet, and so on. Hash tables are also very useful, and this is basically the most commonly used data structure.
(3) tree, there are many trees, binary search tree, AVL tree, red black tree (rotation is not as frequent as AVL), dictionary tree (sensitive word filtering), leetcode tree topic, do not hesitate, directly brush, Tencent this written test also has a tree topic. And it's very easy to vary, the tree is basically recursion, but there will be questions that require non-recursion, and in this case you need to use the stack and the queue to assist, such as iterative preorder traversal. There were so many tree algorithm problems that for a while the leetCode weekly contest was always a tree for the third problem.
(4) Graph, the graph is investigated less frequently than the above, such as directed graph, undirected graph, BFS and DFS, topological sorting, Dijkstra shortest path, Krusal minimum spanning tree and so on.
(5) stack, usage is also much, feel a lot of cases and string hook, more difficult is a monotonous stack, a year in addition to a very difficult problem, is to use monotonous stack.
(6) queue, usage is also a lot, such as topological sort, binary, BFS and so on.
(7) heap, many times have magic, such as topological sort, Top K problem.
You must be familiar with these data structures because they are so widely used. When I was a freshman, I used C language to write some difficult data structures such as dynamic dilatant stack, queue, red-black tree, Fibonacci heap, binary heap, directed graph (including various algorithms), AVL tree, etc. If I had enough time, I could write them for fun and practice my coding ability.
Important algorithms are: dichotomy, recursion, memorized recursion, backtracking, breadth first, dynamic programming, mathematics (with a lot of brain teases), sliding Windows (double Pointers), sorting algorithms, programming (such as designing LRU, LFU).
Here recommended a big brush problem notes: two months to get 70K star, the previous byte big god brush problem notes
That sums up most of the algorithms
If you write the background that is most likely to deal with the database, here recommend you learn Mysql, Redis, mongoDB. MySQL can learn too much, first to write a good SQL statement, here to pay attention to the use of indexes, reduce table joins, improve SQL efficiency, etc., leetCode directly with SQL practice, brush dozens of lines is enough.
Then go a little deeper and learn about engines, indexes (cluster indexes, secondary indexes, B+ trees, Hash indexes, leftmost matches, etc.), ACID properties, etc. It is recommended to pay attention to the index because it is really interesting and because it is really important...
About NoSql, it can be seen that the three interviewers dig deeply. They asked me about the project, the database, the operating system and the network. He asked me if I knew about MongoDB, I said I had used it but I didn't know much about it. Then Redis asked about things like master-slave, sentry, election mechanics, subdivision clusters, etc. Fortunately, I redis can learn, all the answers.
Redis is definitely worth studying seriously.
About the interview
I put in an early vote, so I went straight to the interview. 3.5 To the notice, I just came to Nanjing to see my girlfriend, the results of the evening notice came, so the evening together in Nanjing to eat a boring meal, obviously the food is very good...
Handsome note: if you can, be sure to participate in advance approval.
In the first interview in Changzhou, the interviewer was very easygoing and wore earphones. I was in the middle of introducing myself, and then the Internet was disconnected. So he didn't hear the next self-introduction and asked me to repeat it with a smile. Come up directly ask computer network, also not nervous, fluent answer finished, remember the question is TCP and UDP, three handshake, why can't two handshake, browser input URL, there are also remember, ask a lot of computer network, and then seem to have no interest in other directly asked the project.
Q: Nginx, distributed lock implementation, distributed traffic limiting implementation, token bucket algorithm and leaky bucket algorithm, in addition to these algorithms you have any ideas, the advantages and disadvantages of these algorithms, what do Redis do, advantages? Asynchronous blocking queues? Compared to Kafka? Chat system, why the two projects use MQ is different, MQ contrast, heartbeat mechanism and election mechanism.
Probably these, in general answer can, also pretty fluent, finally asked the interviewer strengths and weaknesses, he said the advantages is more handsome, I began to think I said not how... And then the next morning I got a second interview.
At 8 o 'clock in the evening, I was waiting for the phone call while drinking red Bull. In the second interview, the interviewer had a mature voice and a formal attitude, but he was very nice and introduced himself seriously. I didn't even hear the TEG department at the beginning... .
Then 2 face actually says is not so good, the beginning is Dui meter network, there is a problem with one side the interviewer asked, so I told him in a the interviewer asked, and then he jumped over the deep impression is a status code, I said something from 1 to 5, which I said is wrong, I said I often see in the project Method not allowed, I said 403. It's 400... Very embarrassed.
Then I deprecated Java foundation, JVM, sorting algorithm, I said really not very good, because overconfidence... On the contrary, this side of the project does not ask much. Then understand my personality, learning attitude, a bit like HR side, I am nervous in the middle of the time also comfort me, said nothing to drink water.
Then some can not remember also patiently wait for me, and then chat about the first project wechat pay how to do, in fact, there is no technical content... I forgot about some other project sites. I talked about the Go language. Then I did a stupid thing. I asked the interviewer if I was coming next. The interviewer told me it was a bad thing to ask in any company.
Remember... Finally, I said that I was generally quite good, maybe some foundation forgot, but other aspects are still good. I was still pretty depressed when it was over, thinking I must have died.
On three sides
Then on The afternoon of March 11, I received a call from shenzhen headquarters while lying on my dormitory bed. It was a young man's voice. Later, I knew it was the head of the department. .
After making an appointment for the three technical meetings, I chose Sunday 14th and arranged the morning, so I waited happily (or painfully).
Cafe in school interview, feel oppressive feeling is very heavy, first inspection meter network, a lot of problems or on the surface via, combined with the actual scene, feeling also is in the digging depth, Dui my project, ask very detailed, from distributed current limit, then solr, redis partition cluster, Linux, positioning program, check the state of the CPU, etc., Master/slave replication, sentinel, etc., B+ tree, database.
Then say our department is also responsible for the database, and then I wow, good job (really bad), then the operating system, the disk, I confess the operating system is the place where I relatively weak not to XiaWen, also asked the stored separately calculated, lock, orientation function and nearby scenic spot nearby people realize, overall feeling in the mining depth.
Then asked my interests and hobbies, I said playing the piano and watching anime, attack the giant have you ever seen, he said you zha don't say the blade of the ghost, just I finished the winter vacation ghost out... Finally, I asked which department it was, and he said TEG. To be honest, I was very happy, because I really like TEG.
At the end of the HR interview on March 16, I have to say that Tencent is very efficient and will enter the next round almost every other day. HR also talked for a long time, asking questions from various aspects, and then asked me to talk about the process of the first project from beginning to end. I talked a lot about technology and team, problem solving, code specification, and my own experience and family situation.
Finally, a few days later, I called the verbal offer, talked about the salary, and decided on the place and the internship time. Of course, I was so happy. The electronic offer came the next day, so I signed happily.
The three interviewers are all very nice and friendly. The efficiency of Tencent is really great. In general, the interview experience is very, very good.
Handsome ground note: have to say, the interviewer of Tencent really praise.
In addition, you can review the interview questions: Java interview questions must know must be (with the answer)
Something to say
First of all, I would like to thank some people, such as my family, who have always supported me, provided me with good conditions and cared about my health.
Then my girlfriend, who accompanied me all the way to the interview, silently accompanied me in every round of interview, comforted me and encouraged me when I was in a bad mood, and would go on.
Then is the elder brother (public number handsome to play programming), since my freshman has been to help me, I sometimes sent an algorithm problem, after a while to give me a detailed solution, dozen words are super, usually very busy also did not perfunct me, take the trouble to help me answer, the public account content is also very good, full of dry, thank you very much.
Then my roommates, a roommate and brother, taught me my first C language program. Looking at the little black box, I felt a sense of achievement spontaneously. He also gave me a lot of help on the route. I remember when I was a freshman, I could not learn pointer, he scolded me and then taught me. I was really scolded, and my learning attitude was also infected by him.
Now although people in the UK, but also keep in touch, exchange learning, help each other. I also have a roommate who is the best roommate in our school. We have experienced a lot of time together, worked together, played together, and accompanied me through difficult times. We have a deep relationship.
I want to write this article to tell some new friends, no matter the school is good or bad, as long as you believe in yourself, never give in and always think you can, then you can, school is really not very important, the important thing is how you are. I used to be very confused, thinking how could I go to a big factory from a second school, but in fact, don't think so much, life is the same, just keep moving forward.
Say something nice at the end
Both for the autumn, also no matter to what kind of offer, this is definitely not an end, but life is also an important starting point, in order to let us more options later, we have to continue to study, only continuous learning, can we become stronger, of course, the so-called learning, absolutely is not limited to programming knowledge.
Finally the summary of the books to everyone: less detours, must read classic computer books recommended (including download method)