起因
2021-03-21,早晨八点到十点,我加入了腾讯的第一轮口试,方向为前端 /UI 方向。通过了两个小时的答题,五道题最终我做进去三道题,我对我本人这次口试的后果是不称心的。在上面我简略解说一下面试的五道题,本人得胜的起因,以及从这次面试中悟出的情理。
想写一篇复盘文章,然而太多了,怕本人始终拖下去始终写不完,就先写写本人的新的吧。
小编之前公布无关前端面试的文章,点击 题目 即可浏览喽
题目:Vue 面试题
题目:前端面试之问到 promise
题目:怎么判断面试者是否有扎实的前端根底
口试流程分享
这次腾讯口试在牛客网进行,时长为两个小时。本次口试为五道编程题。在考试前,须要提前登录确认考生的身份,以及查看你的摄像头等等,而后前一个诚信保证书,就能够期待考试了。考试开始,他会先给你两道例题,让你明确如何在 acm 模式中自行的输入输出数据。两个小时工夫到了,就会主动排队提交试卷。
倡议大家提前登陆相熟一下流程,例如 acm 模式如何提交代码。而后代码是能够复制到本地调试的,如何复制到本地调试等等,须要本人提前相熟一下。
口试复盘
第一题:实现有限滚动
DOM 和 javascript 常识综合题
代码挖空补全
题目:要求补全代码,当 div 滑动条离最上面间隔小于 100px 时,则插入一个元素进去,实现有限滚动。
question1.vercel.app 我实现的答案。
做题感触
这道题不算很难,然而在写上面的代码时候,因为不太熟悉 scrollTop
,scrollHeight
,clientHeight
等等,所以最初代码始终过不了,浏览器还会卡住。可能和我的实现与判题零碎无关。而后一开始做题很慌,能犯的谬误都犯了。
const scrollTop = container.scrollTop;
const contentHeight = container.scrollHeight;
const height = container.clientHeight;
const shouldTrigger = contentHeight - height - scrollTop <= distance
复制代码
我倡议将如果牛客网的代码不太好调试就立即复制到本地调试。
第二题:一个正整数 n 起码多少步能力变为 0
他能够做的变换:
- n – 1
- 如果 n 是 2 的倍数:n / 2
- 如果 n 是 3 的倍数:n / 3
数据范畴:
- count:1 到 10000
- n:1 到 2 的 31 次幂
输出示范
2
10
10
复制代码
输入示范
4
4
复制代码
我的答案:
- 答案 1 不能间接运行,因为是从规范输出流输入流读取的数据(浏览器)。
- 函数版本能够间接运行。
动静布局 dp 剪枝
这道题我第一眼看上去认为是一道简略的动静布局,但我口试时始终没有通过。
当初想明确了。这道题是一道简略的动静布局,只是须要剪枝。咱们能够察看到 n 的最大值能够为 2 的 31 幂,所以如果咱们间接从顶向下不剪枝必定是会爆栈的。(话说为什么我口试的时候也看到数据范畴了,为什么没有想到呢)当然这道题也不能自底向上了,因为数据量太大了。
咱们自顶向下,而后应用备忘录记录数据。如果是 2 的倍数或者 3 的倍数就不必计算 n - 1 的状况了。
第三题:01 背包?
有一个行数 r,列数 c 的矩阵。抉择矩阵中的值,使列相加为 c 的状况下,使值相加最大。每行只能抉择一次。
第四题:计算运算表达式的值
输出示范
"1+4/2-1"
复制代码
输入示范
2
复制代码
这题我认为他是在考 javascript 的 api(eval),因为规定只能用 javascript 答题。
所以我间接 eval 运行了。
第五题:将中文数字字符串转换成数字
数据范畴:不超过 1 亿
考点:法则的发现
-
输出一:“一千三”
输入一:1300
-
输出二:“一千三百零一”
输入二:1301
-
输出三:“十二”
输入三:12
-
输出四:“一千三百二十一万一千三百二十一”
输入四:13211321
这道题不考数据结构,就考能不能发现法则,解决问题。我考试前看见过这道题,然而没有细看他们是怎么解答的。
最终经验含辛茹苦写进去了。
这里是答案
思路:
- 咱们要将文字转换成数字,所以须要一个映射关系。
- 十百千万都是单位,所以也要映射一下,留神零的思考,零我把它当作单位而不是数字(须要非凡解决)例子:一千三百零一。
- 非凡状况的思考:例如最初一个数没有单位,一千三。
- 数据范畴在一亿以内,所以万这个单位能够特殊化。呈现万就把转换中的后果乘 10000.
由这次的腾讯面试,总结了一份腾讯面试题材料,大家须要的请自取。点击这支付腾讯前端面试题
总结
我题目取的是人生须要一点 deadline,我之所以这样说,因为我口试的时候切实是太紧张了。照理说这 5 个题就两头第三题会难一点,然而最初 2 个小时我写进去了 4 个题。我想和我平时训练有余无关。我这里说的训练有余,即指本人题刷的比拟少,更指本人做 leetcode 的时候没有为本人设置 deadline。平时做题慢吞吞的,始终在调试,切实做不起了还能够看看他们的题解。ac 完了代码我还会去把本人的代码化简,但这些都不是最重要的。最重要的是有一个和面试最类似的环境。能够在最短的工夫内想出做题的思路,能最疾速的,最清晰的写出可能 ac 的代码。而不应该关怀这个式子是不是曾经化简到最简了。
因而咱们要为本人设置 deadline,平时后缓和起来,到本人去面试的时候,到这个实在的环境,就不这么缓和了。例如 leetcode 有模仿面试性能,大家能够去模仿面试一下。而后面试都是在牛客上进行,所以不能始终依赖 leetcode,也要在牛客网上训练(尽管这个平台不太好用,leetcode 好用)。不然到本人面试的时候像我一样平台都不相熟就死翘翘了。
喜爱这篇文章的小伙伴们请点赞 + 评论反对下哦,也祝在找工作在面试的小伙伴们顺顺利利,克敌制胜!