百度提前批前端一面
	1. 如何清除浮动?(说了四种)
	2. px、em、rem说一下?
	3. 如何实现一个元素水平、垂直居中?(说了四种)
	4. CSS选择第一个元素、最后一个元素、3的整数倍子元素。(使用CSS3新增的结构伪类选择器就OK)
	5. 说一下伪类和伪元素的区别?(区别有三)
	6. 说一下原型和原型链?
	7. 说一下闭包以及应用场景。
	8. 说一下防抖和节流。
	9.  说一下事件循环?
	10. TCP和UDP的区别?
	11. 为什么说UDP是不可靠的?
	12. 说一下TCP报文头部的结构。(前面的还记得,标志位后面的就不记得了,尴尬)
	2字节的源端口和目标端口、4字节的序列号SEQ,4字节的确认号ACK,标志位(SYN、ACK、FIN、RST、PSH等)、2字节的窗口大小、2字节校验和、2字节紧急指针、可选项。
	13. 说一下Promise的优缺点?优点不说了,缺点有三:
	- Promise无法取消,一旦新建就会立即执行
	- 不设置回调函数,Promise内部抛出的错误无法反应到外部
	- 当处于pending状态时,无法得知目前处于哪一阶段(刚刚开始还是即将完成)
	14. 简单实现一下Promise。(简单实现了一下,给面试官看了可以,如果完整实现标准的话代码很多)
	15. 你实习项目中的难点?
	16. 原型链的问题,以下代码输出什么?并解释:
			var F = function() {};
		
		
			Object.prototype.a = function() {
		
		
			console.log('a');
		
		
			};
		
		
			Function.prototype.b = function() {
		
		
			console.log('b');
		
		
			} ;
		
		
			var f = new F();
		
		
			f.a();
		
		
			f.b();
		
		
			F.a();
		
		
			F.b();
		
	
	17. 作用域的问题,以下代码输出什么?并解释:
	for (let i = 0; i < 3; i++) {
	setTimeout(() => console.log(i), 1);
	}
	for (var j = 0; j < 3; j++) {
	setTimeout(() => console.log(j), 1);
	}
	18. 以下代码输出什么?并解释:
	function Foo() {
	Foo.a = function() {
	console.log(1)
	}
	this.a = function() {
	console.log(2)
	}
	}
	Foo.prototype.a = function() {
	console.log(3)
	}
	Foo.a = function() {
	console.log(4)
	}
	Foo.a();
	let obj = new Foo();
	obj.a();
	Foo.a();
	19. 事件循环的问题,以下代码输出什么?并解释:(async1 start的输出顺序我写错了,记住await是让出线程的标志,会把之后的代码放入microtask中)
	async function async1() {
	console.log('async1 start');
	await async2();
	.log('async1 end');
	}
	async function async2() {
	console.log('async2');
	}
	console.log('script start');
	setTimeout(function() {
	console.log('setTimeout');
	}, 0)
	async1();
	new Promise(function(resolve) {
	console.log('promise1');
	resolve();
	}).then(function() {
	console.log('promise2');
	});
	console.log('script end');
	20. 写一个快排(这个很easy了,可是有个边界情况没注意到,测试用例输出的时候有点问题,调试了一会,尴尬~)
	整个面试持续了一个小时十分钟吧,问的比较全面,比较欣赏出的题,就是框架没问,最后问了一下部门主要用Vue,而我简历上写的是React应该是这个原因吧。
#百度##前端##前端工程师##秋招##面经##校招#

