面试先是一个自我介绍,然后就开始问一些算法的题目,先描述哈希表的实现原理,然后写一个快速排序,好久没写有点卡壳了,但还是写出来了,然后给一棵二叉树,求前序遍历和中序遍历,写了对应的递归和非递归的程序,后面是一道数学题,给一个数组,里面的值代表了木板的高度,两边没有墙,只考虑平面,问能够容纳多少水(例如:4,3,8这个数组就能容纳就是1单位的水),我一开始说的是在数组后面加一个max值从左往右扫描一遍,用两个指针,对于一个特定的位置找它右边第一个不低于它的值然后把当中的数值与第一个值差值的和加入total中,但面试官指出了这个方法有点问题(如8,3,7就无法统计进来);然后我改了一下,在左边再加一个max,从右往左再计算一遍,找左边比它高的第一个值,然后把两个total加起来,大概解决了这个问题,面试官说也可以考虑下分治,但可能是我的方法已经是O(n)了所以说不用再写一个分治的版本了。后来还问了一道sql的查询问题,有两张表格,一个student和一个course表,问从中查找出os课程分数排名前三的同学的名字。其他还问了一些java容器,多线程,操作系统文件存储等问题。
总结:面试大概持续了一个多小时,问题基本能回答上来,但是我觉得没过的原因主要有以下几点:(1)有点紧张,快排写得有点慢了;(2)还是有点紧张,写完一个程序最好先检查一遍,被面试官看出了两个数组越界的问题;(3)纸头很多,写了程序最好再整理一下思路再和面试官讲,不然是有点乱的;(4)项目经验少,最好把java语言基础更加巩固下,然后了解下多线程编程。
满意的地方:
前面是开发的,后面是运维的,一开始不知道所以有点尴尬,还好面试那天先和运维的面试官聊了下发现不合适(面试官戴金属框架眼镜,感觉人很好交流很年轻,如果在他手下做第一份工作肯定很开心),所以后来在他和HR的努力下,再找来java的面试官完成了面试。
还是要感谢两位面试官和HR,虽然没能通过面试,但是至少完成了应聘职位的面试,不然因为投错岗位错过面试更加后悔。
不满意的地方:
基本没什么不满意吧,就是自己太紧张了