10月10號面試
10月17日收到進入資源池通知
10月24日收到offer短信,通知27日簽約(估計是兩方協議),
如果說騰訊的面試是揮金如土(畢竟每個面試官都配了一件單獨的房間),那華為就是戒奢寧儉,兩個大會議廳坐滿了面試官,其中一個是初面面試區,另一邊是綜合面試區,初面區的面試官會來等待區一個一個叫我們過去面試,
面試桌采取一對一的形式,技術崗的面試通知短信雖然沒有通知說要帶簡歷,但是仍然帶了一份以免中途需要,(事實證明這是一個明智的選擇)

初面
初面面試官點到我的名字之后,我跟著面試官去他的那個位置,
面試流程和大多數互聯網公司流程差不多,首先讓自己介紹一個比較滿意的專案,(可能想通過這個專案了解我們的技能程度)在我面試準備時,其實我就糾結過這個問題,因為在我的專案中,有兩個專案是我比較滿意的,第一個主要做后臺,第二個主要做虛擬環境和資料互動,
“我有兩個專案是比較滿意的”,我先拋出這句話,希望面試官能夠給機會讓我將兩個專案都講一下,“我先講一下第一個我們當時做的換課平臺,當時本來是一個課程專案,但是我們在這個課程專案之上,結合當時校內急需換課這個需求,做出了這么一個換課平臺”,(首先提出專案目的),“然后這個專案大概實作了一個怎樣怎樣的功能”(拋出產品功能),“我在專案中主要負責后臺開發和資料庫互動功能”(說下在專案中的角色),“整個專案的架構大致如下,,,,”(專案如何實作),我拿著紙筆在草稿上給面試官畫著后臺所有的系統架構和資料流動方式,同時將涉及到的重要點的技術點都說了下,
按照之前整理過的描述流程,我將整個換課平臺專案描述了一遍,中途偶爾面試官會問一下技術細節,不過都不是很難,可能因為我沒有使用“SSH”三大框架,而是使用純JSP進行的底層開發,所以面試官也不是太好提問,
不過有意思的是,在我介紹到專案中實作了實時聊天的時候,面試官提了兩個小問題,是我之前專案中沒碰到,而實際生產產品中可能遇到的問題:第一,我們的實時聊天是直接P2P,這樣需要雙方在同一子網下,那如果現在雙方不在同一子網下,外網某個移動端客戶A可以訪問后臺服務器B,這時候某個web端C同時也可以訪問服務器,這個時候A和C是互相不同的,現在如果我們仍然想讓他們通信怎么辦;第二,考慮大量用戶同時訪問后臺服務器的時候,該如何處理,
第一個我首先考慮到用服務器作為中介,但是當時老是想著可能打兩個聊天資訊會對服務器造成壓力,所以一直很猶豫要不要用后臺服務器作為中轉,以及,作為中轉該如何操作,不過面試官稍微提醒我可以用服務器作為中轉,這時候我突然意識到只要服務器收到之后,立刻將訊息轉發出去就可以了,不用走資料庫,這時候我也才一直到為什么我以前分析微信的聊天服務時,會將所有的文本訊息和圖片訊息發送到微信的后臺服務器,而且簡單的直接P2P對話,主要還是為了克服網路問題
第二個不難,考慮云計算中的負載均衡,我大致說了下思路,選取一臺主機作為負載均衡調度機,其他的作為作業機即可,
第一個專案大概講了十分鐘,不知道是因為剛開始面試還是我專案確實對面試官的胃口,
第一個專案完了以后,面試官翻了下我的簡歷,“你要不說下你另一個專案?”我有blabla說了一通,
“有什么難點?”“專案中遇到過哪些問題?”
說完之后,初面基本也就結束了,整個程序十分和諧(可能我遇到的面試官比較nice),最后讓我提一個問題,我大概問了下投遞的這個崗位今后具體會是什么作業,面試官大致給我講了下,(我投遞的云計算開發崗,PaaS方向)
綜合面試
初面完之后,面試官指引我去綜合面試區等待綜合面試,
綜合面試整體感覺和初面差不多,不過在綜合面試階段面試官首先問了我的籍貫,作業意向和理想的作業地點,
這里我表示并不挑,因為作為一個外省人,自從一個人出省讀書以后,就已經對在哪生活在哪上班沒有太多顧慮,
接著面試官問了我一些成績怎樣,家庭情況之類問題之后,開始問我的專案經驗,(雖然我不太明白,為什么綜合面試還會問初面中問過的關于專案經驗的問題)這里我就不在重復了,何處是一樣,我大致和面試官交流了一下我們的專案內容,
這一塊內容完成之后,感覺綜合面試整個流程已經基本結束了,面試官開始跟我介紹他們專案組的作業地點(深圳),作業內容,以及平常的一些作業,同時還給我介紹了一些將來作業中需要了解的基本知識——比如docker容器,k8s,部分國內國外的公有云的運行原理,讓我回去之后提前自學一下,(到這里我開始感覺有戲了)
其實,綜面和初面差別其實沒有太大,不過感覺這還是和面試官有關系,因為在我同行的隊友中,他們有的就被問到了一些比較底層的知識點比如Java有什么特點之類,也有被問及面向物件的優點等等(這些我都沒被問到),
數字處理
題目描述:給出一個不多于5位的整數,進行反序處理,要求
(1)求出它是幾位數
(2)分別輸出每一個數字(空格隔開)
(3)按逆序輸出各位數字(僅數字間以空格間隔,負號與數字之間不需要間隔)
輸入描述:位數不大于5的整數
輸出描述:1.整數位數 2.空格間隔輸出結果 3.逆序整數
#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地址交集判斷
題目描述:輸入四個IP端,前兩個為第一個IP段的起始和終止地址,后兩個是第二個IP段的起始和終止地址,判斷這兩個IP段是否存在交集
輸入描述:輸入4個IP
輸出描述:如果存在交集,輸出 Overlap IP ; 如果不存在交集,輸出 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