字节互娱前端二面面经
是不是字节面试视频打不开就是挂了,说明没有下一轮了,挂了?
实习期间做了什么,部门介绍,抖音本地生活,有了解的这组咋样?说是今年刚成立,20多人,上海7、8人的样子
场景题
这部分没要求手写,口述思路,感觉最怕这种,答得比较差
实现Tooltip
追问是怎么保证弹出的提示框在原来的element上方,相对定位,绝对定位还是固定定位。应该是相对定位或者绝对定位都行,只答了相对定位
CSS画三角形
自己说了能想到的:一条边正好是矩形的一条边的情况
前端优化方案
答了以下
图片懒加载
路由懒加载
CDN加载依赖
SSR
服务端渲染对图片进行压缩,webp格式,HTTP2.0以前用精灵图,部分用CSS
只渲染可视部分DOM
async、defer
虚拟DOM
追尾了图片懒加载方案,讲了使用IntersectionObserver的懒加载
实现瀑布流
给了我个杨超越的例子:https://tieba.baidu.com/p/5849674065#!/l/p1 (电脑端打开,想不到面试官挺潮)
我说保存每列的高度,然后优先加载最矮的,详细的参考:https://www.jianshu.com/p/ef89f7965fc3
算法题
剑指 Offer 32 - III. 从上到下打印二叉树 III
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其层次遍历结果:
[ [3], [20,9], [15,7] ]
我的代码
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number[][]} */ var levelOrder = function(root) { if(!root) return []; const queue = [root]; const res = []; let level = 0; while(queue.length){ res[level] = []; let levelNum = queue.length; while (levelNum--) { const front = queue.shift(); res[level].push(front.val); if (front.left) queue.push(front.left); if (front.right) queue.push(front.right); } if (level % 2) { res[level].reverse(); } level++; } return res; };
最后顺便推荐一下牛客的《前端岗位面试真题宝典》专刊 ,内容是前端岗的面试八股文及答案,面试会考的内容基本都总结到了,解答也挺专业的。我正在学,性价比还是很不错的,推荐给大家!
#字节跳动22届秋招面试##面经##字节跳动##网易互娱##前端工程师#