腾讯2025暑期实习提前批前端开发面经(已OC)

timeline:2.10投递简历,2.11完成测评,2.12一面邀请,2.13一面(面完5分钟左右显示通过),2.14电话约二面,2.17二面(结束5分钟左右显示通过),2.17下午邀请hr面,2.18早上hr面,晚上9点offer call。

一面

1. 介绍一下你之前实习做的事情

2. xxx我不是很理解,你再解释一下

3. 说一个你实习过程中做一个技术点,从前端视角的一个技术点,不是业务相关的

4. 针对上面提到的业务场景(分页),提出一些角度比较刁钻的问题,问你如何解决(场景题)

5. 你有没有用过以前那种没有Ract hook 的那个年代的代码

6. hook 的这种 state 跟常规的类组件的这种 state 还有啥区别?使用上有啥不一样的地方

7. 针对上面提的问题,面试官写了一段代码,接下来进入代码输出题:

const demo = (props.a) => {
	const [x, setX] = useState(0);
	
	console.log('change');
	
	return <div>{x}</div>
}

8. 什么时候console.log会执行,什么情况组件会重新渲染,props.a改变的时候会重新渲染吗

9. 假如我们通过某种操作修改了x的值,然后props.a改变了,组件重新渲染,为什么x不会重新初始化为0?换句话来说,所谓的函数式组件它究竟是怎么工作起来的?就在什么时候他会跑,什么时候不会跑?

10. 再考虑一种情况,就是假如在这个组件里创建一个函数用来请求数据,每次重新渲染的时候都会重新请求,那不就意味着每次 props 变化它都会去发请求吗?如何解决这个问题

11. 算法题:假如有类似于2a23c35b这样的一个字符串s ,里面包含数字和字母,返回值最大的数字字符串(此处应返回35,因为35>23>2)

二面

1. 上一个面试官已经介绍我们的业务了,你还有哪些不清楚或者想问的地方吗?

2. 做个自我介绍吧

3. 为什么对前端更感兴趣

4. 你老家在哪里

5. 可以实习多久

6. 说一说你在实习过程中做了哪些事情,什么都可以

7. 询问实习工作中的技术细节,如何实现的

8. 你觉得在这个过程中你学到了什么

9. 智力题:假设有一千堆草,但是有一个有毒,如何用尽量少的小白兔找到哪个是有毒的

10. 平时有什么兴趣爱好

反问:

1. 如果面试顺利的话,进去会负责什么工作

2. 面试官:题到这里我想问一句,你英语应该挺好吧,我们这边有和海外合作的项目,可以由你来做。

3. 希望我多久入职

碎碎念

1. 一面70分钟左右(开摄像头),二面50分钟(未开摄像头),两个面试官都非常友好,都很详细地介绍了自己这边的业务和技术栈,流程也推进得相当快,坐标PCG。

2. 我之前的工作中只用过react,但是面试的部门用的是vue,说明对前端框架的要求没有卡的很死,但在面试过程中要表达自己强烈的学习意愿。

3. 我在投递选择意向的时候是精确到某个部门的,因为和我的过往实习业务比较匹配,我觉得这是挺重要的,可以提升简历被捞和通过概率。

4. hr面中问了hc情况和招收实习生个数,说在招的都是有转正机会的,一个组/部门(记不清了)大概招2-3个前端实习生

5. hr面完之后以为还需要排序/录用评估,但是直接跳过了录用评估,直接oc了,我觉得是因为目前面试的人还不多?提早投递可以错峰出行

6. 关于这次面试的准备情况:由于一直在实习,没怎么复习八股,算法题也刷的不多,不过幸好上周面了字节的一个日常实习提前练了练手(面评已烂别学我),当时我想用py但面试官让我用js写算法,表现的比较差一面挂了,不过因祸得福,我开始用js重新刷算法题,后面腾讯面试的时候才比较得心应手

想都不敢想,暑期实习竟然这么草率地找到了,只能说运气太重要了,从面经就可以看出难度非常低,遇到看得对眼的面试官很重要

#前端开发##暑期提前批##暑期实习##腾讯#
全部评论
今晚tx二面 接接佬的好运😍 也祝福佬后面入职都一切顺利😍
2 回复 分享
发布于 02-20 11:54 辽宁
接好运
2 回复 分享
发布于 02-20 11:51 北京
天哪面试代码还会要求用js写吗?从未写过一直用的c++
1 回复 分享
发布于 02-22 22:18 广东
🐮
1 回复 分享
发布于 02-20 23:02 吉林
楼主大大,现在拿了offer可以6月再入职吗
1 回复 分享
发布于 02-20 19:30 北京
接好运
1 回复 分享
发布于 02-20 12:33 广东
接好运
点赞 回复 分享
发布于 03-10 21:00 美国
接好运!!!
点赞 回复 分享
发布于 03-07 13:17 湖南
点赞 回复 分享
发布于 03-03 00:56 湖北
一面的 5678910 都是逐步向深处挖掘提问,面试官真的好会引导
点赞 回复 分享
发布于 03-02 00:23 湖北
老哥,你面试的哪个部门呀
点赞 回复 分享
发布于 02-25 23:59 上海
所以智力题怎么答的😂😂😂
点赞 回复 分享
发布于 02-25 17:01 陕西
接好运
点赞 回复 分享
发布于 02-25 15:09 北京
可以选择入职时间吗
点赞 回复 分享
发布于 02-24 22:23 浙江
接好运
点赞 回复 分享
发布于 02-24 12:07 江苏
什么时候入职呀 可以选时间吗
点赞 回复 分享
发布于 02-24 10:33 新加坡
请问什么时候入职 入职时间可以选吗
点赞 回复 分享
发布于 02-24 10:30 新加坡
佬啥时候入职啊?
点赞 回复 分享
发布于 02-23 17:46 湖北
二面没技术问题么
点赞 回复 分享
发布于 02-20 19:38 北京
接好运
点赞 回复 分享
发布于 02-20 19:30 北京

相关推荐

字节跳动前端二面失败面经:复盘与反思一、面试整体感受本次字节跳动前端二面的考核强度明显提升,面试官从计算机基础、CSS&nbsp;知识,到&nbsp;JavaScript&nbsp;核心概念与实践应用层层深入,虽然最终遗憾未通过,但这次经历让我清晰认识到自身知识体系的薄弱环节。二、面试问题回顾与解析1.&nbsp;CS&nbsp;基础与&nbsp;CSS&nbsp;考察•&nbsp;实现父容器一半大小的正方形:我第一反应是使用&nbsp;vw&nbsp;单位,将子容器的&nbsp;width&nbsp;和&nbsp;height&nbsp;都设置为&nbsp;50vw。但面试官的意图更倾向于基于父容器尺寸的相对计算,正确思路应该是通过百分比结合&nbsp;padding-bottom&nbsp;实现等比例正方形(如&nbsp;width:&nbsp;50%;&nbsp;padding-bottom:&nbsp;50%;),并利用&nbsp;position&nbsp;或&nbsp;flex&nbsp;布局定位到父容器内。•&nbsp;CSS&nbsp;盒模型:我准确回答了&nbsp;标准盒模型(content-box)&nbsp;和&nbsp;怪异盒模型(border-box)&nbsp;的区别,重点说明了&nbsp;box-sizing&nbsp;属性对尺寸计算的影响。2.&nbsp;JavaScript&nbsp;核心概念与&nbsp;BOM&nbsp;考察•&nbsp;BOM(浏览器对象模型):当被问到&nbsp;BOM&nbsp;相关知识时,我对&nbsp;window&nbsp;对象的属性(如&nbsp;location、history)和方法(setTimeout、addEventListener&nbsp;等)掌握不够熟练,回答较为模糊,暴露出日常学习中对浏览器环境底层知识的忽视。•&nbsp;事件委托:面试官询问事件委托原理时,我错误地将其等同于事件冒泡。实际上,事件委托是利用事件冒泡机制,将子元素的事件处理委托给父元素,从而减少内存占用和提高性能。例如,在列表项点击事件中,可将点击事件绑定在列表容器上,通过判断事件源&nbsp;event.target&nbsp;处理具体逻辑。3.&nbsp;代码实战环节•&nbsp;实现&nbsp;JavaScript&nbsp;链式调用并支持&nbsp;bind&nbsp;功能:题目要求实现类似&nbsp;i.initial(5).add(5).minus(3).plus(5).result&nbsp;的链式调用,并能使用&nbsp;bind&nbsp;修改内部状态。我顺利完成了基础的链式调用逻辑,通过返回&nbsp;this&nbsp;实现连续调用,并维护一个内部变量记录计算结果:function&nbsp;Chain()&nbsp;{&nbsp;&nbsp;this.value&nbsp;=&nbsp;0;&nbsp;&nbsp;this.initial&nbsp;=&nbsp;function&nbsp;(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;this.value&nbsp;=&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this;&nbsp;&nbsp;};&nbsp;&nbsp;this.add&nbsp;=&nbsp;function&nbsp;(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;this.value&nbsp;+=&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this;&nbsp;&nbsp;};&nbsp;&nbsp;this.minus&nbsp;=&nbsp;function&nbsp;(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;this.value&nbsp;-=&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this;&nbsp;&nbsp;};&nbsp;&nbsp;this.plus&nbsp;=&nbsp;function&nbsp;(num)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;this.value&nbsp;+=&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this;&nbsp;&nbsp;};&nbsp;&nbsp;this.result&nbsp;=&nbsp;function&nbsp;()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.value;&nbsp;&nbsp;};}但在实现&nbsp;bind&nbsp;功能时,由于对&nbsp;bind&nbsp;改变函数&nbsp;this&nbsp;指向的原理理解不足,未能完成。正确思路是通过&nbsp;Function.prototype.bind&nbsp;方法创建一个新函数,在新函数中调用原始方法,并传入绑定的参数和&nbsp;this&nbsp;值。•&nbsp;封装安全的&nbsp;React&nbsp;Hook:需求是处理可能失败的异步请求,并确保数据安全。我通过&nbsp;useState&nbsp;和&nbsp;useEffect&nbsp;实现了一个简单的&nbsp;fetch&nbsp;请求钩子,在&nbsp;catch&nbsp;块中处理错误,并添加了加载状态和错误信息的状态管理:import&nbsp;{&nbsp;useState,&nbsp;useEffect&nbsp;}&nbsp;from'react';const&nbsp;useSafeFetch&nbsp;=&nbsp;(url)&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;const&nbsp;[data,&nbsp;setData]&nbsp;=&nbsp;useState(null);&nbsp;&nbsp;const&nbsp;[loading,&nbsp;setLoading]&nbsp;=&nbsp;useState(true);&nbsp;&nbsp;const&nbsp;[error,&nbsp;setError]&nbsp;=&nbsp;useState(null);&nbsp;&nbsp;useEffect(()&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;fetchData&nbsp;=&nbsp;async&nbsp;()&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;response&nbsp;=&nbsp;await&nbsp;fetch(url);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;result&nbsp;=&nbsp;await&nbsp;response.json();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setData(result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(err)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setError(err);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;finally&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLoading(false);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;fetchData();&nbsp;&nbsp;},&nbsp;[url]);&nbsp;&nbsp;return&nbsp;{&nbsp;data,&nbsp;loading,&nbsp;error&nbsp;};};•&nbsp;手写&nbsp;JSONP&nbsp;函数:要求传入&nbsp;URL、成功回调、失败回调和超时时间。由于对&nbsp;window&nbsp;对象动态创建&nbsp;script&nbsp;标签、onerror&nbsp;和&nbsp;onload&nbsp;事件,以及&nbsp;clearTimeout&nbsp;等原生方法不够熟悉,最终未能完整实现。正确实现思路如下:function&nbsp;jsonp(url,&nbsp;successCallback,&nbsp;errorCallback,&nbsp;timeout)&nbsp;{&nbsp;&nbsp;const&nbsp;script&nbsp;=&nbsp;document.createElement('script');&nbsp;&nbsp;const&nbsp;callbackName&nbsp;=&nbsp;`jsonp_callback_${Date.now()}`;&nbsp;&nbsp;window[callbackName]&nbsp;=&nbsp;(data)&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(timer);&nbsp;&nbsp;&nbsp;&nbsp;document.body.removeChild(script);&nbsp;&nbsp;&nbsp;&nbsp;successCallback(data);&nbsp;&nbsp;};&nbsp;&nbsp;script.src&nbsp;=&nbsp;`${url}&amp;amp;callback=${callbackName}`;&nbsp;&nbsp;script.onerror&nbsp;=&nbsp;()&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(timer);&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;window[callbackName];&nbsp;&nbsp;&nbsp;&nbsp;errorCallback(new&nbsp;Error('JSONP&nbsp;request&nbsp;failed'));&nbsp;&nbsp;};&nbsp;&nbsp;document.body.appendChild(script);&nbsp;&nbsp;const&nbsp;timer&nbsp;=&nbsp;setTimeout(()&nbsp;=&amp;gt;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;document.body.removeChild(script);&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;window[callbackName];&nbsp;&nbsp;&nbsp;&nbsp;errorCallback(new&nbsp;Error('JSONP&nbsp;request&nbsp;timed&nbsp;out'));&nbsp;&nbsp;},&nbsp;timeout);}三、总结与反思此次面试失败暴露出我在&nbsp;BOM&nbsp;细节、事件机制、函数绑定原理&nbsp;等基础知识上的不足,以及&nbsp;复杂场景下代码实现能力&nbsp;的欠缺。未来准备面试时,需更深入理解&nbsp;JavaScript&nbsp;原型链、作用域、this&nbsp;机制等核心概念,同时加强手写代码的练习,尤其是对原生&nbsp;API&nbsp;的熟练运用。希望我的经历能为大家提供参考,避免踩坑!
字节跳动二面502人在聊 查看7道真题和解析
点赞 评论 收藏
分享
评论
25
56
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务