腾讯音乐TME-Q音暑期实习前端二面4.2
被现任leader狠狠拷打的一场短短50min的面试感觉自己被拷打废了,因为答不上来,感觉比微信支付一面还要折磨(意外的过了,我面完完全就没指望自己能过)
自我介绍
什么时候开始自学前端的
讲的这些项目里,哪个项目做的最好,可以讲下在过程中遇到的一些技术问题吗
问我的拖拽是如何实现的
低码平台的结果是不是生成一个页面的代码发外网
你在pc端的画布是这样的一个分辨率,那你去外网不同设备的分辨率不同,你怎么处理呢
缩放的话,有没有去了解过自适应这种的
有两个组件,我想实现一个组件,点击后可以操作另一个组件,你觉得这种组件之间的关联关系应该如何设计?
(点击a组件,可以让b组件触发某个命令)(提的事件总线方案)
B组件怎么知道A组件会触发哪些事件,因为不同的组件是不同的人开发的,怎么知道对方会支持哪些组件
有什么办法可以让后面需求的组件快速知道前面组件有哪些功能(提示说可以定义好暴露出哪些接口)
你是出于什么原因去设计组件库的?是市面上的组件库有什么缺点吗?
场景题:
现在有一个歌曲列表页,展示用户收藏的歌曲,每首歌我都希望展示他的歌曲封面,这样的话就会展示很多图片
我希望实现的是在加载图片前,可以在图片位置上展示一个占位图,比如一个灰色的背景图片,加载成功后替换成真实图片,加载失败后替换为加载失败的图片,这整个过程该如何实现?
(我提了promise的方案,说不行,1000张图既要消耗dom,又要监听,又要考虑加载和销毁的开销,1000张图4000开销问我有没有更好的方案,不道儿啊)
关于图片的压缩方法,了解什么
如何实现,让支持webp格式的浏览器使用webp,不支持的下发jpg,这样?这个判断该怎么做?
已知苹果和谷歌都有webp标识,ios早期版本不支持,edge早期版本也不支持,提供了一个播放插件,判断是否支持(x 预加载)
提示:考虑http请求头的一些字段
客户端向服务器发起一些请求,服务器怎么知道浏览器想要的是什么样的结果?(请求头accept告诉服务端我想要什么资源 我支持哪些格式的资源)
这个就可以判断支不支持对应格式的图片了
关于图片性能优化的手段还了解哪些 页面性能优化的方案
我提说js放最后异步加载,他说放尾部,页面加载到这里之前都是空白,有无其他方法
你提的这些js,css优化方法,他们为什么要这么做
白屏优化,有哪些方案
你怎么去采集用户端的一些性能数据(我说考虑用户侧埋点)
问我怎么用js收集用户机型信息
更极端的情况:假设页面白屏是因为js加载失败或html加载失败,这时你在js中还怎么采集用户数据
js直接下载失败,根本下载不下来,怎么办
还是歌曲列表页,我点击一首歌,浏览器打开一个新页面,展示这首歌的信息(打开歌曲播放页)
此时用户在歌曲列表页打开另一首歌,歌曲播放页要更新成新的歌曲(播放页最多只会存在一个)这个怎么实现
如何把歌曲id告诉播放页(这是两个独立的页面,不能通过组件通信的方式,是浏览器间的跨页面通信)
postmessage要拿到对应页面的windows对象,列表页和播放页是独立的,我怎么拿到另一个页面的windows对象(貌似拿不到)
localstorage方案的话,列表页把歌曲id写到localstorage,歌曲页怎么知道ls里的歌曲id什么时候发生了变化,我什么时候要根据变了的歌曲id来更新页面
页面通信肯定是A告诉B,B回复A,ls只是共享存储,怎么去实现页面的通信过程
URL传参?他说只能实现第一次打开过程中的参数传递,后面的更新过程无法实现(还有其他方案吗)
提示:轮询监听,每隔0.5s查一次,在歌曲播放页实时监测
这样的话我在歌曲列表页,如何知道歌曲播放页是否存在呢(如果不存在,需要新开,怎么检测呢?)提示:心跳机制
我提了websocket的心跳机制来类比,又问怎么发数据包给播放页?
两个页面之间可以建立socket连接吗?如果可以的话刚才的方案就完全没必要了
然后介绍业务、技术栈
反问
学习建议(网上的教程需要深入的去了解和实践,js要更加系统性的学习,js红宝书介绍的非常全面,推荐了,会更加系统的介绍)
他问我实习的时间 实习期
我反问了base