腾讯笔试心得

前端人

共 3164字,需浏览 7分钟

 ·

2021-03-24 12:15

原文地址:juejin.cn/post/6942640528496263176


关注公众号 前端人,回复“加群

添加无广告优质学习群

起因

2021-03-21,晚上八点到十点,我参加了腾讯的第一轮笔试,方向为前端/UI方向。经过了两个小时的答题,五道题最终我做出来三道题,我对我自己这次笔试的结果是不满意的。在下面我简单讲解一下面试的五道题,自己失利的原因,以及从这次面试中悟出的道理。

想写一篇复盘文章,但是太多了,怕自己一直拖下去一直写不完,就先写写自己的新的吧。

笔试流程分享

这次腾讯笔试在牛客网进行,时长为两个小时。本次笔试为五道编程题。在考试前,需要提前登录确认考生的身份,以及检查你的摄像头等等,然后前一个诚信保证书,就可以等待考试了。考试开始,他会先给你两道例题,让你明确如何在acm模式中自行的输入输出数据。两个小时时间到了,就会自动排队提交试卷。

建议大家提前登陆熟悉一下流程,例如acm模式如何提交代码。然后代码是可以复制到本地调试的,如何复制到本地调试等等,需要自己提前熟悉一下。

笔试复盘

第一题:实现无限滚动

DOM和javascript知识综合题

代码挖空补全

题目:要求补全代码,当div滑动条离最下面距离小于100px时,则插入一个元素进去,实现无限滚动。

question1.vercel.app 我实现的答案。

做题感受

这道题不算很难,但是在写下面的代码时候,因为不太熟悉scrollTopscrollHeight,clientHeight等等,所以最后代码一直过不了,浏览器还会卡住。可能和我的实现与判题系统有关。然后一开始做题很慌,能犯的错误都犯了。

const scrollTop = container.scrollTop;
const contentHeight = container.scrollHeight;
const height = container.clientHeight;
const shouldTrigger = contentHeight - height - scrollTop <= distance 

我建议将如果牛客网的代码不太好调试就立刻复制到本地调试。

第二题:一个正整数n最少多少步才能变为0

他可以做的变换:

  1. n - 1
  2. 如果n是2的倍数:n / 2
  3. 如果n是3的倍数:n / 3

数据范围:

  • count:1到10000
  • n:1到2的31次幂

输入示范

2
10
10 

输出示范

4

我的答案:

  1. 答案1不能直接运行,因为是从标准输入流输出流读取的数据(浏览器)。
  2. 函数版本可以直接运行。

动态规划dp 剪枝

这道题我第一眼看上去以为是一道简单的动态规划,但我笔试时一直没有通过。

现在想明白了。这道题是一道简单的动态规划,只是需要剪枝。我们可以观察到n的最大值可以为2的31幂,所以如果我们直接从顶向下不剪枝肯定是会爆栈的。(话说为什么我笔试的时候也看到数据范围了,为什么没有想到呢)当然这道题也不能自底向上了,因为数据量太大了。

我们自顶向下,然后使用备忘录记录数据。如果是2的倍数或者3的倍数就不用计算n-1的情况了。

第三题:01背包?

有一个行数r,列数c的矩阵。选择矩阵中的值,使列相加为c的情况下,使值相加最大。每行只能选择一次。

第四题:计算运算表达式的值

输入示范

"1+4/2-1" 

输出示范


这题我认为他是在考javascript的api(eval),因为规定只能用javascript答题。

所以我直接eval运行了。

第五题:将中文数字字符串转换成数字

考点:规律的发现

  1. 输入一:“一千三”

    输出一:1300

  2. 输入二:“一千三百零一”

    输出二:1301

  3. 输入三:“十二”

    输出三:12

  4. 输入四:“一千三百二十一万一千三百二十一”

    输出四:13211321

这道题不考数据结构,就考能不能发现规律,解决问题。我考试前看见过这道题,但是没有细看他们是怎么解答的。

最终经历千辛万苦写出来了。

总结

我标题取的是人生需要一点deadline。我之所以这样说,因为我笔试的时候实在是太紧张了。照理说这5个题就中间第三题会难一点,但是最后2个小时我写出来了4个题。我想和我平时训练不足有关。我这里说的训练不足,即指自己题刷的比较少,更指自己做leetcode的时候没有为自己设置deadline。平时做题慢悠悠的,一直在调试,实在做不起了还可以看看他们的题解。ac完了代码我还会去把自己的代码化简,但这些都不是最重要的。最重要的是有一个和面试最相似的环境。可以在最短的时间内想出做题的思路,能最快速的,最清晰的写出能够ac的代码。而不应该关心这个式子是不是已经化简到最简了。

因此我们要为自己设置deadline,平时后紧张起来,到自己去面试的时候,到这个真实的环境,就不这么紧张了。例如leetcode有模拟面试功能,大家可以去模拟面试一下。然后面试都是在牛客上进行,所以不能一直依赖leetcode,也要在牛客网上训练(虽然这个平台不太好用,leetcode好用)。不然到自己面试的时候像我一样平台都不熟悉就死翘翘了。

然后我的经验是把leetcode上的剑指offer刷了一遍,然后leetcode一些比较经典的题也做了一点。例如单调栈的接雨水、最大矩形面积,我已经可以背下来了。然后据说链表考得比较多,大家可以多注重一下链表。leetcode题这么多,你短时间肯定做不完,就抓重点,把各个方面的知识点都复习一下。过几天我有个字节跳动的面试,加油加油。

最后

  1. 公众号里回复关键词资料包领取我整理的进阶资料包
  2. 公众号里回复关键词加群,加入前端进阶群
  3. 文章点个在看,支持一下把!

点击关注我们↓

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报