Raighne's Blog

近日面试总结

进入大四,找实习成了一件非常重要的事情,由于学校里还有课程没有结束,毕设的课题老师也没有选定,没敢大规模的投递简历,就试着投了两份简历给心仪的公司,座标都是上海的互联网公司,办事的效率都很高也很灵活,知道我还在学校,便安排了电话面试。第一次难免是紧张的,在面试的半个小时里面,多次处于颤抖状态,所以面试的自我感觉不是很好,又挨着国庆放假,所以最终结果还没有出来,但我感觉十有八九没戏了。

两家面试的流程都是差不多,先让你自我介绍一下,第一次面试太紧张,准备了技术方面的问题,没准备到这里,回答的不是很好,介绍了自己的基本信息,笼统的说了下大学的学习生活,最后也就没话说了。其实应该自信一下,突出介绍自己的优点,要给面试官留下好的印象。比如介绍自己通信工程专业,从大二开始自学计算机专业的内容,这里就应该大方的说出来自己的学习能力强,对技术有追求,肯钻研新技术。我说学习了计算机原理、网络、数据结构、算法一些知识,面试官就问我这些知识对现在的开发有哪些帮助,我回答,虽然有些平时用的少,但这些都是程序员的基本修养,能够加深对工程底层的理解。像数据结构和算法这些在后端里用到的就很多了。。。。

第一个面试是 Nodejs 后端的实习,面试官开始问我技术上面的问题,先问了计算机网络方面的知识,A 发送消息给 B,经由 C 中转,这中间经历了那些过程?

我没思考就随口说了起来,事后证明自己大错特错,讲了一大堆后,面试官跟我说其实你并没有理解。更加紧张了。其实面试官要得就是消息从 A 先将消息转成二进制发送给 C,C 再转发给 B,B 收到消息后再将二进制消息转换成原始消息。就是这么简单的答案,我绕了一个大圈没讲清楚。

然后问我算法问题,问我遍历二叉树有几种方式?我回想起来,有三种,前序遍历、中序遍历和后续遍历。面试官让我写出前序遍历的 Code,本来准备想写个递归的 Code,结果想了半天没能回答出来,只好不好意思的跟面试官说想不出来。又问我枚举,当时头脑一片空白,跟面试管说了不知道。这个时候想死的心都有了,数据结构这门课是大三上学期开得课,是我认真学的也是最后考试考得不错的课程之一,结果没怎么用,现在忘记成这个样子,面试到这里已经心灰意冷了。

递归算法
public void preOrderTraversalRecursive(BitNode node)
{
	if(node ==null)
		return;

	System.out.print(node.val+",");
	preOrderTraversalRecursive(node.left);
	preOrderTraversalRecursive(node.right);
}
非递归算法
public void preOrderTraversal()
{
	Stack<BitNode> stack=new Stack<BitNode>();
	BitNode node;
	if(root!=null)
	{
		stack.push(root);
		while(stack.size()>0)
		{
			node=stack.pop();
			System.out.print(node.val+",");
			if(node.right!=null)
				stack.push(node.right);
			if(node.left!=null)
				stack.push(node.left);
		}
	}
}

接下里问我的问题,我也没回答的多好,反正面试的很差,我都不记得还问了啥了。

第二个面试的前端,面试官先问我 CSS 跟 JavaScript 哪一个学得好一点,我说 CSS,接着问了我一些 CSS3 的新特性,圆角和阴影怎么使用。我回答:border-radius、text-shadow。

接着让我些一个水平居中 Div,我写了这个:

div {
    position: absolute;
    width: 100px;
    height: 100px
    margin: auto;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
}

面试官说这样会把内容撑开,可能是口头描述,我还没有意识到自己的错,面试官表示行了,继续下面的问题把。

接着开始问 JavaScript 问题,第一个问题:同步与异步? 这里我回答其实并不是很深入,同步就是调用返回的时候要返回结果,异步就是调用结束的时候不返回结果,这个还需要更深入的学习了。

如何理解 JavaScript 里的闭包,什么时候要用闭包? 答:闭包就是在函数内嵌套函数,起到作用域的作用,嵌套函数能使用函数内的变量和全局变量。两个情况需要用闭包:一个是需要读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

JavaScript 里 this 怎么理解? 答:This 指对象本身,而不是构造函数。这个问题没有深入了解,也就没能是深入的回答问题,不是很满意。

ES6 有那些新特性? 答:ES6 有很多新特性,也是对 JavaScript 非常重要,有了它 JavaScript 在后端才有更多的可能,它的一些新特性:类的支持、模块化、字符串模板、For-of 遍历、promise 等等。

面试官又问我有没有想要了解公司想要问得问题,我问了下工作内容,也就没什么可以问得了,面试到此结束,有了第一次的经历,第二次面试整体要好很多,面试官告诉我可能这几天通知也可能国庆之后通知,总之等消息吧,虽然希望不大。

后话

真的后悔没有好好准备,所以从昨天开始把以前学得内容特别是数据结构、算法和网络重新拿出来开始整理。面试技巧也很重要,比如回答问题的时候一定不能用我猜**好象是**可能吧之类的字眼,这样给面试官的印象就是你不专业,多用一些**按照我的理解****这个问题我实践中还没有遇到,不过以那个角度去思考**这样给面试官的感觉就跟上面的完全不一样。

机会总是留给有准备的人

希望自己能找到心仪的实习工作,与君共勉。