17号9点接到电话,面试官简单的介绍了下部门,是杭州淘宝搜索部的,然后开始步入正题,让做个自我介绍,接着就问问题,一面的问题相对是比较基础的,如下,顺序部分先后:
1.什么是网络虚拟化(我专业是SDN,项目上有涉及这个)
2.Java中HashMap和HashTable的区别
3.面向对象的特征
4.OSI七层协议
5.Java垃圾处理方法
6.线程池中线程的状态,如何转换的
7.实现多线程的方法
8.Hash算法中如何解决Hash冲突问题
9.使用过的Java开源软件有哪些
10.设计模式中的单例模式
11.我项目中的餐厅服务系统中,如果同时有100个人点菜,会造成a)资源不够,b)服务器端厨师调度压力过大;我是怎么解决的
我说当时做的时候没有考虑到这一点,面试官说没关系,不是什么知识点,就是想想怎么处理,于是我给出了两种处理方式,一是在客户端上给出当天餐厅还能够提供某种菜品的数目,而是设置一个队列缓存,将同时到达的以一定顺序逐个请求调度。两种方案的都是有问题的,记得之前看过淘宝对订单的处理方案:增加服务器个数,将请求分派到不同的服务器上,实施负载均衡,面试官估计是想得到这个答案,不过自己当时没想到。
12.我自己算法解决过什么问题
13.数据库和Linux简单问了下
我说不是很擅长,面试官有些惊讶,应该是觉得我们研究网络的应该擅长Linux吧;
时间已经过了有50多分钟了吧,随后给了个网址,让编程,四个问题
1.将一个字符串反转,要求空间复杂度低
我用了个StringBuffer将字符串从头到尾遍历一遍,得到新串。显然不是较好的方法,于是问面试官说这是最先想到的,可以改吧,他说没关系,写出你觉得更好的,然后我换成字符中点为对称点,两侧进行交换的方式,只需要额外的一个字符空间,也降低了时间复杂度
2.设计一个单例模式
我想了一会儿,说设计模式看过,但是不常用,就忘了,直接跳到有把握的第四题
3.实现一种解决hashCode 冲突的方法;
在之前问的时候我隐约记得链地址法,打算用这个写呢,有些卡顿,当时面试有近80分钟了,所以说了一下思路
4.快速排序算法
写完后有些小问题没注意,后来才想到的;1.分治法没有写结束条件,也就