都說(shuō)華為面試愛(ài)問(wèn)正則合陵,這不華為海外校招面試題來(lái)了
今天給大家分享一位戰(zhàn)隊(duì)中海外留學(xué)生面試華為遇到的經(jīng)典面試題枢赔,順便也給即將走出校園,邁入職場(chǎng)的小伙伴分享一下大廠的面試基本流程和注意事項(xiàng)拥知。當(dāng)然如果你只想看面試題和題解可以直接往下翻到面試題圖片位置糠爬。
大廠的面試是什么感受?
說(shuō)到大廠面試題举庶,不管大廠還是后廠,不管是遠(yuǎn)程(視頻揩抡、電話)面試還是現(xiàn)場(chǎng)面試户侥,只要研發(fā)崗(軟件算法工程),那么面試題這一關(guān)是肯定逃不過(guò)的(內(nèi)推除外),那么在面試的過(guò)程中肯定會(huì)有N多的問(wèn)題等著考驗(yàn)?zāi)悖泻芏嗳嗣孢^(guò)大廠峦嗤,動(dòng)輒幾個(gè)小時(shí)的“拷問(wèn)”蕊唐,一場(chǎng)面試下來(lái),幾乎都要虛脫了(大神請(qǐng)繞路)烁设。
不管是面試(機(jī)試)的問(wèn)題的多少替梨,都會(huì)問(wèn)到你答不上上來(lái)為止,而一旦你答不上來(lái)装黑,很多面試官還會(huì)以為你想不起來(lái)而旁敲側(cè)擊的采用迂回戰(zhàn)術(shù)反復(fù)提起相關(guān)問(wèn)題副瀑,直到確認(rèn)這個(gè)問(wèn)題你不會(huì)。很多人不理解恋谭,明明我都答不上來(lái)糠睡,為啥還揪著不放呢?
其實(shí)疚颊,說(shuō)起來(lái)這個(gè)事情倒也不能怪技術(shù)面試官狈孔,他的目的其實(shí)很簡(jiǎn)單,就是一定要在面試完成前材义,徹底摸清你的技術(shù)功底均抽,不放過(guò)也不錯(cuò)殺,畢竟面試的時(shí)間短暫其掂,畢竟大家的時(shí)間都很寶貴油挥,畢竟人家也是有責(zé)任在身的呀,當(dāng)然不排除有的就是想刁難你清寇,不過(guò)這種太少了喘漏,畢竟大家都是陌生人,為何無(wú)緣無(wú)故的得罪人呢华烟?
常規(guī)的面試流程
那么既然時(shí)間短翩迈,又互相不熟悉,那么如何才能在短時(shí)間內(nèi)對(duì)你進(jìn)行一次徹底的技術(shù)摸底呢盔夜?這就要說(shuō)到面試的流程上了负饲,一般情況下堤魁,在你的簡(jiǎn)歷提交之后,會(huì)有HR對(duì)簡(jiǎn)歷進(jìn)行初步判斷和篩選返十,然后過(guò)了以后交由技術(shù)主管對(duì)簡(jiǎn)歷進(jìn)行技術(shù)方向的確認(rèn)妥泉,過(guò)了這一關(guān)后,恭喜你洞坑,可能會(huì)等來(lái)面試邀請(qǐng)盲链。
面試一般是分為HR人事方向面試和技術(shù)方向面試,HR主要會(huì)涉及個(gè)人經(jīng)歷迟杂、職業(yè)規(guī)劃刽沾、優(yōu)缺點(diǎn)、離職原因排拷、期望薪資等方面進(jìn)行提問(wèn)侧漓,主要會(huì)在溝通中以觀察你的溝通表達(dá)能力和性格等方面,同時(shí)對(duì)你的簡(jiǎn)歷是否注水监氢、是否符合公司文化等方面進(jìn)行考察布蔗,一般這個(gè)如果不出大的問(wèn)題的話,都會(huì)進(jìn)行技術(shù)面試浪腐。
而技術(shù)面試這個(gè)在不同公司就不太一樣了纵揍,一般是先技術(shù)面試官(部門(mén)的技術(shù)人員,未來(lái)的同事或者組長(zhǎng)等)面試牛欢,過(guò)了之后在由技術(shù)負(fù)責(zé)人或者Leader也就是你未來(lái)的領(lǐng)導(dǎo)面試骡男。那么在這個(gè)過(guò)程中,技術(shù)面試官如何快速摸清你的技術(shù)功底呢傍睹?基本上的套路和流程就是先做面試題或者機(jī)試隔盛,然后在進(jìn)行技術(shù)面試。面試題在不同的公司也會(huì)不同拾稳,不過(guò)不管怎么面吮炕,你只要清楚,面試題主要在考察你的哪方面能力访得?
面試在考察什么龙亲?
首先就是基礎(chǔ)知識(shí)和知識(shí)深度
,比如常見(jiàn)的一些進(jìn)程悍抑、線程鳄炉、數(shù)據(jù)結(jié)構(gòu)與算法、MySQL工作原理搜骡、索引結(jié)構(gòu)等拂盯,當(dāng)然也根據(jù)你面的不同崗位有些區(qū)分,不過(guò)基礎(chǔ)知識(shí)的面試都大差不差就這些方面记靡,那啥是知識(shí)深度呢谈竿?基本上就是上面的常見(jiàn)題或者根據(jù)你的回答繼續(xù)深入追問(wèn)团驱,幾乎問(wèn)到你不會(huì)為止,對(duì)空凸,就是一直追問(wèn)下去嚎花,如果答不上來(lái),就換個(gè)問(wèn)題繼續(xù)追問(wèn)呀洲,對(duì)紊选,就是這樣,才能知道你有沒(méi)有深度道逗。另外一個(gè)重點(diǎn)就是解決問(wèn)題的能力和思考能力
丛楚,這個(gè)可能有點(diǎn)不好理解,我們舉個(gè)簡(jiǎn)單的例子憔辫,比如面試官出了一道你沒(méi)做過(guò)的面試題,而且看起來(lái)也很難仿荆,可能會(huì)讓你產(chǎn)生畏懼的心里贰您,如果你放棄思考直接回答不會(huì),那這可能就太魯莽了拢操,因?yàn)槊嬖嚬倏赡芤矔?huì)覺(jué)得這個(gè)題對(duì)你有難度锦亦,但是他想看到你的思考過(guò)程和解決問(wèn)題的能力,此時(shí)你可以介紹一下自己的思路或嘗試給出一些解決方案令境,就算這個(gè)題真的不會(huì)寫(xiě)杠园,可能也會(huì)給面試官一個(gè)比較正面的印象。當(dāng)然還有很多舔庶,例如會(huì)問(wèn)到你參與的項(xiàng)目或開(kāi)發(fā)過(guò)程中遇到的問(wèn)題抛蚁,是如何解決的等來(lái)多方面考察你。so惕橙,如果你清楚了面試時(shí)在考察什么瞧甩,并提前為此準(zhǔn)備,并以積極的心態(tài)面試弥鹦,那么你拿到offer的幾率就大很多肚逸。當(dāng)然很多在技術(shù)面試的過(guò)程中會(huì)根據(jù)公司、崗位等不同有不同的側(cè)重點(diǎn)彬坏,比如數(shù)據(jù)結(jié)構(gòu)與算法幾乎是達(dá)成共識(shí)的一個(gè)側(cè)重點(diǎn)朦促。(媽呀、側(cè)重點(diǎn)都能達(dá)成共識(shí)栓始,哈哈)务冕。當(dāng)然也會(huì)有公司真的存在側(cè)重點(diǎn),比如在圈內(nèi)共識(shí)的華為在技術(shù)研發(fā)崗位上除了數(shù)據(jù)結(jié)構(gòu)與算法外混滔,就特別愛(ài)問(wèn)正則技術(shù)相關(guān)的面試題洒疚。這不歹颓,我們某戰(zhàn)隊(duì)里的海外留學(xué)生(英國(guó)布里斯托大學(xué))在面試華為時(shí)就遇到這樣的題,這也是今天分享的另一個(gè)重點(diǎn)油湖。
華為留學(xué)生校園招聘面試分享
以下來(lái)自英布(化名)同學(xué)的面試題分享
以上是本次分享的面試題截圖巍扛,為了大家更好的閱讀,下面為大家準(zhǔn)備了文字版乏德。
題目描述
給定一段英文輸入文本撤奸,判斷文本是否滿足如下規(guī)則的拼接形式。
規(guī)則1: —段不包含任何符號(hào)的純文本(可以包含空格)
樣例1: "hi", "good afternoon"
規(guī)則2: 圓括號(hào)括起來(lái)的文本喊括,其中可以包含豎線"|"分隔符胧瓜,豎線前后允許任意空格,但豎線前后必須有文本
樣例2: "(yesterday | today|tomorrow)","(china)"
規(guī)則3:方括號(hào)括起來(lái)的文中可以包含豎線"|"分隔符郑什,豎線前后允許任意空格府喳,但豎線前后必須有文本
樣例3: "[yesterday | today | tomorrow]", "[china]"
規(guī)則4:花括號(hào)括起來(lái)的兩個(gè)數(shù)字,用英文逗號(hào)分隔“蘑拯,”逗號(hào)前后允許有任意空格钝满,并且 數(shù)字1<=數(shù)字2
樣例4:"{3, 5}","{5 , 5}"
輸入描述:
輸入多行文本,分別對(duì)每一行進(jìn)行判斷,除了規(guī)則中出現(xiàn)的符號(hào)外,不考慮輸入其他符號(hào)申窘。
輸出描述:
判斷每行文本是否滿足上述4種規(guī)則的拼接弯蚜,滿足返回1,不滿足返回0
示例1剃法,輸入:
'''
{0,3}[give|show]{0,3}me{0,3}[the](money|cash){0,5}
[show)me[the](money|cash)
{5, 0}(money|cash){0,5}
( | money)
'''
輸出:
'''
1
0
0
0
'''
說(shuō)明:
第二行 出現(xiàn)了括號(hào)匹配錯(cuò)誤
第三回 數(shù)字1>數(shù)字3
第四行 豎線前沒(méi)有文本
面試題解
怎么樣碎捺?看到這道題,不知道你不是有壓力呢贷洲?又或者感覺(jué)簡(jiǎn)直就是灑灑水呢收厨?歡迎大家積極留言討論。
接下來(lái)我們看一下优构,在本次面試題分享中關(guān)于題解的過(guò)程吧帽氓。
首先,我們看到這道題是一個(gè)正經(jīng)八百的正則面試題俩块。如果你有非正則解決方案也歡迎討論黎休。
那么根據(jù)題面是說(shuō)給出的文本是有四種規(guī)則的,分別是普通文本玉凯、圓括號(hào)文本势腮、中括號(hào)文本和花括號(hào)數(shù)字四種規(guī)則。那么我們先來(lái)把四種規(guī)則進(jìn)行定義吧漫仆。
# 規(guī)則1: —段不包含任何符號(hào)的純文本(可以包含空格)
# 樣例1: "hi", "good afternoon"
varstr = 'good afternoon'
varreg = '^[a-zA-Z ]+$'
res = re.search(varreg,varstr)
print(res)
# 規(guī)則2: 圓括號(hào)括起來(lái)的文本捎拯,其中可以包含豎線"|"分隔符,豎線前后允許任意空格盲厌,但豎線前后必須有文本
# 樣例2: "(yesterday | today|tomorrow)","(china)"
varstr = '(yesterday | today|tomorrow)'
varreg = '^\(\w+(([\w\s]+\|[\w\s]+)*|\w+)\w+\)$'
res = re.search(varreg,varstr)
print(res)
# 規(guī)則3:方括號(hào)括起來(lái)的文中可以包含豎線"|"分隔符署照,豎線前后允許任意空格祸泪,但豎線前后必須有文本
# 樣例3: "[yesterday | today | tomorrow]", "[china]"
varstr = '[yesterday | today | tomorrow]'
varreg = '^\[(([\w\s]+\|[\w\s]+)*|\w+)\]$'
res = re.search(varreg,varstr)
print(res)
# 規(guī)則4:花括號(hào)括起來(lái)的兩個(gè)數(shù)字,用英文逗號(hào)分隔“建芙,”逗號(hào)前后允許有任意空格没隘,并且 數(shù)字1<=數(shù)字2
# 樣例4:"{3, 5}","{5 , 5}"
varstr = '{16, 15}'
varreg = '^\{(\d+)\s*,\s*(\d+)\}$'
res = re.search(varreg,varstr)
# 其中需要對(duì)數(shù)字1和數(shù)字2進(jìn)行判斷
if res and (res.groups()[0] <= res.groups()[1]):
print(res)
else:
print('error')
以上就是根據(jù)題面定義的四種規(guī)則,雖然看起來(lái)復(fù)雜禁荸,但是用心慢慢實(shí)現(xiàn)右蒲,最后看起來(lái)好像也不是特別難呀
不過(guò),別得意赶熟,目前我們只是根據(jù)題面定義了四種規(guī)則瑰妄,但是請(qǐng)?jiān)敿?xì)閱讀本題的輸入輸出要求:
# 輸入描述:
# 輸入多行文本,分別對(duì)每一行進(jìn)行判斷,除了規(guī)則中出現(xiàn)的符號(hào)外,不考慮輸入其他符號(hào)映砖。
'''
{0,3}[give|show]{0,3}me{0,3}[the](money|cash){0,5}
[show)me[the](money|cash)
{5, 0}(money|cash){0,5}
( | money)
'''
# 輸出描述:
# 判斷每行文本是否滿足上述4種規(guī)則的拼接间坐,滿足返回1,不滿足返回0
'''
1
0
0
0
'''
仔細(xì)看會(huì)發(fā)現(xiàn)幾個(gè)問(wèn)題邑退,首先它給定的是一個(gè)多行文本眶诈,而我們需要對(duì)每一行進(jìn)行判斷,其實(shí)這個(gè)都不算什么大問(wèn)題瓜饥,split函數(shù)一步就可以搞定,把多行文本按行拆成列表即可浴骂。最最關(guān)鍵的問(wèn)題是乓土,你需要判斷每一行的文本是否滿足上述4種規(guī)則的拼接。
拼接溯警?此時(shí)你可能會(huì)想這有啥難的趣苏?把剛才寫(xiě)的4個(gè)規(guī)則拼在一起不來(lái)驗(yàn)證不就可以了嗎?其實(shí)這可能是一個(gè)慣性思維梯轻,很多人都會(huì)這么想食磕,然后就會(huì)被繞進(jìn)去了,你會(huì)發(fā)現(xiàn)你很難把那4個(gè)規(guī)則拼在一起喳挑,怎么拼彬伦?又如何一起檢測(cè)?歡迎動(dòng)手伊诵。单绑。。
好了曹宴,我們也不賣(mài)關(guān)子了搂橙,大家可以在讀一讀題,就會(huì)發(fā)現(xiàn)這個(gè)題其實(shí)就是利用了一個(gè)慣性思維把你繞住了笛坦,如果你不去想把4個(gè)規(guī)則拼接起來(lái)進(jìn)行檢測(cè)区转,那么可能你會(huì)想到另一個(gè)辦法苔巨,那就是我們分別使用4個(gè)規(guī)則對(duì)每一行文本進(jìn)行去除也就是把符合規(guī)則條件的文本替換為空,最后4個(gè)規(guī)則替換完成后如果文本為空不就符合了嗎废离?如果不為空就是錯(cuò)誤的侄泽。
當(dāng)然,首先不能按照出題順序進(jìn)行規(guī)則的替換厅缺,比如你先用第一個(gè)規(guī)則進(jìn)行替換蔬顾,那后面就沒(méi)法玩了。所以可以先用第二個(gè)湘捎、第三個(gè)規(guī)則進(jìn)行替換诀豁,然后在用第一個(gè)規(guī)則也就是普通字符進(jìn)行替換,最后就剩下花括號(hào)數(shù)字的替換了窥妇,如果在這4個(gè)規(guī)則都替換完成后文本為空舷胜,那么就是首先確定了,它符合了4個(gè)規(guī)則的拼接活翩,如果不為空則可以直接return 0烹骨,那么這樣完成了嗎?還沒(méi)有材泄,因?yàn)轭}目中的第4個(gè)規(guī)則沮焕,除了是符合要求的數(shù)字之外,還要求數(shù)字要<=數(shù)字2拉宗,那么這樣我們就需要對(duì)第四個(gè)規(guī)則中的數(shù)字1和數(shù)字2進(jìn)行提取再判斷是否符合要求峦树,才能最后確定文本是否真的符合要求。
分析完思路旦事,我們來(lái)看一下代碼的實(shí)現(xiàn)
import re
# 輸入的文本
varstr = '''{0,3}[give|show]{0,3}me{0,3}[the](money|cash){0,5}as
[show)me[the](money|cash)
{5, 0}(money|cash){0,5}
( | money)
'''
# 檢測(cè)數(shù)字
def checknums(arr):
for i in arr:
if not i[0] <= i[1]:
return False
return True
# 處理大文本魁巩,切割為每行組成的列表
arr = varstr.split('\n')
arr.pop()
# 定義行數(shù)
n = 0
# 循環(huán)文本行
for vars in arr:
n += 1
# 使用規(guī)則對(duì)文本進(jìn)行替換,替換為空
res = re.sub('\(\w+(([\w\s]+\|[\w\s]+)*|\w+)\w+\)','',vars)
res = re.sub('\[\w+(([\w\s]+\|[\w\s]+)*|\w+)\w+\]','',res)
res = re.sub('[a-zA-Z ]+','',res)
res = re.sub('\{(\d+)\s*,\s*(\d+)\}','',res)
# 檢測(cè)是否為空
if not res:
# 為空后姐浮,提取數(shù)字谷遂,檢測(cè)數(shù)字是否符合規(guī)則要求
nums = re.findall('\{(\d+)\s*,\s*(\d+)\}',vars)
if checknums(nums):
print(f'第{n}行正確')
else:
print(f'第{n}行錯(cuò)誤')
else:
print(f'第{n}行錯(cuò)誤')
今天主要給大家分享了面試的流程、面試的考察點(diǎn)以及來(lái)自華為的面試題卖鲤,希望能在你即將邁出的一步上給你一些幫助肾扰,希望你與后廠的距離又更近一步。
如果喜歡本文或?qū)δ阌袔椭脑挼坝猓瑲g迎大家關(guān)注我的公眾號(hào):后廠程序員白对,并分享、點(diǎn)贊换怖、在看 三連哦甩恼。