騰訊筆試心得
原文地址:juejin.cn/post/6942640528496263176
關(guān)注公眾號(hào) 前端人,回復(fù)“加群”
添加無廣告優(yōu)質(zhì)學(xué)習(xí)群
起因
2021-03-21,晚上八點(diǎn)到十點(diǎn),我參加了騰訊的第一輪筆試,方向?yàn)榍岸?UI方向。經(jīng)過了兩個(gè)小時(shí)的答題,五道題最終我做出來三道題,我對(duì)我自己這次筆試的結(jié)果是不滿意的。在下面我簡(jiǎn)單講解一下面試的五道題,自己失利的原因,以及從這次面試中悟出的道理。
想寫一篇復(fù)盤文章,但是太多了,怕自己一直拖下去一直寫不完,就先寫寫自己的新的吧。
筆試流程分享
這次騰訊筆試在??途W(wǎng)進(jìn)行,時(shí)長(zhǎng)為兩個(gè)小時(shí)。本次筆試為五道編程題。在考試前,需要提前登錄確認(rèn)考生的身份,以及檢查你的攝像頭等等,然后前一個(gè)誠(chéng)信保證書,就可以等待考試了??荚囬_始,他會(huì)先給你兩道例題,讓你明確如何在acm模式中自行的輸入輸出數(shù)據(jù)。兩個(gè)小時(shí)時(shí)間到了,就會(huì)自動(dòng)排隊(duì)提交試卷。
建議大家提前登陸熟悉一下流程,例如acm模式如何提交代碼。然后代碼是可以復(fù)制到本地調(diào)試的,如何復(fù)制到本地調(diào)試等等,需要自己提前熟悉一下。
筆試復(fù)盤
第一題:實(shí)現(xiàn)無限滾動(dòng)
DOM和javascript知識(shí)綜合題
代碼挖空補(bǔ)全
題目:要求補(bǔ)全代碼,當(dāng)div滑動(dòng)條離最下面距離小于100px時(shí),則插入一個(gè)元素進(jìn)去,實(shí)現(xiàn)無限滾動(dòng)。
question1.vercel.app 我實(shí)現(xiàn)的答案。
做題感受
這道題不算很難,但是在寫下面的代碼時(shí)候,因?yàn)椴惶煜?code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(150, 84, 181);">scrollTop,scrollHeight,clientHeight等等,所以最后代碼一直過不了,瀏覽器還會(huì)卡住??赡芎臀业膶?shí)現(xiàn)與判題系統(tǒng)有關(guān)。然后一開始做題很慌,能犯的錯(cuò)誤都犯了。
const scrollTop = container.scrollTop;
const contentHeight = container.scrollHeight;
const height = container.clientHeight;
const shouldTrigger = contentHeight - height - scrollTop <= distance
我建議將如果??途W(wǎng)的代碼不太好調(diào)試就立刻復(fù)制到本地調(diào)試。
第二題:一個(gè)正整數(shù)n最少多少步才能變?yōu)?
他可以做的變換:
-
n - 1 -
如果n是2的倍數(shù):n / 2 -
如果n是3的倍數(shù):n / 3
數(shù)據(jù)范圍:
-
count:1到10000 -
n:1到2的31次冪
輸入示范
2
10
10
輸出示范
4
4
我的答案:
-
答案1不能直接運(yùn)行,因?yàn)槭菑臉?biāo)準(zhǔn)輸入流輸出流讀取的數(shù)據(jù)(瀏覽器)。 -
函數(shù)版本可以直接運(yùn)行。
動(dòng)態(tài)規(guī)劃dp 剪枝
這道題我第一眼看上去以為是一道簡(jiǎn)單的動(dòng)態(tài)規(guī)劃,但我筆試時(shí)一直沒有通過。
現(xiàn)在想明白了。這道題是一道簡(jiǎn)單的動(dòng)態(tài)規(guī)劃,只是需要剪枝。我們可以觀察到n的最大值可以為2的31冪,所以如果我們直接從頂向下不剪枝肯定是會(huì)爆棧的。(話說為什么我筆試的時(shí)候也看到數(shù)據(jù)范圍了,為什么沒有想到呢)當(dāng)然這道題也不能自底向上了,因?yàn)閿?shù)據(jù)量太大了。
我們自頂向下,然后使用備忘錄記錄數(shù)據(jù)。如果是2的倍數(shù)或者3的倍數(shù)就不用計(jì)算n-1的情況了。
第三題:01背包?
有一個(gè)行數(shù)r,列數(shù)c的矩陣。選擇矩陣中的值,使列相加為c的情況下,使值相加最大。每行只能選擇一次。
第四題:計(jì)算運(yùn)算表達(dá)式的值
輸入示范
"1+4/2-1"
輸出示范
2
這題我認(rèn)為他是在考javascript的api(eval),因?yàn)橐?guī)定只能用javascript答題。
所以我直接eval運(yùn)行了。
第五題:將中文數(shù)字字符串轉(zhuǎn)換成數(shù)字
考點(diǎn):規(guī)律的發(fā)現(xiàn)
-
輸入一:“一千三”
輸出一:1300
-
輸入二:“一千三百零一”
輸出二:1301
-
輸入三:“十二”
輸出三:12
-
輸入四:“一千三百二十一萬一千三百二十一”
輸出四:13211321
這道題不考數(shù)據(jù)結(jié)構(gòu),就考能不能發(fā)現(xiàn)規(guī)律,解決問題。我考試前看見過這道題,但是沒有細(xì)看他們是怎么解答的。
最終經(jīng)歷千辛萬苦寫出來了。
總結(jié)
我標(biāo)題取的是人生需要一點(diǎn)deadline。我之所以這樣說,因?yàn)槲夜P試的時(shí)候?qū)嵲谑翘o張了。照理說這5個(gè)題就中間第三題會(huì)難一點(diǎn),但是最后2個(gè)小時(shí)我寫出來了4個(gè)題。我想和我平時(shí)訓(xùn)練不足有關(guān)。我這里說的訓(xùn)練不足,即指自己題刷的比較少,更指自己做leetcode的時(shí)候沒有為自己設(shè)置deadline。平時(shí)做題慢悠悠的,一直在調(diào)試,實(shí)在做不起了還可以看看他們的題解。ac完了代碼我還會(huì)去把自己的代碼化簡(jiǎn),但這些都不是最重要的。最重要的是有一個(gè)和面試最相似的環(huán)境??梢栽谧疃痰臅r(shí)間內(nèi)想出做題的思路,能最快速的,最清晰的寫出能夠ac的代碼。而不應(yīng)該關(guān)心這個(gè)式子是不是已經(jīng)化簡(jiǎn)到最簡(jiǎn)了。
因此我們要為自己設(shè)置deadline,平時(shí)后緊張起來,到自己去面試的時(shí)候,到這個(gè)真實(shí)的環(huán)境,就不這么緊張了。例如leetcode有模擬面試功能,大家可以去模擬面試一下。然后面試都是在??蜕线M(jìn)行,所以不能一直依賴leetcode,也要在牛客網(wǎng)上訓(xùn)練(雖然這個(gè)平臺(tái)不太好用,leetcode好用)。不然到自己面試的時(shí)候像我一樣平臺(tái)都不熟悉就死翹翹了。
然后我的經(jīng)驗(yàn)是把leetcode上的劍指offer刷了一遍,然后leetcode一些比較經(jīng)典的題也做了一點(diǎn)。例如單調(diào)棧的接雨水、最大矩形面積,我已經(jīng)可以背下來了。然后據(jù)說鏈表考得比較多,大家可以多注重一下鏈表。leetcode題這么多,你短時(shí)間肯定做不完,就抓重點(diǎn),把各個(gè)方面的知識(shí)點(diǎn)都復(fù)習(xí)一下。過幾天我有個(gè)字節(jié)跳動(dòng)的面試,加油加油。
最后
-
公眾號(hào)里回復(fù)關(guān)鍵詞 資料包領(lǐng)取我整理的進(jìn)階資料包 -
公眾號(hào)里回復(fù)關(guān)鍵詞 加群,加入前端進(jìn)階群 -
文章點(diǎn)個(gè) 在看,支持一下把!
點(diǎn)擊關(guān)注我們↓

