(3 years + offer) Huawei technical post interview initial interview + comprehensive interview experience summary

Interview on October 10th.
Receive notification of entering the resource pool on October 17th.
Receive an offer message on October 24th and notify you to sign on the 27th (estimated as a two-party agreement).

If Tencent’s interviews are spending money like dirt (after all, each interviewer is equipped with a separate room), then Huawei is quitting luxury and preferring frugality. Two large conference halls are filled with interviewers, one of which is the initial interview area, and the other is the comprehensive interview area. Interviewers in the initial area will come to the waiting area and ask us to interview one by one.
The interview table is in a one-to-one format. Although the technical post's interview notification text message did not inform that you want to bring a resume, you still bring a copy to avoid need halfway. (It turns out that this is a wise choice)

Insert picture description here

First face

After the first interviewer clicked on my name, I followed the interviewer to his position.

The interview process is similar to that of most Internet companies. First, let yourself introduce a relatively satisfactory project. (Maybe I want to learn about our skill level through this project) When I was preparing for an interview, I actually struggled with this question. Because in my project, there are two projects that I am more satisfied with. The first one is mainly for background, and the second is mainly for virtual environment and data interaction.

"I have two projects that are relatively satisfactory." I first throw out this sentence, hoping that the interviewer will give me a chance to talk about both projects. "Let me talk about the first class change we did at the time. The platform was originally a course project at the time, but on top of this course project, combined with the urgent need to change courses in the school at that time, we made such a course change platform", (first put forward the project purpose), "then this project is probably realized "What kind of function" (throwing out product functions), "I am mainly responsible for back-end development and database interaction functions in the project" (say the role in the project), "The structure of the entire project is roughly as follows..." (How to realize the project), I drew the interviewer all the system architecture and data flow methods in the backend on the draft with pen and paper. At the same time, I explained all the important technical points involved.

According to the description process that I have organized before, I described the entire course-changing platform project. Sometimes the interviewer will ask about the technical details in the middle, but it is not very difficult. It may be because I did not use the three major frameworks of "SSH", but used The underlying development is pure JSP, so the interviewer is not very good at asking questions.

But what is interesting is that when I introduced the project to realize real-time chat, the interviewer asked two small questions, which I did not encounter in the previous project, but may encounter problems in actual production products: First, Our real-time chat is direct P2P, which requires both parties to be in the same subnet. If both parties are not in the same subnet now, a mobile client A on the external network can access the backend server B. At this time, a web client C also The server can be accessed. At this time, A and C are different from each other. Now what if we still want them to communicate; second, consider how to deal with when a large number of users access the background server at the same time.

For the first one, I first considered using the server as an intermediary, but at that time I always thought that two chat messages might cause pressure on the server, so I was hesitant to use the background server as a relay, and how to operate as a relay. However, the interviewer reminded me a little bit that I can use the server as a relay. At this time, I suddenly realized that as long as the server received it, it would immediately forward the message without going to the database. At this time, I have not been until why I used to analyze the WeChat chat service, will send all text messages and picture messages to the WeChat backend server, and simple direct P2P conversation, mainly to overcome network problems

The second one is not difficult. Considering the load balancing in cloud computing, I roughly talked about the following ideas, choosing one host as the load balancing scheduling machine, and the others as working machines.

The first project took about ten minutes. I don’t know if it’s because I just started the interview or my project really has an appetite for the interviewer.

After the first project was over, the interviewer turned over my resume, "Would you like to talk about your other project?" I had a blabla talk.

"What are the difficulties?" "What problems did you encounter in the project?"

After speaking, the initial interview is basically over, and the whole process is very harmonious (maybe the interviewer I met is more nice). Finally, let me ask a question. I probably asked what kind of job the post will be in the future, and the interviewer told me about it. (Cloud computing development post I posted, PaaS direction)

Comprehensive interview

After the initial interview, the interviewer directed me to the comprehensive interview area to wait for the comprehensive interview.

The overall feeling of the comprehensive interview is similar to that of the first interview, but during the comprehensive interview, the interviewer first asked about my hometown, job intention and ideal place of work.

I am not picking here, because as a foreigner, since I went to study in the province, I don’t have too much worries about where to live and where to work.

Then the interviewer asked me some questions about my grades, family situation and so on, and then started asking about my project experience. (Although I don't quite understand why the comprehensive interview will ask the question about the project experience that I asked in the first interview) I won't repeat it here, where is the same, I roughly exchanged the content of our project with the interviewer.

After this piece of content is completed, I feel that the entire process of the comprehensive interview is basically over. The interviewer started to introduce to me the work location of their project team (Shenzhen), work content, and some usual tasks, and also introduced me some future jobs. The basic knowledge that needs to be understood in this article-such as docker container, k8s, some domestic and foreign public cloud operating principles, let me learn by myself in advance after I go back. (Here I am starting to feel the drama)

In fact, there is not much difference between the overall and the initial level, but it still has something to do with the interviewer, because among my fellow teammates, some of them were asked about some relatively low-level knowledge points, such as the characteristics of Java. Classes, I have also been asked about the advantages of object-oriented and so on (I haven't been asked about these).

Digital processing

Title description: Give an integer of no more than 5 digits, and perform reverse order processing, required

(1) Find out how many digits it is

(2) Output each number separately (separated by spaces)

(3) Output the digits in reverse order (only spaces are separated between digits, and there is no need between negative signs and digits)

Input description: an integer with no more than 5 digits

Output description: 1. Integer digits 2. Space interval output result 3. Inverted integer

#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main()
{
    
    
   int iInput;
   int iNum=0;
   char* strRst="";
   int iOutput=0;
   cin >> iInput;
   int k = 0;
   int temp;
   int flag;
   int iTemp;
   if (iInput < -99999 || iInput > 99999)
       return -1;
   if (iInput < 0)
   {
    
    
       flag = -1;
       iInput = -iInput;
   }
   else
       flag = 1;
   temp = iInput;
   vector<int> resStr;
   while (temp)
   {
    
    
       ++iNum;
       iTemp = temp % 10;
       resStr.push_back(iTemp);
       iOutput = iOutput * 10 + iTemp;
       temp /= 10;
   }
   cout << iNum << endl;
   if (flag == -1)
       cout << "-";
   for (int i = iNum - 1; i >= 0; --i)
   {
    
    
       if (i == iNum - 1)
           cout << resStr[i];
       else
       {
    
    
           cout << " " << resStr[i];
       }
   }
   cout << endl;
   iOutput = flag*iOutput;
   cout << iOutput << endl;
   system("pause");
   return 0;
}

IP address intersection judgment

Title description: Enter four IP terminals, the first two are the start and end addresses of the first IP segment, and the last two are the start and end addresses of the second IP segment, to determine whether the two IP segments overlap

Input description: Input 4 IP

Output description: If there is an intersection, output Overlap IP; if there is no intersection, output No Overlap IP

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cassert>
using namespace std;
int *dec2bin(int decnum)
{
    
    
   int i, a, *b = {
    
     0 };
   a = decnum;
   for (i = 7; i >= 0; i--)
   {
    
    
       b[i] = a % 2;
       a = a / 2;
   }
   return b;
}
int ipToInt(char *ipString)
{
    
    
   assert(ipString != NULL);
   int i = 0, j, n, count = 0, return_num = 0;
   char *tmp;
   int *tmp_num=NULL, *num=NULL, *d2b;
   char *s = ipString, *s_tmp=NULL;
   if (*s == '.')
       count++;
   count++;
   if (count != 4)
       return 0;
   while (*s != '\0')
   {
    
    
       if (*s != '.')
       {
    
    
           n = s - s_tmp;
           tmp = (char*)malloc(n*sizeof(char));
           memcpy(tmp, s, n);
           tmp_num[i] = atoi(tmp);
           d2b = dec2bin(tmp_num[i]);
           for (j = 0; j<8; j++)
               num[8 * i + j] = d2b[j];
           s++;
           i++;
           s_tmp = s;
       }
       s++;
   }
   if (*s = '\0')
   {
    
    
       n = s - s_tmp;
       tmp = (char*)malloc(n*sizeof(char));
       memcpy(tmp, s, n);
       tmp_num[i] = atoi(tmp);
       d2b = dec2bin(tmp_num[i]);
       for (j = 0; j<8; j++)
           num[8 * i + j] = d2b[j];
   }
   for (j = 0; j<32; j++)
       return_num = return_num * 2 + num[j];
   return return_num;
}
int main(void)
{
    
    
   char *s1, *s2, *s3, *s4;
   s1 = new char;
   s2 = new char;
   s3 = new char;
   s4 = new char;
   cin >> s1 >> s2 >> s3 >> s4;
   int n1, n2, n3, n4, i;
   n1 = ipToInt(s1);
   n2 = ipToInt(s2);
   n3 = ipToInt(s3);
   n4 = ipToInt(s4);
   if (n4<n1 || n3>n2)
       cout << "No Overlap IP" << endl;
   else
       cout << "Overlap IP" << endl;
   system("pause");
   return 0;
}

Number sort

Title description: There are many positive integers in a given string. It is required to sort these positive integers, and then return the positive integers at the specified position after sorting. Sorting requirements: According to the integer composed of the last three digits of each positive integer, proceed from small to small Large sorting (1) If there are less than three digits, compare according to the integer composed of the actual digits (2) If they are equal, sort according to the original order in the input characters

Explanation: (1) The string ends with'\0' and contains only numbers and spaces (2) The positive integers in the string are separated by a single space, and there are no spaces at the beginning and the end of the string. (3) The format of positive integers is decimal, and the size is 1. ~1000000, the number of a positive integer starts from non-zero

Input description: The first line is an integer string containing several integers, separated by spaces, the second line is an integer, which is the specified position

Output description: output the integer at the specified position

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
int find_string(const char* input_string, int serial_number, int output_string_max_length, char* output_string)
{
    
    
   int size = strlen(input_string);
   vector<int> vec;
   int tmp = 0;
   for (size_t i = 0; i <= size; ++i){
    
    
       if (input_string[i] == ' ' || i == size){
    
    
           if (tmp == 0){
    
    
               return -1;
           }
           vec.push_back(tmp);
           tmp = 0;
       }
       else{
    
    
           tmp = tmp * 10 + input_string[i] - '0';
       }
   }
   int n = vec.size();
   for (int i = 0; i < n - 1; ++i){
    
    
       for (int j = 0; j < n - i - 1; ++j){
    
    
           if (vec[j] % 1000 > vec[j + 1] % 1000){
    
    
               swap(vec[j], vec[j + 1]);
           }
       }
   }
   if (serial_number > vec.size()){
    
    
       return -1;
   }
   char num[11];
   sprintf(num, "%d", vec[serial_number - 1]);
   int len = strlen(num);
   cout << num;
   return 0;
}
int main()
{
    
    
   string s1;
   getline(cin, s1);
   int t;
   char *input_string = const_cast<char *>(s1.data());
   int serial_number, output_string_max_length=0;
   char* output_string = NULL;
   cin >> serial_number;
   t=find_string(input_string, serial_number, output_string_max_length, output_string);
   system("pause");
   return 0;
}

to sum up

In general, Huawei’s interview was not as difficult as I imagined. Resume preparation is very important, especially project experience, personal blog, github and other content that is easy to add points, it is best to write it. The two interviews went smoother than my peers. To a certain extent, the resume gave me points.

I added a lot of Java-related project experience to the project, although it is not very important, but at least let the interviewer understand that I have a lot of experience in Java.

Don’t be too nervous during the interview. In the previous Tencent interview, I was obviously very nervous, and my mind was a bit mad. However, this Huawei interview feels a little more comfortable. I don’t know if it’s because I have gone through several interviews, or because the interviewer led the comparison. it is good.

Finally, it is important to be able to clearly describe what you want to say in time. After all, communication with colleagues will be indispensable in future jobs. In addition, a clear description will help the interviewer understand you and understand your project. Therefore, whether you are telling the interviewer about your project, answering the interviewer’s questions, or want to express your views, you need to be clear. If you are stuck for a while, you can try to pause, sort out your ideas and then re-describe. As long as the interviewer can understand you, some pauses are generally not a major problem.

In view of the fact that many people have been interviewing recently, I have also compiled a lot of interview topic materials here, as well as experience from other major companies. Hope it helps everyone.

Latest finishing interview questions

Friends in need can add group 1149778920 secret code: qf

Insert picture description here

Real interview experience

Insert picture description here

The latest compilation of interview documents

Insert picture description here
The above is the whole content of this article, I hope it will be helpful to everyone's study, and I hope you can support it. One-click three consecutive!

Guess you like

Origin blog.csdn.net/S11035762/article/details/109288881