華為Java社招面試經(jīng)歷詳解【已拿到offer】

華為Java社招面試(已拿到offer)
之前8月底華為cloudsop部門打電話叫我要不要面試,當(dāng)時(shí)正處于換工作的期間,于是就把簡(jiǎn)歷發(fā)給華為hr,人事審核后經(jīng)過一些列面試、機(jī)試,最終順利拿到了offer,出于未來職業(yè)規(guī)劃的考量,本人手里還有其他的一些offer,還沒有定下來,順便在此分享一下我面試華為的一些經(jīng)歷。
華為作為通訊行業(yè)的龍頭,還是非??粗袑W(xué)歷的,樓主可能正卡在了不是特別優(yōu)秀的一類985、211院校,導(dǎo)致最終定級(jí)不是特別理想,但總的來說華為的面試不是很難,主要分為電話技術(shù)面、機(jī)試、技術(shù)綜合面、hr綜面。
1.電話技術(shù)面試
主要問了我最近的項(xiàng)目,中間也有少部分底層框架的原理,大概四十分鐘。
1.MyBastis如何映射,MyBatis原理。 2.如何實(shí)現(xiàn)高可用的,你的系統(tǒng)怎么達(dá)到高可用的? 3.redis底層實(shí)現(xiàn),redis是如何更新緩存的? 4.集合框架有哪些是線程安全的?哪些是非安全的? 5.開發(fā)中你們?nèi)绾芜M(jìn)行單元測(cè)試?覆蓋率如何?自動(dòng)化測(cè)試怎么達(dá)到? 6.SpringMvc執(zhí)行流程,java常用設(shè)計(jì)模式。 7.eureka怎么保證可用性,及底其層實(shí)現(xiàn),與zookeeper有什么區(qū)別? 8.高并發(fā)相關(guān)的問題,concurrent相關(guān)包。 9.為什么使用redis做緩存而不是其他的消息隊(duì)列入kafka,以及項(xiàng)目的穩(wěn)定性。 10.事務(wù)一定會(huì)鎖表嗎? 11.java并發(fā)和線程同步,同步機(jī)制,鎖具體解釋一下。 12.redis集群搭建,分詞算法、redis主從同步機(jī)制。 13.常用的線程池,threadlocal有什么用,多線程并發(fā)解決辦法。
2.技術(shù)綜合面試
現(xiàn)場(chǎng)面試,正趕上華為本月最后一個(gè)周末加班,約在了早上10點(diǎn),到現(xiàn)場(chǎng)后發(fā)現(xiàn)有很多人都來面試,等了差不多40分鐘,去到一間有很多面試官的房間,一人一張桌子,面前立著一把椅子,像是流水面試。這個(gè)技術(shù)館看著差不多三十幾歲,頭發(fā)花白,說話相當(dāng)快,像在趕時(shí)間,中間沒有再問我技術(shù)框架上的內(nèi)容,一直圍繞我的項(xiàng)目討論,讓我手繪我的項(xiàng)目交互圖,相關(guān)表設(shè)計(jì),用到的算法,當(dāng)時(shí)是怎么考慮的,主要還是高可用,高性能方面問的比較多。
3. HR面試
接著技術(shù)面試完,出來等了差不多10分鐘,就又進(jìn)到剛才的房間,去到另一張桌子的hr面前,面我的hr看著比剛剛的技術(shù)官還要老成,據(jù)他自己說自己做了十幾年的hr,(頭發(fā)…顯然是沒什么頭發(fā)了,難道hr也要加班到凌晨?)中間無非就是各種背景調(diào)查,為了開出適宜的薪資包,我還是將目前的薪資狀況跟他和盤托出了,(沒辦法這是個(gè)老鳥啊?。┤A為的年終獎(jiǎng)和考評(píng)直接掛鉤,所以一定要注意你最近在上一家公司的評(píng)級(jí),還有hr面試過程中的問題,都不是空穴來風(fēng),他都有做標(biāo)記,所以一定要誠實(shí),切勿包裝的離譜,談offer的話,可能是我之前面試的還算不錯(cuò),hr還是相當(dāng)?shù)乃斓?,我要的薪水也是和最終的差不太多。
4.準(zhǔn)備材料
hr在最終定薪需要提供,最近三個(gè)月的工資流水/截圖,畢業(yè)證、學(xué)位證、四六級(jí)證書照片、身份證正反面照片,這是一般公司都要的吧。
5.網(wǎng)上填寫個(gè)人資料
接著就是登錄hr給你郵件發(fā)的連接,登錄進(jìn)去填寫一堆的個(gè)人信息, 包括學(xué)歷,工作經(jīng)歷,項(xiàng)目經(jīng)驗(yàn),華為親屬信息,這個(gè)類似一份華為版的簡(jiǎn)歷。
6.機(jī)試題
這一通過后,還要做一份華為社招的機(jī)試題,出自??腿A為社招的題庫,題目難易程度據(jù)網(wǎng)上的人說,有難有易,基本上都是一些字符串,集合比較基礎(chǔ)的算法的題,做之前可以再牛客上面先練一下。
下面分享一下本人在機(jī)試種遇到的。
import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Scanner; /** * 五張牌,每張牌由牌大小和花色組成,牌大小2~10、J、Q、K、A,牌花色為紅桃、黑桃、梅花、方塊四種花色之一。 判斷牌型: * 牌型1,同花順:同一花色的順子,如紅桃2紅桃3紅桃4紅桃5紅桃6。 * 牌型2,四條:四張相同數(shù)字 + 單張,如紅桃A黑桃A梅花A方塊A + 黑桃K。 * 牌型3,葫蘆:三張相同數(shù)字 + 一對(duì),如紅桃5黑桃5梅花5 + 方塊9梅花9。 * 牌型4,同花:同一花色,如方塊3方塊7方塊10方塊J方塊Q。 * 牌型5,順子:花色不一樣的順子,如紅桃2黑桃3紅桃4紅桃5方塊6。 * 牌型6,三條:三張相同 + 兩張單。 * 牌型7,其他。 * 說明: * 1)五張牌里不會(huì)出現(xiàn)牌大小和花色完全相同的牌。 * 2)前面的牌型比后面的牌型大,如同花順比四條大,依次類推。 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<String> list = new ArrayList<>(); while (sc.hasNextLine()) { String s = sc.nextLine(); list.add(s); if (list.size() == 5) { int type = getCardType(list); System.out.println(type); list.clear(); } } } private static int getCardType(ArrayList<String> list) { int size = list.size(); ArrayList<String> numList = new ArrayList<>(); HashSet<String> numSet = new HashSet<>(); ArrayList<String> colorLsit = new ArrayList<>(); HashSet<String> colorSet = new HashSet<>(); for (int i = 0; i < list.size(); i++) { String num = list.get(i).split(" ")[0]; String color = list.get(i).split(" ")[1]; if (num.equals("J")) { numList.add("11"); numSet.add("11"); } else if (num.equals("Q")) { numList.add("12"); numSet.add("12"); } else if (num.equals("K")) { numList.add("13"); numSet.add("13"); } else if (num.equals("A")) { numList.add("14"); numSet.add("14"); } else { numList.add(num); numSet.add(num); } colorLsit.add(color); colorSet.add(color); } int temp = 7; //同花順或者同花 if (colorSet.size() == 1) { Collections.sort(numList); for (int i = 0; i < numList.size() - 1; i++) { if (Integer.parseInt(numList.get(i + 1)) - 1 == Integer.parseInt(numList.get(i))) { if (i == numList.size() - 2) { temp = 1; } continue; } else { if (temp > 4) { temp = 4; } } } } //四條或葫蘆 if (numSet.size() == 2) { Collections.sort(numList); if (numList.get(0) != numList.get(1) || numList.get(numList.size() - 1) != numList.get(numList.size() - 2)) { if (temp > 2) { temp = 2; } } else { if (temp > 3) { temp = 3; } } } //三條 if (numSet.size() == 3) { if (temp > 6) { temp = 6; } } //順子 if (colorSet.size() > 1) { Collections.sort(numList); for (int i = 0; i < numList.size() - 1; i++) { if (Integer.parseInt(numList.get(i + 1)) - 1 == Integer.parseInt(numList.get(i))) { if (i == numList.size() - 2) { temp = 5; } continue; } else { break; } } } return temp; } }
下面是我從其他朋友筆試中搜集到的,希望有幫助
題目一
package com.hw.loy; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 給定一個(gè)正整數(shù),給出消除重復(fù)數(shù)字以后最大的整數(shù) * 輸入描述: * 正整數(shù),注意考慮長(zhǎng)整數(shù) * 輸出描述: * 消除重復(fù)數(shù)字以后的最大整數(shù) * 示例1 * 輸入 * 423234 * 輸出 * 432 */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String sc = scanner.next(); List list = new ArrayList(); for (int i = 0; i < sc.length(); i++) { list.add(sc.charAt(i)); } for (int i = 0; i < list.size(); i++) { for (int j = 0; j < i; j++) { if (list.get(i).equals(list.get(j))) { if (Integer.valueOf(list.get(j + 1).toString()) > Integer.valueOf(list.get(j).toString())) { list.remove(j); i--; break; } else { list.remove(i); i--; break; } } } } for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); } System.out.println(); } }
題目二
package com.hw.tiku; import java.util.Scanner; /** * 骰子有6個(gè)面,現(xiàn)在用1,2,3,4,5,6分別代表一個(gè)骰子的左,右,前,后,上,下的初始位置, * 用R代表向右滾動(dòng)一次,用L代表向左滾動(dòng)一次,可以向前翻轉(zhuǎn)(用F表示向前翻轉(zhuǎn)1次), * 可以向后翻轉(zhuǎn)(用B表示向右翻轉(zhuǎn)1次),可以逆時(shí)針旋轉(zhuǎn)(用A表示逆時(shí)針旋轉(zhuǎn)90度), * 可以順時(shí)針旋轉(zhuǎn)(用C表示逆時(shí)針旋轉(zhuǎn)90度),現(xiàn)從初始狀態(tài)開始,根據(jù)輸入的動(dòng)作序列,計(jì)算得到最終的狀態(tài)。 輸入描述: 初始狀態(tài)為:123456 輸入只包含LRFBAC的字母序列,最大長(zhǎng)度為50,可重復(fù) 輸出描述:輸出最終狀態(tài) 輸入例子:RA 輸出例子:436512 * @author loy * @desc * @date 2018/8/29 */ public class ShaiZi { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String [] str_array = {"1","2","3","4","5","6"}; String s = scan.nextLine(); String [] s1 = s.split(""); int len = s.length(); for(int i = 0 ; i< s1.length;i++) { String ss = s1[i]; rv(str_array,ss); } int t = 0; for( int i = 0; i <str_array.length;i++) { t = t*10 +Integer.valueOf(str_array[i]); } System.out.println(t); } static void rv(String [] str_array,String s) { switch(s) { case "L": change(str_array,0,5); change(str_array,1,4); change(str_array,0,1); break; case "R": change(str_array,0,4); change(str_array,1,5); change(str_array,0,1); break; case "F": change(str_array,2,5); change(str_array,3,4); change(str_array,2,3); break; case "B": change(str_array,2,4); change(str_array,3,5); change(str_array,2,3); break; case "A": change(str_array,0,2); change(str_array,1,3); change(str_array,0,1); break; case "C": change(str_array,0,3); change(str_array,1,2); change(str_array,0,1); break; default: break; } } static void change(String [] str_array,int a,int b) { String temp = str_array[a]; str_array[a] = str_array[b]; str_array[b] = temp; } }
7.定薪定級(jí)
機(jī)試過后華為人力資源會(huì)對(duì)你之前的表現(xiàn)和你提供的薪資包,給你定你的職級(jí)和薪資,之后會(huì)按照這個(gè)職級(jí)和薪資以及你提供的材料提交上報(bào),等待領(lǐng)導(dǎo)確認(rèn),期間快的話2周,慢的話網(wǎng)上有的也有一個(gè)月甚至更久的,所以中途要耐心等待,先別急著辭職,因?yàn)槿A為的入職流程同樣很久,需要先預(yù)約東莞的醫(yī)院體檢,和報(bào)道日期等。
8.offer發(fā)放
本人差不多等了也有一個(gè)月左右,中途因?yàn)槁毤?jí)和薪資定的略高了一些,被駁回過一次,后面又重新定了一次級(jí)上報(bào)后才成功拿到offer,華為的薪資主要分為兩部分,當(dāng)月薪資 = 基本工資+績(jī)效工資,試用期都是6個(gè)月,貌似不打折,年終獎(jiǎng)嘛,這個(gè)是動(dòng)態(tài)的,需要看部門效益和個(gè)人來年的考核評(píng)定,評(píng)級(jí)為A為四個(gè)月,當(dāng)然這個(gè)是相當(dāng)難的,幾乎不太可能,評(píng)級(jí)為B是兩個(gè)月,多數(shù)情況是B,C的話不用我說了吧,三年內(nèi)沒有nzj,不能漲工資,參與定級(jí)。。
華為是個(gè)非常偉大的公司,但也相當(dāng)壓抑,像一座圍城,里面的人想著出來,外面的人拼了命往里沖,正因?yàn)槠浼影辔幕?32薪酬規(guī)則,致使它成為行業(yè)領(lǐng)先,不論你是否認(rèn)同其企業(yè)文化,最終它一定能給到你想要的回報(bào)。
注意:華為目前研發(fā)體系好像都搬去東莞松山湖華為基地,環(huán)境相當(dāng)不錯(cuò),深圳居住的話,早晚也有接駁車。
相關(guān)文章
- 這篇文章主要介紹了華為筆試算法面試題與參考答案,結(jié)合實(shí)例形式分析了基于C++的字符串轉(zhuǎn)換、判斷、排序等算法相關(guān)操作技巧,需要的朋友可以參考下2019-09-05
- 這篇文章主要介紹了華為16道經(jīng)典面試題與參考思路,總結(jié)分析了華為面試中遇到的經(jīng)典問題,并提供了相應(yīng)的解答思路供讀者參考,需要的朋友可以參考下2019-08-01
- 這篇文章主要介紹了據(jù)說華為的一道Java面試題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-29
- 面試者選擇一種編程語言,兩輪面試,每輪約45分鐘。其中面試者編程30分鐘,面試官提問與討論15分鐘。今天小編給大家討論下華為面試改革加強(qiáng)考察編程難度大增,感興趣的朋友2019-05-14
精選11道Java技術(shù)面試題及對(duì)應(yīng)答案【包含部分阿里和華為的面試題】
這篇文章主要為大家介紹了11道Java技術(shù)面試題及對(duì)應(yīng)答案,其中包含部分阿里和華為的面試題,總結(jié)分析了java常見的技術(shù)難點(diǎn)與java常見面試題,需要的朋友可以參考下2019-04-119月最新184道阿里、百度、騰訊、頭條Java面試題合集(小結(jié))
這篇文章主要介紹了9月最新184道阿里、百度、騰訊、頭條Java面試題合集,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-09-09- 這篇文章主要介紹了阿里常用Java并發(fā)編程面試試題,總結(jié)分析了java并發(fā)編程的概念、原理、常見操作與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-04
- 這篇文章主要介紹了銀行java開發(fā)筆試面試題13道,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-08-27
史上最全的Java面試題總匯(不再懼怕面試官,成功坐等offer)
這篇文章主要介紹了史上最全的Java面試題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-08-07Java研發(fā)京東4面:事務(wù)隔離+樂觀鎖+HashMap+秒殺設(shè)計(jì)+微服務(wù)
這篇文章主要介紹了Java研發(fā)京東4面:事務(wù)隔離+樂觀鎖+HashMap+秒殺設(shè)計(jì)+微服務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-07-24