起因

2021-03-21,早晨八点到十点,我加入了腾讯的第一轮口试,方向为前端/UI方向。通过了两个小时的答题,五道题最终我做进去三道题,我对我本人这次口试的后果是不称心的。在上面我简略解说一下面试的五道题,本人得胜的起因,以及从这次面试中悟出的情理。

想写一篇复盘文章,然而太多了,怕本人始终拖下去始终写不完,就先写写本人的新的吧。

小编之前公布无关前端面试的文章,点击题目即可浏览喽
题目:Vue面试题
题目:前端面试之问到promise
题目:怎么判断面试者是否有扎实的前端根底

口试流程分享

这次腾讯口试在牛客网进行,时长为两个小时。本次口试为五道编程题。在考试前,须要提前登录确认考生的身份,以及查看你的摄像头等等,而后前一个诚信保证书,就能够期待考试了。 考试开始,他会先给你两道例题,让你明确如何在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次幂

输出示范

21010复制代码

输入示范

44复制代码

我的答案:

  1. 答案1不能间接运行,因为是从规范输出流输入流读取的数据(浏览器)。
  2. 函数版本能够间接运行。
动静布局dp 剪枝

这道题我第一眼看上去认为是一道简略的动静布局,但我口试时始终没有通过。

当初想明确了。这道题是一道简略的动静布局,只是须要剪枝。咱们能够察看到n的最大值能够为2的31幂,所以如果咱们间接从顶向下不剪枝必定是会爆栈的。(话说为什么我口试的时候也看到数据范畴了,为什么没有想到呢)当然这道题也不能自底向上了,因为数据量太大了。

咱们自顶向下,而后应用备忘录记录数据。如果是2的倍数或者3的倍数就不必计算n-1的状况了。

第三题:01背包?

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

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

输出示范

"1+4/2-1"复制代码

输入示范

2复制代码

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

所以我间接eval运行了。

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

数据范畴:不超过1亿

考点:法则的发现
  1. 输出一:“一千三”

    输入一:1300

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

    输入二:1301

  3. 输出三:“十二”

    输入三:12

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

    输入四:13211321

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

最终经验含辛茹苦写进去了。

这里是答案

思路:

  1. 咱们要将文字转换成数字,所以须要一个映射关系。
  2. 十百千万都是单位,所以也要映射一下,留神零的思考,零我把它当作单位而不是数字(须要非凡解决)例子:一千三百零一。
  3. 非凡状况的思考:例如最初一个数没有单位,一千三。
  4. 数据范畴在一亿以内,所以万这个单位能够特殊化。呈现万就把转换中的后果乘10000.

由这次的腾讯面试,总结了一份腾讯面试题材料,大家须要的请自取。点击这支付腾讯前端面试题

总结

我题目取的是人生须要一点deadline,我之所以这样说,因为我口试的时候切实是太紧张了。照理说这5个题就两头第三题会难一点,然而最初2个小时我写进去了4个题。我想和我平时训练有余无关。我这里说的训练有余,即指本人题刷的比拟少,更指本人做leetcode的时候没有为本人设置deadline。平时做题慢吞吞的,始终在调试,切实做不起了还能够看看他们的题解。ac完了代码我还会去把本人的代码化简,但这些都不是最重要的。最重要的是有一个和面试最类似的环境。能够在最短的工夫内想出做题的思路,能最疾速的,最清晰的写出可能ac的代码。而不应该关怀这个式子是不是曾经化简到最简了。

因而咱们要为本人设置deadline,平时后缓和起来,到本人去面试的时候,到这个实在的环境,就不这么缓和了。例如leetcode有模仿面试性能,大家能够去模仿面试一下。而后面试都是在牛客上进行,所以不能始终依赖leetcode,也要在牛客网上训练(尽管这个平台不太好用,leetcode好用)。不然到本人面试的时候像我一样平台都不相熟就死翘翘了。

喜爱这篇文章的小伙伴们请点赞+评论反对下哦,也祝在找工作在面试的小伙伴们顺顺利利,克敌制胜!