美文网首页Java 杂谈小猿圈-IT自学人的小圈子
小猿圈总结的常见java面试题,你学会了吗?

小猿圈总结的常见java面试题,你学会了吗?

作者: f673630174f6 | 来源:发表于2019-04-23 11:25 被阅读0次

    今年的4月份又到了,又是一年一度的跳槽季,但是你真的做好准备了吗?对于程序员来说,敲代码、改bug完全不是问题,但是一到面试就忘记该说什么,该怎么去回答。针对这样的问题,小猿圈java讲师为你总结了常见的java面试题,希望对你的面试以及日常工作有帮助。

    1.list中存放可重复字符串,如何删除某个字符串

调用iterator相关方法删除

倒删,防止正序删除导致的数组重排,index跳过数组元素问题

    2.concurrenthashmap为何读不用加锁

jdk1.7

1)HashEntry中的key、hash、next均为final型,只能表头插入、删除结点

2)HashEntry类的value域被声明为volatile型

3)不允许用null作为键和值,当读线程读到某个HashEntry的value域的值为null时,便知道产生了冲突——发生了重排序现象(put设置新value对象的字节码指令重排序),需要加锁后重新读入这个value值

4)volatile变量count协调读写线程之间的内存可见性,写操作后修改count,读操作先读count,根据happen-before传递性原则写操作的修改读操作能够看到

jdk1.8

1)Node的val和next均为volatile型

2)tabAt和casTabAt对应的unsafe操作实现了volatile语义

    3.ContextClassLoader(线程上下文类加载器)的作用

越过类加载器的双亲委派机制去加载类,如serviceloader实现使用线程上下文类加载器加载类,要注意保证多个需要通信的线程间的类加载器应该是同一个,防止因为不同的类加载器导致类型转换异常(ClassCastException)

    4.如何结束一个一直运行的线程

使用退出标志,这个flag变量要多线程可见使用interrupt,结合isInterrupted()使用

    5.如何从FutureTask不阻塞获取结果

get(longtimeout,TimeUnitunit),超时则返回轮询,先通过isDone()判断是否结束,然后调用get()

    6.线程池从启动到工作的流程

刚创建时,里面没有线程调用execute()添加任务时:

1)如果正在运行的线程数量小于核心参数corePoolSize,继续创建线程运行这个任务

2)否则,如果正在运行的线程数量大于或等于corePoolSize,将任务加入到阻塞队列中

3)否则,如果队列已满,同时正在运行的线程数量小于核心参数maximumPoolSize,继续创建线程运行这个任务

4)否则,如果队列已满,同时正在运行的线程数量大于或等于maximumPoolSize,根据设置的拒绝策略处理

5)完成一个任务,继续取下一个任务处理

6)没有任务继续处理,线程被中断或者线程池被关闭时,线程退出执行,如果线程池被关闭,线程结束

7)否则,判断线程池正在运行的线程数量是否大于核心线程数,如果是,线程结束,否则线程阻塞。因此线程池任务全部执行完成后,继续留存的线程池大小为corePoolSize

    7.阻塞队列BlockingQueuetake和poll区别

poll(time):取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数规定的时间,取不到时返回null take():取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻塞直到BlockingQueue有新的对象被加入

    小猿圈提醒大家合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰Java自学交流群:820384292!趁年轻,使劲拼,给未来的自己一个交代!

相关文章

  • 小猿圈总结的常见java面试题,你学会了吗?

    今年的4月份又到了,又是一年一度的跳槽季,但是你真的做好准备了吗?对于程序员来说,敲代码、改bug完全不是问题...

  • 小猿圈总结Linux常见命令(二)

    上文篇幅过长现在吧余下的小猿圈Linux老师总结的Linux常见命令继续分享给大家,想学习编程语言可以到小猿圈看看...

  • 小猿圈总结Linux常见命令(二)

    上文篇幅过长现在吧余下的小猿圈Linux老师总结的Linux常见命令继续分享给大家,想学习编程语言可以到小猿圈看看...

  • Java面试题汇总

    Java面试题总结 Java面试题总结一Java面试题总结二

  • Java常见面试题总结

    Java常见面试题总结 @Date 2016.06.22 Java基础知识 1.Java 中应该使用什么数据类型来...

  • 小猿圈web前端开发之Vue前端面试题

    前段时间分享了一个web前端的面试题,小伙伴们让我分享一些高阶的面试题,今天小猿圈web前端讲师总结了Vue方面经...

  • 小猿圈分享Java面试题

    马上又到毕业季了,很多同学都很迷茫,不知道该选择哪个方向,也有的同学害怕找不到工作,今天小猿圈就给大家分享一下关于...

  • 小猿圈分享Java面试题

    马上又到毕业季了,很多同学都很迷茫,不知道该选择哪个方向,也有的同学害怕找不到工作,今天小猿圈就给大家分享一下关于...

  • 小猿圈总结Linux常见命令(一)

    科技发展的今天,互联网不断的发达,很多人学习Linux云计算的时候回因为记不住一些命令从而去找度娘,有时候因为因为...

  • 小猿圈总结Linux常见命令(一)

    科技发展的今天,互联网不断的发达,很多人学习Linux云计算的时候回因为记不住一些命令从而去找度娘,有时候因为因为...

网友评论

    本文标题:小猿圈总结的常见java面试题,你学会了吗?

    本文链接:https://www.haomeiwen.com/subject/vjzmgqtx.html