携程前端开发暑期实习一面

跟面试官聊了挺多,问的问题是真的多...而且很细致。写几个没答好的问题吧..

微信开发中unionid和openid的区别?

  • openid:一个用户+一个微信应用(微信开发平台下的应用,如公众号,小程序)唯一确定一个openid
  • unionid:一个用户唯一确定一个unionid(换言之,一个用户在微信平台下所有的unionid都是相同的)

ps:pc端和客户端同一用户获取的openid不一样

ES6中Map和Object的区别?WeakMap?

共同点:存储键值对的数据结构

不同点

  • 键类型:Object中的键类型只能是字符串或者Symbol;而Map的键类型可以是任何类型;WeakMap的键类型只能是对象
  • 遍历顺序:Object中的遍历顺序是不确定的;而Map的遍历顺序跟插入顺序相同,可以直接实现LRU缓存;WeakMap的键不可遍历
  • 键引用:Map中的键是强引用,键跟内存地址绑定;WeakMap中的键是弱引用,在键的引用计数清零时会被垃圾回收
Map和WeakMap

左:Map 右:WeakMap

有用过JS中的装饰器模式吗?(对装饰器模式不太熟悉,后续有时间补充一下相关知识)

在不改变对象基础上,动态为对象添加行为或者功能。ES6引入语法糖"@"。装饰器可以分为三类:函数装饰器,类装饰器,类成员装饰器。是类继承的一种替代方案,比继承更简洁且易于管理。

@readonly

webpack中loader和plugin的区别?(webpack知识点是真的枯燥,真没看多少)

作用:loader加载器主要是负责加载各种非js文件并进行编译,打包和压缩;plugin插件则是补足webpack原本无法完成的一些其他任务,如打包优化,环境变量注入等

作用时间:loader在webpack打包文件前作用;plugin作用贯穿整个生命周期,监听webpack广播出的生命周期事件,使用webpack API实现功能扩展

使用方法:webpack配置文件中,loader在rules字段对不同类型文件进行解析规则指定;plugins则在plugins字段以新建插件实例的方式引入

scss文件在webpack中的编译打包过程是怎么样的?

  1. 加载scss:sass-loader在js文件中根据模块化规则找到scss文件
  2. 编译scss:sass编译器将scss编译为css
  3. css-loader解析:根据css-loader对css文件进行加载并解析其中的@import和url()
  4. style-loader工作:将css样式插入html文件中

POST请求会返回几次?

两次,一次先发送header,返回100 continue,再发送body,返回200 OK。

后端传1w条数据,前端如何处理?

分片渲染(setTimeout / requestAnimationFrame)

将时间分片,隔一段时间插入一些DOM并做一次渲染。

文档碎片(document.createDocumentFragment)

调用多次document.body.append(),每次都要刷新页面一次。效率也就大打折扣了,而使用document_createDocumentFragment()创建一个文档碎片,把所有的新结点附加在其上,然后把文档碎片的内容一次性添加到document中,这也就只需要一次页面刷新就可(fragment存在于内存中)

虚拟列表(仅渲染视窗内区域)

根据列表项高度计算视窗内可渲染列表项数,动态维护需要展示的列表项,减少渲染压力。

https://codesandbox.io/s/virtuallist-1-rp8pi?file=/src/components/VirtualList.vue

全部评论
咱应该是同一个面试官吧,题目高度相似
点赞
送花
回复 分享
发布于 2023-03-17 16:01 天津
点赞
送花
回复 分享
发布于 2023-03-17 16:11 福建
国泰君安
校招火热招聘中
官网直投
先评论一下,别丢了
点赞
送花
回复 分享
发布于 2023-03-17 16:14 山西
m
点赞
送花
回复 分享
发布于 2023-03-17 16:17 广东
M
点赞
送花
回复 分享
发布于 2023-03-17 19:00 福建
m
点赞
送花
回复 分享
发布于 2023-03-17 20:47 北京
请问友友问的是装饰器还是设计模式中的装饰器模式呀,这块有点没理解
点赞
送花
回复 分享
发布于 2023-03-18 12:07 吉林
m
点赞
送花
回复 分享
发布于 2023-03-25 23:36 湖北
虚拟列表(仅渲染视窗内区域) 这个是要自己完全手写出来吗?还是给了部分代码呢
点赞
送花
回复 分享
发布于 2023-03-29 16:10 辽宁

相关推荐

点赞 评论 收藏
分享
三面:1.自我介绍2.讲一下创业?规模?形式和方向?我做的什么东西?用户量?3.创业的项目中遇到什么有挑战的事情(技术方面)?在图片处理方面的流程设计,做过什么性能优化吗?4.飞书做的工作介绍- 构建速度怎么优化的?- webpack 插件怎么做的?5.让你设计一个混淆压缩怎么做?Tree-shaking 怎么去除未引用代码?6.AST 怎么比较两端混淆的代码有抄袭情况?AST 里面的函数怎么转换去对比?7.Webpack 增量打包怎么做到的?8.再介绍一下飞书中的一些贡献点,pnpm + monorepo 包依赖治理9.做过游戏相关的事情吗?俄罗斯方块的物理碰撞用哪个物理引擎实现的?10.跨栈这边,flutter 这些了解过没11.你怎么保证短时间内把跨栈能力提升上来?你当时工程化啥也不会咋做的工程化?12.问我这边工资多少?我问了微信,差不了太多。让我可以和 hr 沟通。13.反问:- 游戏 + 前端 的发展方向怎么看待的- 小游戏发展现状和未来趋势- 实习生培养模式- 有什么可以提升的地方:一些算法之类的底层还需要花时间再深入一些四面:1.自我介绍2.你在飞书做了什么牛逼的业务,牛逼的事情3.妙记的业务难点4.你是怎么理解工程化的,结合具体案例讲5.CI 怎么做的6.开源怎么做的7.看看你的博客8.无感刷新 token 的意义,既然第二个 token 为一个月,为啥不直接给第一个 token 一个月9.反问已 oc,但考虑到很多因素只能拒绝了打个小广告,想加入社区打破信息差,或者想做开源的同学,欢迎来找我,目前在做一个脚手架项目,详见主页帖子#wxg暑假实习##面经##实习#
点赞 评论 收藏
分享
拷打了45min整体感觉还挺不错,面试官人也挺和善的实习经验拷打:1.自我介绍2.就你的经历说一下你认为最具有挑战的地方3.为什么要花那么多时间成本将选项式API改为组合式API呢,vue3它本身也兼容选项式API的,所以为什么要改呢,有没有和你的导师沟通过4.对这个api风格的改变,成本产出比有没有考量过,因为你迁移过去有一些老的东西不需要频繁的去维护,而且花了很多人力在上面5.有没有考虑过跟ld探讨这个问题,而不是下发一个命令就立刻去执行6.有没有考虑过大概花了多少时间成本在上面7.对公司业务的提升是什么,收益是什么,有没有思考过8:为什么要用状态管理工具呢,对整个公司的收益是什么深挖原理:9.你有没有了解过vuex背后实现的原理,也就是源码有看过吗10.对比一下VueUse和Vue Mixins11.说一下你用的useInsectionObsever的源码八股:12.事件委托有了解过吗,简单说一下13.说一下事件委托的应用场景(说了一下删除ul下的子li场景)14.你是如何准确的找到要删除的子li呢(e.target?15.简单说一下http和https的区别,以及https解决了一个什么问题16.非对称加密是整个传输都使用吗17.后续文本传输会用到非对称加密吗18.讲一下跨域19.跨域如何解决20.讲一下CORS实现原理和实现方法21.postmessage如何实现22.jsonp如何实现23.说一下哈希路由和历史路由的区别场景题:24.用原生js如何实现:渲染一个10000个子元素的列表 要求就是渲染不卡顿并且用户体验也很流畅,你该如何思考实现这个(大列表渲染)反问:1.base2.技术栈3.后面还有几面(保密4.还有hc嘛(保密本来还想问是不是KPI 心里想想得了更新:已挂 #机械转码# #找实习多的是你不知道的事# #不给转正的实习,你还去吗# #我的实习日记#
点赞 评论 收藏
分享
20 171 评论
分享
牛客网
牛客企业服务