今天面试字节,投了一周唯一一个面试,害,现在前端感觉比去年卷好多,现在记录一下,不知道中午没接的来自哔哩哔哩的电话是不是约面的,害
- 首先就是惯例的自我介绍
- 然后就是介绍一下自己写的项目
- 说一下性能优化(我前面有篇文章完整讲过)
- 讲一下浏览器的缓存,强缓存和协商缓存
- 最后写三代编程题
- 树状结构的数据,{name:'jack',child:[{name:'jack1',child:{name:'jack2'}},{name:'jack3'}]},找出所有有两个或以上儿子的名字,跟数组拉平很像,只不过要多加一个判断不是数组的时候child也有可能是数组
- 简单手写一下vue的数据绑定 这个我问面试官能不能查下api,中途面试官换了题目,因为我对api确实不够了解
- 给一个cdn数组和图片路径,判断哪个cdn能够最快返回图片,这个主要就是考察promise.race的考察,判断图片加载是否完成主要就是靠new image()
下面就重新写下自己回答的不好的地方,方便下次回答得更好
- 首先是个人博客项目,这是当时集合了我所有前端技术的项目,完成了博客的浏览,归档,评论,和一些兴趣爱好分享功能,使用了各种动画,如骨骼动画,粒子动画,以及各种特效,文字特效,过长特效之类的,让页面交互体验比较新颖,当时写项目时遇到困难就是导航栏的动画,项目所有动画用的都是vue的动画,会根据v-show属性改变,当时为了路由跳转后导航栏能有插入的特效,添加了中间空白状态,先变空白然后用nexttick重新显示,直接改变属性看不到动画,然后就是多级评论当时自己写的时候比较麻烦,就是设计数据结构和递归组件,分片思想显示首页博客文章;然后是windows11项目,如之前文章所写的那个样子;以及今年的服创比赛项目,是和实验室的同学一起参加的,前端页面已经差不多了
- 然后是手写vue数据绑定 主要就是proxy和Object.defineProperty的api应用
Object.defineProperty(, 'property1', {
value: 42,
writable: false
});
let proxy = new Proxy(exam, {
get(target, propKey, receiver) {
console.log('Getting ' + propKey);
return target[propKey];
}
})
function cdnspeed(cdns,imgpath){
cdns=cdns.map((item,index)=>new promise((reslove,reject)=>{
let img=new Image();
img.onload=function(){ resolve(index) }
img.src=imgpath;
}))
Promise.race(cdns)
}