1. 自我介绍
这是面试相当重要的一个环节,建议提前准备好模板,自己多对着镜子练一练。
2. 大学里面除了上课还做过什么?
我只说了acm,但是面试官似乎不太满意。
3. 你现在在100层,一次只能下1层或者2层,请问到1层有几种方法。
写代码的时候一定要注意代码规范,而且这个题我没用记忆化,可能面试官只考察你对递归的使用。
int fnc(int n){ if(n == 1) { return 1; } else if(n == 2) { return 2; } return fnc(n - 1) + fnc(n - 2);}
4. 面试最后一题用了优先队列,讲一讲优先队列的内部排序是怎么样的
我上来就说了快排,但想了想还是说了堆排序,因为没当我们push进去一个元素,前面的元素都已经排好了,所以在这种情况下用堆排序就好了。我还以为要问堆排序的实现(提前没看),慌得一批,但是没问。
5. 把C++多态的实现讲一下吧
只要面试C++都会问这个问题,建议准备模板。
6. 你刚才提到在工作中做过负载均衡,简单讲一讲吧。
其实就是P2P模式,讲了讲C/S模式和它的区别,和用在项目中的好处。
6. 都用过什么数据库,说一下数据库的索引
就是让你介绍一下b树,结果我上来懵了说了个红黑树,刚想改口,面试官就说下一个问题了。
7.说一下tcp和udp的区别,如果让你使用udp实现一个可靠传输,应该怎么做?
这个问题还是比较好的,广了说会考察你对这两者的速度和可靠性的差别,如果细说会考察你对三次握手,拥塞机制的了解,然后第二问题,我直接说不会。
8.讲一下虚表
我听都没听说过,应该是虚函数表吧,我就虚函数表的原理大体说了说。
9.简历上写到你会redis,讲一讲吧
我只读过redis的源码,把redis内部实现各种吹,但是面试官对此并不感兴趣。可能只注重你对redis的使用。
10.简历上看你写过贪吃蛇,怎样避免蛇形成环形然后自己在里面绕?
这个情景想就能明白吧,就是蛇太长了,自己围成了一个差不多正方形的形状,然后在里面画圈圈,如果避免呢,我说直接bfs是肯定不可以的,要加几个判断条件,然后具体是啥我也不知道。
11.讲一讲自动寻路的算法
那肯定是A*啊,启发式搜索,讲了一大堆。
总结:
面试官水平还是很高的,公司采用了go + mngodb相关的技术,但是结束的时候评价我了解的还是有些少,说我笔试挺好的。只刷题还是没有用啊,都没怎么问,还是多做一些项目吧。