字节跳动前端实习一面二面HR面面经

16号做完笔试,后来约了21号一面,25号二面,一面面试官看起来比较和蔼,一来就是自我介绍,他说前端的问题我也没准备多少,我就知道他不是前端的了,瞬间有点方。

一面

  • 一开始是数据结构的题,二叉树相关,已知前序遍历和中序遍历的结果,求树的结构,这个讲了一下思路面试官就给过了。
  • http请求方法有哪些?
  • 跨域问题遇过吗?什么办法可以解决?讲了一下cors,jsonp,websocket,postmessage,反向代理等
  • 讲一下前端安全?xss,csrf,说一下他们具体是什么,如何预防?
  • TCP连接和断开过程(三次招手,四次挥手)
  • cookie localStorage sessionStorage有什么区别?
  • https和http有什么区别?(TLS套接层协议)
  • 如果登陆的请求是https,而其它的请求是http的会出现什么问题?(一开始答了跨域的问题,后来想了一下,答了cookie会加密,可能导致其它请求无法通过身份验证)
  • 最后面试官问我接触过redux吗?我说没有我学的是vue,应该是react里面的状态管理工具,相当于vuex
  • 面试官没什么问题了,提问时间到,我问他对前端学习和发展的建议,他说前端啊,我也不知道,哈哈超可爱,然后说但是我看旁边一些比较厉害的,都是有目标的。第二个问题我问他对我的总体评价和针对我的一些建议,他说你说你现在大三,大三有这个水平已经不错了(天啊这是我遇过的说话最好听的面试官),要有目标有计划地学习之类的。20多分钟后收到二面通知。

二面

二面是下载zoom软件,可以视频,也可以共享屏幕,还用石墨文档分享题目。一共面了快一个半钟,问了很多,手撕三次代码。面试官看起来比较严肃,先让我自我介绍,说说项目,说说项目难点,但是感觉他没怎么在意听,就大概说了几句。

  • 第一道题是css相关,实现一个div在页面中垂直水平居中,然后高度是宽度的一半(实现不了也可以固定为200px)div里有文字A垂直水平居中,用本地IDE共享代码给面试官,贴一下当时的代码:
<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		*{
			margin:0;
			padding:0;
		}
		body,html{
			width: 100%;
			height: 100%;
		}
		.content{
			width: 100%;
			height: 100%;
			padding:10px 0px;
		}
		.box{
			display: flex;
			align-items: center;
			justify-content: center;
			width: calc(100vw-20px);
			height: calc(50vw-10px);
			font-size: 20px;
			position: absolute;
			top: 50%;
			transform: translateY(-50%);
		}
	</style>
</head>
<body>
	<div class="content">
		<div class="box">A</div>
	</div>
</body>
</html>

写完后面试官问我vw,vh,vmin,vmax的区别?垂直水平居中的其它实现方法?

  • 一个div里面有个span,span里有很多字,这时候给span加一个border会咋样显示,这个题我没答对,面试官跟我解释了一下
  • margin合并问题,解决方法?BFC和IFC的区别?
  • chrome的字体最小为12px,如何设置10px的字体(使用transform:scale()属性进行缩放)
  • 为什么设置font-weight是数字的时候作用会失效?(这个有点懵的,然后面试官说这个有点偏了,然后告诉我是因为用了一些特殊的字体,它们没有实现该粗细的字体,真好,学到了)
  • 浏览器缓存相关的问题?讲了一下协商缓存的机制,简单请求和options预检请求
  • 说一下es6的promise的状态,实现原理?
  • 一道eventLoop的题,直接写出输出结果,然后说一下一次事件循环的过程,在题目中标出每一次事件循环
  • 中间问的一些细节问题有点忘了哈
  • 写代码,实现一个累加函数的功能比如sum(1,2,3)(2).valueOf()//8,写完后面试官说总体思路是对的,柯里化,但是一些细节要注意一下(当时变量有的写错了),贴上当时的代码:
function sum(...args){
	var args=[...args]
	var cache=0
	if(args.length===0){
		throw new Error('参数不能为空')
	}else if(args.length===1){
		cache+=args[0]
	}else{
		for(let i=0;i<args.length;i++){
			cache+=args[i]
		}
	}
	var add=function(...args1){
		var args1=[...args1]
		if(args1.length===0){
			throw new Error('参数不能为空')
		}
		for(let i=0;i<args1.length;i++){
			cache+=args1[i]
		}
		return add
	}
	add.valueOf=function(){
		console.log(cache)
	}
	return add
}

最后面试官出了道原型继承的题,我当时没看石墨文档直接在本地IDE写了两个函数然后组合继承,他说让我看看文档,要我封装一个实现继承的函数,这就是高程那本书里面的一段代码,贴一下:

function object(o){
	function F(){}
	F.prototype=o
	return new F
}
function inherit(subType,superType){
	var prototype=object(superType.prototype)
	prototype.constructor=subType
	subType.prototype=prototype
}

面试到这里就到尾声了,面试官评价我学习前端感觉挺有热情(字节面试官说话都挺好听耶),然后面完当天没有hr给我打电话我以为我大概凉了,没想到第二天hr约我hr面了,心情难以言喻。

三面

面试官是个hr小姐姐,问的是:为什么选择北京的公司?还面了哪些公司?父母对你到其它城市的看法?生活学习中坚持最久的是什么?推荐一本书会推荐什么?为什么推荐?你觉得你能给团队带来什么?

发布了15 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41531446/article/details/88903436