In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)06/02 Report--
I left my last company in December last year, and until March this year, I was basically interviewing for a moderate degree.
First explain the background: coordinate Shanghai, do technical development, I am interviewing for the position of linux server development, the most inclined position is the main server development program or technical manager. I was also an interviewer for several companies, because I was faced with getting married in the next few years, and I was technically in a bottleneck period. Although I got a lot of offer, I wanted to make a comprehensive comparison, so I attended a lot of interviews. I have been to the following companies: Tencent, Baidu, ele.me, iqiyi, 360, Ctrip, JD.com, Huawei, bilibili, Shanghai Gold Exchange, Oriental Fortune Network, zilliz, head Group (the one that does Wireless × ×), Himalayan listening, Fengguo Network, Wall Street News, Wande Finance, Huizheng Finance and Economics, teasing House Network, Chaoyang Sustainable, and several small-scale companies or startups.
In order to avoid unnecessary disputes, I will not mention the specific name of the company below. I will try my best to write down the details of the technical interview in detail. I hope it will be of reference value to everyone. There are roughly three situations in the technical interview:
one
Experience sharing
First, represented by Baidu and iqiyi, mainly data structures and algorithms.
The first is to briefly understand your previous work experience and project experience, and then there is the topic of algorithms and data structures, specifically related to the following:
01
Quick sort
Quick sorting (including algorithm steps, average algorithm complexity, best and worst case), some people say that the school enrollment should write the algorithm, I am a social recruit, so describe the algorithm steps.
02
Binary search algorithm
Write binary search algorithm, although this is a social move, but generally not difficult, so the interviewer is required to write it. But many companies, for example, don't let you write algorithms directly, but ask questions in a specific scenario, and then remind yourself of binary search, such as finding the square root of a number.
03
Linked list
Linked lists, common interview questions include the algorithm for deleting a node in a linked list, the reversal of a single linked list, and the intersection of two linked lists, which must be written completely.
04
Implement some basic functions by yourself
Implement some basic functions on your own, such as strcpy / memcpy / memmov / atoi, by the same token, these must be written completely and efficiently, such as dynamically allocating heap memory in your implementation.
The key points of points 3 and 4 are generally to examine your code style and the handling of boundary conditions, such as judging whether the pointer is empty, do not deliberately ignore this situation, even if you know it, as long as you do not write, the interviewer generally thinks that your thinking is not thorough and the fault tolerance rate is low. For example, for the inversion of a single linked list, the final return value must be the inverted header node, so that a linked list can be referenced, which are the key points that the interviewer wants to consider.
05
Hash table
Hash table, the details of the hash table is very demanding, such as hash table conflict detection, hash function common implementation, algorithm complexity; for example, Baidu two sides asked me to write a hash table insert element algorithm, the element type is any type.
06
The concept and details of AVL tree and B tree
The concept and details of AVL tree and B-tree, such as asking the implementation principle of the index of mysql database, is basically tantamount to asking you B-tree.
07
Red and black tree
Red-black tree, which is basically a necessary data structure, includes the concept of red-black tree, average algorithm complexity, best-and worst-case algorithm complexity, left-right rotation, color transformation. Common algorithmic routines for interviewers are: are you familiar with C++ 's stl? You say you are familiar with it. Have you used ok,stl 's map? Yes, ok, how does map work? A red-black tree, ok, what is a red-black tree? This is how the red-black tree begins. Java's is similar.
Second, take ele.me, bilibli, Himalayas, 360and Ctrip as representatives, taking into account the algorithm data structure and other development technologies.
The algorithm and data structure section has been mentioned above, and here are some other technologies, which roughly include the following:
01
The basic C++ problem
Take the C++ language as an example (not that friends of C++ developers can skip this point), the first kind is the basic C++ problem. The common ones are the role of virtual keyword in C++ 's inheritance system (such as why destructors are declared as virtual functions in inheritance relations, and what is the impact if they are not declared as virtual), the order of construction and destructors when involving parent and child classes, and the arrangement of class member lists in address space when multiple inheritance is involved. The role of the static keyword, the use of several conversion characters such as static_cast / reinterpret_cast / dynamic_cast, etc. The most frequently asked questions are the layout of virtual tables, especially the spatial structure distribution of each object when diamond inheritance (B and C inherits An and C). For example, ask D how many virtual tables there are, and the member spaces of B and C in D are arranged.
In addition, if you are applying for a position that uses C++ development, many companies will ask you something about Category 11 (or ask the boost library, it's basically the same). If you haven't used it, just say don't install X if you haven't used it. I'll also list some of the common technology libraries that you need to master (readers in JAVA and other languages can ignore it):
Auto keywords, for-each loop, right value and mobile constructor + std::forward + std::move + stl container added emplace_back () method, std::thread library, std::chrono library, smart pointer series (std::shared_ptr/std::unique_ptr/std::weak_ptr) (the implementation principle of smart pointer must be known Preferably implemented by yourself), thread library std::thread+ thread synchronization technology library std::mutex/std::condition_variable/std::lock_guard, lamda expression (JAVA now also often examine the role of lamda expression), std::bind/std::function library, other is the use of some keywords (override, final, delete), and some details such as JAVA can be given in the class member variable definition at the initialization value.
02
Network communication problem
Network communication problems, such as the hierarchical relationship of the protocol stack, the [details] of three-way handshakes and four waves, pay attention to the details I'm talking about, such as CLOSE_WAIT and TIME_WAIT status (bilibili asked such a question, you can feel: an and B have never sent data to each other after establishing a normal connection. At this time, B suddenly restarts the machine. What is the tcp status of An at this time? How do I eliminate this state in the server program?
Wande asked about the traffic congestion and control mechanism, Tencent asked what fields are common in tcp and ip headers), the behavior of blocking and non-blocking socket on send and recv functions, the writing of asynchronous connect functions, the usage of select functions, the difference between epoll and select, basically, as long as you ask about epoll, you must ask the difference between horizontal mode and edge mode of epoll; the use of some socket options, and the difference between nagle / keepalive / linger and other options The difference and application scenario of tcp / udp; how to design communication protocols to avoid sticking packets; the difference between get and post methods of http protocol (a deeper question will let you draw the format of http protocol, refer to the explanation of http protocol format in this article: http://blog.csdn.net/analogous_love/article/details/72540130) Windows users may ask questions about the completion Port Model (IOCP) and network communications. I opened a special Zhihu live to systematically summarize it. Interested friends can see here: https://www.zhihu.com/lives/922110858308485120 and here: https://www.zhihu.com/lives/902113324999778304.
In a word, the problem of network communication can be made as clear as it can be, or at least the details of the usage of various socket API in the tcp application layer.
03
The principle of the operating system
For example, after the section structure of the elf file under linux is mapped to the process address space, which segments correspond to each other? there are also related questions about where the global variables and statically are stored in the process address space. The difference between the stack and the stack, the structure of the stack and the details of the stack should be particularly clear, because some companies with high technical requirements will ask more in-depth. For example, JD.com 's side is that he asked me to write a sum function from 1 to 100, and then asked me to write the assembly code for this function (JAVA developers may ask you to try to write some JVM instructions) If you are not familiar with the structure of the stack (such as the stack order of function parameters, the layout of function local variables in the stack, the position of stack frame pointers and stack top pointers), you will not be able to answer this question correctly. Stack questions may be asked in the common way of function calls. Common function calls have the following cdecl/stdcall/thiscall/fastcall differences, such as why functions with indefinite parameters such as printf can not use _ _ stdcall There is also the connection and difference between processes and threads. The most frequently asked questions are some synchronization techniques between threads, such as mutexes, semaphores, condition variables, etc. (there are also events, critical sections on Windows, etc.). You must be familiar with the specific level of API function use. from another point of view, this is the most commonly used thing in coding in our actual work, if you can't even use this skillfully. Then you must not be a qualified developer. This kind of question can also be extended to why it is deadlock and how to avoid deadlock. Common communication techniques between processes also need to be mastered. Common communication methods (under linux) include shared memory, anonymous and named pipes, socket, message queues, and so on. Pipeline and socket are two research points that must be mastered in depth (a bit duplicate with the above network communication). Under the linux system, you may also ask what is a daemon process, how to generate a daemo process, what is a zombie process, and how to generate and eliminate a zombie process (bilibili asked).
CAS mechanism (ele.me asked both sides).
04
Used open source technologies
The fourth category is a used open source technology, such as redis; network library libevent, which represents nosql technology, and something about databases such as mysql. This generally does not make rigid requirements, but what must be emphasized here is redis, proficient in the use of redis and even studied the redis source code, now generally do background development of the technical standard or indispensable part, redis-based interview questions can not only talk about algorithms and data structures, but also talk about network frameworks and other things. Almost 90% of the companies I interviewed asked about redis, but in different depths, such as the Himalayas asked about redis's data storage structure, and rehash;bilibili asked about redis's transactions and clusters.
Third, only ask about the business or project experience you have done.
In fact, these companies do not have high technical requirements for hiring (except senior and executive-level development). As long as your past projects match your current position, you can come and work directly, and of course you won't be paid much. For example, game companies will care about whether you have a certain type of game development experience, stock companies will care about whether you have securities or trading system development experience and so on. My experience is this kind of company, if you can go, you can go, if you can't go, you can accumulate interview experience. Business development can be found everywhere, and companies that really attach importance to technology should be a matter of concern for the vast number of people who do technology, especially for junior and intermediate developers.
Fourth, unreliable companies.
There are roughly four categories that I have come across:
01
Install X-bluff type
The first category: install X-bluff type.
The interview process is lengthy and tedious, for example, it claims to send one interview invitation for every hundred resumes, and one offer for every hundred interviewees, which is called Silicon Valley style. I interviewed a company like this, first a long round of phone interviews, then five rounds of technical interviews, the first three rounds were leetcode questions, and then the next few rounds of interviews. The interviewer asked the interviewer from the interruption of the basic operating system, GDT, LDT, table paging mechanism to the architecture of the upper layer with high concurrence of massive data. It was not nice to say that it was really from outer space to the inner uterus, and finally when asked what the specific position was doing, he was either secretive or the prototype revealed. Or when discussing salary, you either look embarrassed or paint all kinds of cakes, but you don't actually get much salary.
02
Buddha nature Corp.
The second category: Buddha nature company
After the interview, the interviewer smiled throughout the interview, and the interviewer who asked you the question you answered agreed, but in the end, you failed. I guess either the company is not very short of people and want to wait and see if there are suitable talents; or the salary offered in the recruitment information can not be paid.
03
Granny foot-binding company
The third category: granny foot-binding company
Its characteristic is the interview cycle is long, often the first round interview informs you to pass, lets you go back to wait for ten days and a half months, informs you to come to the second round interview, the interview request wears the formal dress, takes each kind of document, before the interview must first check your × ×, the educational background certificate, even is the CET-4 or CET-6 card and so on, the trouble is extremely troublesome, even if you pass the final face all the way, the salary also can not give much. Everyone has to support his family and is busy looking for a job. Who has the time to spend ten and a half days with you?
04
Companies with no respect for human types
The fourth category: companies with no respect for people.
When I say disrespect for people, I don't mean to treat you personally during the interview, but not to arrange interviewers randomly according to your working years and experience. for example, if you have worked for ten years, you interview for a position of technical director. the other company arranges a department employee who has worked for less than two years as the interviewer, it is understandable if the interviewer goes through the formality But there is no need to wrestle with you about technical details such as binary shift and whether modern compilers should add the virtual keyword to the subclass destructor. Another category is to deliberately ask tricky questions, or the audience is absent-minded, playing with your phone, casual interviewer, such as asking you how many fields are in the tcp protocol header and what each field is for. My experience with this kind of interviewer is to either decline politely or go back directly.
two
Attention to detail
Here are some details to pay attention to during the interview:
01
Take a long-term view
First, if your working years are not long, especially if you are eager to have certain technical attainments, then your first consideration should be whether the new unit will be conducive to your technical growth, rather than two identical jobs. The difference in salary is three or five thousand, five or six thousand. If you want to change careers (for example, from client to server, from C++ to JAVA), don't reject the labor pains because of sudden low salaries, but take a long-term view.
02
May end up not being admitted because the salary is not up to standard.
Second, although some companies say in their job postings how much they can give you, even if you have a perfect interview, you may not be accepted in the end because your salary is not up to standard.
03
Accumulate experience through multiple interviews
Third, for some companies that you don't want to go to at all, it's not a bad thing to go to an interview to gain experience if you have time.
04
Watch out for the technical ceiling
Fourth, during the interview, you are also investigating the interviewer. In general, the questions asked by the interviewer are about 80%. Such a company can consider joining the job. If you go in, you may have some technical improvement. If you kill the interviewer's questions, your technical ceiling may be there, too.
05
Talk about the content of the position in the future
Fifth, talk about your future position during the interview and avoid guest starring in jobs you don't want to do.
06
No interview questions try to communicate with the interviewer
Sixth, do not directly deny yourself when you encounter interview questions that you will not know. You can try to communicate with the interviewer, or ask for some hints or ideas.
07
Don't underestimate the mathematical intelligence questions in the written test.
Seventh, do not underestimate some mathematical intelligence questions in the written test, and answer them carefully. Isn't the algorithm also a mathematical intelligence problem?
08
Be confident.
Eighth, be confident, everyone's experience and experience is unique, during the interview, some specific questions can not be answered, do not care too much.
I hope it will be helpful to the reading friends. Because of the limited ability of personal experience, what is said may only be the words of a family, and if it is not appropriate, please gently make suggestions.
Welcome to the official account "easyserverdev". If you need my help with any technical or professional problems, you can contact me through this official account, which not only shares the experience and stories of high-performance server development, but also provides free technical answers and career answers for the majority of technical friends. If you have any questions, you can leave a message on the Wechat official account directly, and I will reply to you as soon as possible.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.