Ali面试小记

1. volatile关键字的应用场景? 为啥要用volatile

2. gc你知道的一切。

3.JDK1.7后续的concurrent包。

4.HashMap内部实现。

5.内存溢出/泄露的几种常见方式?

6.消息传递队列和分布式组件?

7.死锁的例子。如何确保不发生死锁?有哪些方法?给出代码例子。

8.HashMap设计key需要考虑哪些因素?

9.zookeeper的内部实现。(妹的paxos我到现在都没看懂论文)

10.几种同步共享的方式? 比如synchronized, 信号量,乐观锁/悲观锁,重入锁(RectreenLock), CAS的实现方式?

其它还有么?还有么?还有么?...崩溃了

11.netty的内部模型?具体实现?

12.线程池的类型。

13.树遍历的种类,使用堆栈还是队列。

14. B+树的实现。树的遍历,递归非递归的优劣。

15. 给出如下IP地址,比如:
1.2.3.4-1.2.5.9  对应 北京
1.3.3.4-1.3.5.9  对应 上海
。。。。

即地理位置各对应一个地址段,地址段内ip无序,总共有几十万个这样的ip,
输入一个ip地址,如何找出对应的地理位置。要求最省时间空间。

1.面试时的说的解决方法:
由于ip地址数量已知,因此每个地址段用一个大的byte数组存储,比如 
byte[A]={1,2,5... },byte[B]={1,2,5... },byte[C]={1,2,5... },byte[D]={1,2,5... }
代表A.B.C.D,

建立数据结构,比如:
class IP {
   byte[A]={1,2,5... } //对应位置1即可
   byte[B]={1,2,5... }
   byte[C]={1,2,5... }
   byte[D]={1,2,5... }
   
   String localtion  ;
}

IP ip_1 =  "Beijing" ; //北京的ip位置1即可。
IP ip_2 =  "Shaghai" ; //上海的ip位置1即可。


然后利用hashMap,新的ip地址到来时,如果ip_1或者ip_2的地址有界则根据边界查找。这种思路不是很好。

2.当时脑子灵光一闪想到一个过滤器,但是忘了,结束后立刻翻书,发现是布隆过滤器。
提出如下方法更好,

设计8个信息指纹函数(F1,,...F8)和一个随机数产生器M,能够将8个信息指纹映射到1-100万的8个自然数,
对所有ip地址,计算其指纹,得到(f1,f2,...f8),然后利用M将其映射到一个几十万的byte向量中,
然后把这8个自然数对应的2进制置1,这样新的地址计算出指纹后只需要跟这个向量数组与一次
即知道是不是有对应的城市。
当然还要简单判断下8个自然数对应的限定值范围,就知道是哪个城市了。 

一共需要一个很小的hashmap存储城市的对应ip范围,一个大的向量数组,还有9个函数就够了。

16. 软件工程方面及SSH框架的深入理解,比如Spring的AOP? IOT?

17.关于分布式生产环境下的瓶颈诊断方法,常见的linux/java工具,sar ,iostat ... jstack ,jmap ,等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值