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

今年的6月份又到了,又是一年一度的毕业季,但是你真的做好准备了吗?。应届毕业生很多,怎么让你自己在这群人中脱颖而出呢?那你就要做万分的准备,不打没准备的仗,下面小猿圈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面试题就到这里了,看到这篇文章的小伙伴们一定要好好看看这篇面试题,都是老师用心总结的,最后祝愿各位大学生找到一份满意的工作,加油!

原文地址:https://www.cnblogs.com/xiaoyuanquan/p/10984368.html

时间: 2024-09-29 00:53:24

小猿圈之常见java面试题总结,你学会了吗?的相关文章

小猿圈之学习java web需要有什么基础?

有很多人想学java,因为java虽然已经火了多年,但是其发展前景还是很不错的,有很大一部分人选择走java web方向,那么java web应该提前掌握哪些知识呢?小猿圈加加下面说一下. 首先找准自己发展的方向.是pc还是移动应用.学基础的时候一定要认真,虽然看起来很简单但一定要动手去做.推荐你一本专业的java书<java核心技术>仔细看,里面都会讲到各种类,数组,链表,封装.重载等基础知识,然后再结合上面提到的东西进行简单程序的编写,主要还是多练,平时写程序多用java ,不要怕出错,e

零基础小白入门Java免费视频教程推荐—小猿圈

Java语言作为世界上使用最多的开发语言,企业庞大的需求量让每年进入Java开发领域的人不减反增.对于零基础小白来讲如何学习Java开发语言是入门的第一个难题.本文小猿圈主要给零基础小白入门Java开发技术推荐一个靠谱的Java免费视频教程. 零基础小白入门Java免费视频教程推荐-小猿圈 关于Java基础入门视频教程的选择,网上有各种各样的解说,也有各式各样的视频教程,那么我们究竟应该如何选择Java免费视频教程呢?如何才能挑选到合适自己的Java基础入门视频教程呢? 许多想通过观看Java视

小猿圈之Linux常见的发行版本

初学linux的朋友们,如果别人问你linux主流的发行版本有哪些,这时候你千万不要蒙,因为这是linux入门必备的门槛,必须了解的知识,如果你还不了解,那你一定要看看这篇文章,小猿圈加加下面就给你详细讲解一下Linux 10个主流发行版本. 1.红帽企业系统(RedHat Enterprise Linux, RHEL) 全球最大的开源技术厂商,全世界内使用最广泛的Linux发布套件, 提供性能与稳定性极强的Linux套件系统并拥有完善的全球技术支持. 官网:http://www.redhat.

小猿圈之2019年前端JavaScript面试题(二)

小猿圈前端讲师今天继续给你总结js面试题,前面一篇文章咱们已经有一片js基础部分面试题,今天小猿圈web讲师为你讲解js前端应用设计问题,一定要好好看哦,为了能赢在其他人前面. JavaScript前端应用设计问题 1.解释单向数据流和双向数据绑定. Angular1.x基于双向数据绑定,而React,Vue,Elm等基于单向数据流架构. 2.单向数据流架构在哪些方面适合MVC? MVC拥有大约50年的悠久历史,并已演变为MVP,MVVM和MV*.两者之间的相互关系是什么?如果MVC是架构模式,

小猿圈-IT自学人的小圈子

小猿圈是国内免费学习IT视频教程在线教育平台,站内包含Python视频教程,Linux视频教程,Java视频教程,web全栈视频教程.是目前唯一一家从零开始到项目实战完全免费的IT学习平台,下面给大家详细介绍一下小猿圈这个新兴在线学习平台的教程内容. 小猿圈-IT自学人的小圈子 一.python视频教程 python视频教程总计分为5大阶段,包含python开发入门.面向对象&网络编程.Mysql数据库.web开发方向.爬虫方向.主讲师是路飞学院创始人Alex大神,10年+IT行业技术经验, 8

小猿圈python视频教程讲师:python开发语言的就业薪资有多高

2019年IT最受欢迎语言榜java第一次滑落了王座,python开发语言摘顶王冠.自从人工智能开始进入大众视野,python成为了高薪就业的标签.越来越多的年轻人通过python开发技术实现了自己的财务自由.那么掌握python开发语言的就业薪资有多高呢?本文小猿圈python视频教程讲师为同学们具体介绍一下? 小猿圈python视频教程讲师:python开发语言的就业薪资有多高? 我们来看看统计数据吧,有图有真相:[ 对于Python的受欢迎程度,国外知名IT技术媒体JAXenter发布了一

小猿圈python简介和发展前景?

只要朝着一个方向努力,一切都会变得得心应手.-----勃朗宁小猿圈python简介:Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构.Python是一种解释型语言:这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言.Python是交互式语言:这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码.Python

小猿圈之Linux运维工程师面试(内含答案)

1.某一天误操作,执行了rm -rf * ,会有哪些情况发生?请举例. - 如果当前目录为"/tmp" ,那么这个目录下的东西会全部删除(默认不包含隐藏文件) - 如果当前目录为"/",那么系统上的数据将会丢失,且无法启动,系统崩溃(谨慎使用这个命令) 2.什么叫CDN? - 即内容分发网络 - 其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到 最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度 3.统计ip访问情

小猿圈之解读Go语言的特点?

随着互联网的不断发展,语言也在不断的更新,现在时代正在走向数据化.人工智能的新时代,python.Go语言开始崛起,python已成为当今时代的主流,go语言也开始流行,现在正在向Go发展,越来越多的公司需要这门技术,薪资也在不断提升,那小猿圈为你解读Go语言的特点都有哪些? 一.什么是Go语言 Golang(GO)是由Google在2009年推出的编程语言,是一门全新的.现代的.语法简洁并容易上手的编程语言,是具备独立的运行时库,就像C语言一样. 大神们创建Go语言的初衷是:近十年来开发程序之