当前位置: 首页 > 面试经验 >

0828字节笔面经

优质
小牛编辑
87浏览
2023-03-28

0828字节笔面经

更新0914

昨天刚二面完,今天早上就收到问卷了,多半是挂了,写下面经吧。


9月9号  ---   字节一面【80分钟】
总体来说体验非常好, 问题都是基于项目的,我自己的基础和深度都有,一面完第二天下午就学面了。问题大致涉及以下几个方面

前端监控
webpack
同源与缓存
前端监控
算法题考的是  最长不重复子串



9月13号  ----  字节二面【60分钟】
总结起来就是触不及防, 因为之前在春招投实习的时候,二面重点问的是vue框架原理,就以为这次也会往原理这个方向问。 
结果问了  编译原理,操作系统,然后其他的会问你一些简历中知识点比较偏僻方向,这个还好,主要是那两门课基本上都没怎么答上来。 感觉就是来刷人的

算法题考的是  合并数组,将有相同元素的数组合并,类似于并查集。




总结

从最开始的面试到现在,概括了以下几个考察的方向
1. 前端基础(广度)
2. 前端深度(项目)
3. 底层框架的原理
4. 计网,编译原理,操作系统
5. 经历类问题(如怎么解决问题,遇到什么困难等等)

以上5个方向目前就第四个 中的除计网外的课程没把握,其他的都没问题………

现在已经不想投秋招了,准备投实习去了



第一道是与完全二叉树有关的。 第二道是数组乘积(最开始用暴力过了30%后, 确认了不是乘积太大的问题。 后来改了40多分钟, 最后用双指针解决了)


第二题有两个关键点
第一个是是那个0, 要连续乘积最大, 肯定是以0分隔的嘛
第二个关键点就是 x 和 y 的值, 应该在什么时候更新?
  • x 要最小, 即连续区间的第一个点, 那么在遇到0的时候考虑更新即可。
  • y 要最小, 就有可能出现这种情况 1 2 4 1,  此时y应该是4, 而不是1, 所以在遇到0之前与maxSum比大小

// 获取节点
let nodes = [1,-1,3,-1,-1,2,5];
let m = 12;

//handle();

function handle() {
	let sum = 0;
	let count = 0;
	let isleaf = false;
	// 判断是否是完全二叉树, 只用遍历父节点
	for(let i = nodes.length - 1; i >= nodes.length / 2; i--) {
		let cur = nodes[i];// 当前节点
		// 找父节点
		let f = nodes[(i - 1) / 2 ];
		if(f == -1) {
			console.log(false);
			console.log(0)
			return;
		}
   
	}
	
	// 判断第二行是否合法
	if(m < 0 || m > 100) {
		console.log(false);
		console.log(0)
		return;
	}
	
	
	// 判断节点是否合法
	for (let i = 0; i < nodes.length; i++) {
		if (nodes[i] < -1 || nodes[i] > 5) {
			console.log(false);
			console.log(0)
			return;	
		}
		
		if(nodes[i] !== -1) {
			sum += nodes[i];
			count++;
		}		
	}	
	
	console.log("true");
	let diff = m - (count * 5 - sum)
	console.log(diff < 0 ? 0 : diff);
	







function handle2() {
	
	let n = 5
	let line = [1,2,4,0,8]
	let maxSum = -1;
	let point = {x: 0, y: 0}
	let start = 0;
	
	
	
	
	let sum = 1;
	let pre = 0; // 前一个指针
	let las = 0; // 移动的指针
	point.x = 0;
	point.y = 0;

	let isZero = false;
	while (las < n) {
		
		let cur = line[las]
		if (cur == 0) {
			las++;
			pre = las;
			sum = 1;
			isZero = true;
		} else {
			// 正常情况 1 2 4 0 在2时
			// 计算sum大小, 如果大, 就更新y;
			sum *= cur;
			if (sum > maxSum) {
				maxSum = sum;
				if (isZero) {
					point.x = pre;
					isZero = false
				}
				point.y = las;
			}
			las++;
		}
		
	}
	
	console.log(point.x+1,point.y+1)
	
		
}



#字节跳动笔试##字节跳动##字节跳动面经##前端##面经#
 类似资料: