阿里二面
周四一面半小时,周六下午二面四十分钟。
我比较菜,二面真的挺慌的。
二面很直接,都没让我自我介绍,直接上项目:
1、说个你觉得最有意义的项目
说了一个分布式项目
然后谈了技术选型,如何实现,其中遇到的问题,当时的调度算法是我们自己实现的,有哪些不足,如何改进,我说的是2pc改进的。
2、看了我的博客,地址:http://blog.csdn.net/mr253727942/article/,然后问了hashmap的一些问题,多线程get是否会不安全,为什么。
我回答不安全,说了一些内存模型。
3、继续走项目 一个app后端项目,问了几个人实现,涉及的技术spring quartz
eh***等等。然后问了其中的缓存Key怎么设计,因为其中有个爬虫用了httpclient,问我长连接服务端应该怎么办?
我先回答用心跳包保持连接,然后说给每个客户端一个标记存放到map里面记录,然后用线程轮询哪些客户端回复,最后再写回去。 (之前没做过长连接,忘了说NIO 这里是最大的失败。 ) 然后面试官问如果客户端断开如何处理,我就说先设置一个超时时间,超时后重传一次,重传失败就客户端关闭。然后面试官问关闭后的端口怎么办,我就知道来到TCP了,然后说了TCP四次回收,time_wait需要2MSL的等待时间,因为之前项目里面遇到过这个问题,当时我是通过改linux内核的TCP等待参数完成的。然后面试官又问我是不是等待参数越小越好,我说不是,因为如果真的是因为网络延迟,参数小了很容易关闭长连接,这样就会影响用户体验。
整个流程大概就是这样,一些小的地方就没说了,哎 感觉发挥的不是很好,问面试官是否有下次面试的可能,他说有可能,让我等电话。
牛客网混了几个月了 也是给大家一些经验吧,觉得自己确实水平不够,就算失败了应该也比较正常。