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

