凉凉的京东一面
凉凉的京东一面
相约了4月28日下午4点的面试,面试官因为有事迟到了半小时。
首先上来是自我介绍,大概介绍了一下,因为自己不是科班,是自动化专业,面试的java岗位,面试官也没抱太大希望,上来就问我学的是神经网络的,为什么面java,还有就是自己的规划,确定要走java这条路吗,反正胡扯了一波,然后开始问问题。
1.说一下hashmap吧
大概说了一下hashmap hashtable 线程安全与否
介绍了底层使用数据+链表(红黑树)
2.接着就深入,为什么使用红黑树,自己太菜,没看过,回答不上来
查了一下:
在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。
3.对线程池了解吗 说一下线程池,为什么使用他
线程池实现线程复用,极大的提升了资源的利用率,大概说了一下线程池的工作原理,核心线程、等待队列、最大线程数、拒绝该任务等
4. 接着深入问说一下这个等待队列?
听到这个问题有点懵逼,不知道该说一下什么 查了一下
https://segmentfault.com/a/1190000014417569
5. 线程池的决绝策略
不太了解
说说线程池的拒绝策略
当请求任务不断的过来,而系统此时又处理不过来的时候,我们需要采取的策略是拒绝服务。RejectedExecutionHandler接口提供了拒绝任务处理的自定义方法的机会。在ThreadPoolExecutor中已经包含四种处理策略。
- AbortPolicy策略:该策略会直接抛出异常,阻止系统正常工作。
- CallerRunsPolicy 策略:只要线程池未关闭,该策略直接在调用者线程中,运行当前的被丢弃的任务。
- DiscardOleddestPolicy策略: 该策略将丢弃最老的一个请求,也就是即将被执行的任务,并尝试再次提交当前任务。
- DiscardPolicy策略:该策略默默的丢弃无法处理的任务,不予任何处理。
除了JDK默认提供的四种拒绝策略,我们可以根据自己的业务需求去自定义拒绝策略,自定义的方式很简单,直接实现RejectedExecutionHandler接口即可
6.问了一下mysql索引
只知道使用了B-tree ,没能详细的回答。
7.了解网络不,说一下tcp的三次握手
说了一下 ,没有深问
8.笔试第二道题没有ac,你有没有之后想过。
笔试第二道当时都不太记得了,就说了没有。
总体感觉就是对于非计算机专业的学生,感觉对你能力存在一种质疑。也没具体问啥,果然凉凉,还是自己太菜,哈哈,体验一下,秋招再战。