拼多多实习面经(附内推)

#软件开发2024笔面经#
一面
面试官:先来个布局的吧!如何让一个元素垂直居中

我:行内元素就line-height、块级元素就flex、grid、table-cell布局都可以,还有定位+translate,这个兼容性较好。

面试官:了解过新的css属性?比如layer

我:没有

面试官:说一下this

我:this是运行时上下文,是函数内为了访问类的属性而存在,其中箭头函数的this就是其定义时外部的this,而bind、call、apply都可以改变函数内this的指向。

面试官:箭头函数的this可以改变吗?

我:没试过

面试官:做道题吧,深拷贝

我:知道,但是没写过

我:写了个递归+复制对象的属性

面试官:如果入参不是对象怎么办,比如boolean、number、string、null、undefined、array

我:补充了很多判断代码,基础数据类型/null/undefined就直接返回、array/objet就forin遍历然后返回

面试官:如果a对象引用了b对象,b对象引用了a对象怎么办,引用循环问题

我:写了一个cache缓存器,如果遍历过程中cache中有a,则直接返回,不再深拷贝

面试官:你这个cache怎么清空,什么时候清空

我:这里我并没有将cache传入给深拷贝函数,在函数体里面清空,而是在函数体外定义、清空cache。然后面试官推荐了一个写法,将cache传入进去,然后在深度为1时清空它。属于缓存优化

面试官:再做一道题吧,promise相关的

我:如果了解promise的话,这题不难,说出打印顺序即可

一面说实在我还是很菜的,深拷贝得面试官多次提醒才能完善,但至少还在可接受范围内,面试官很柔和。

二面
面试官:你先做一下这道题,只能使用队列,不能使用别的数据结构来实现栈的功能。

我:考虑了几分钟后,我说出了思路,在入栈时,调用的入队,同时更新min最小值。

出栈时将队列中的最后一位的前面的元素都拿出来,然后放入队列后,然后拿出最后一个就是出栈元素。

但是打印最小值时有点问题,我想了一会,然后得出,在出栈时,会遍历到所有的元素,所以可以在这个过程更新最小值。

面试官:好,那你写出来吧

我:写呀写,写完之后,有个用例没法通过,然后人脑debug一下,原来在出栈时,更新最小值时,得先将最小值重置。

面试官:问了简历里,写的所有的项目

面试官:那你说一下vue和react的差别吧

我:vue2了解的多,react了解不多,两者最大的区别是虚拟dom结构,vue2是一颗结构很正常的树,react是一个fiber树,两者树的实现方式不一样。react的patchnode算法和vue的不一样,react是全量比较vDom,vue是组件层级比较vDom。react和vue的对于children的比较算法也不一样,然后,个人觉得vue高效一些(这里答的有点模糊了我)。
二面面试官属于硬核派,上来先做题,但确实是知识面碾压。
三面-主管面-电话面
之前不知道主管面是什么,我以为还是技术面,所以我回答的有点牛头不对马嘴了。
面试官就主要问项目实现方式(不需要硬核的技术层)就没了。

内推链接:(实习生招聘)
https://careers.pinduoduo.com/campus/intern?t=Q1RKK3fACC,内推码:Q1RKK3fACC

欢迎随时咨询联系
全部评论

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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