Java常考面试题(三)
序言
说说今天遇到的一件小事吧,在遇到问题,查找答案时,看到很多人的博客里面都有提到关键字眼,可让人觉得可恨的是,大多数人写的博文中,基本上都是照着书上的语言发表的,看了跟没看一样,没有一点通俗的语言和自己关于该知识点的讲解,也有可能是觉得太简单,不用做解释,但是个人感觉,写博文,在一些自己都需要思考一段时间去理解的东西,应该把自己思考的过程,如何理解的写下来,而不是就把精华的部分复制黏贴上去,个人感觉没什么用,回想一下再写计算机网络教程学习历程的博文中,自己也有类似的情况,应该改正过来,在乎的是每篇博文的质量,而不是数量,不能有那种拼命往上面怼文章,来显示自己写了很多东西,以此用来面试,我觉得更是无用,写博文不为别人,是为了巩固我们的知识,和发表自己对一些问题的见解,这样才能真正的帮助到自己。开始今天的五题面试吧。
----WH
一、进程和线程的区别是什么?
自己讲解:
进程:拿电脑来说,在电脑上后台运行了很多程序,那就是进程
线程:为了完成一个程序的运行,可能程序中还有很多分支在一起运行共同来完成这个程序,分支的运行就是线程
也就是说:进程中包括很多线程,
参考答案:
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。
自我评价:
大概理解,但是语言描述的不好,应用程序下有很多执行序列。 不应该说分支。
1、进程:执行的应用程序,通俗一点,在打开电脑的任务管理器中,就有很多应用程序,也就是进程
2、线程:进程内部的一个执行序列,通俗的讲,就是一个程序的运行,有很多线程在同时执行来共同维护该进程的运行
二、创建线程有几种不同的方式?你喜欢哪一种?为什么?
自己解答:
好久不用线程,这题直接不会了,哈哈,
参考答案:
有三种方式可以用来创建线程:
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时, 线程池也是非常高效的,很容易实现和使用。
自我评价:
隔得比较久,但是印象中也是只有两种创建线程的方式,一个是继承,一个是实现接口。
1、继承Thread类,重写run方法,在run方法中写该线程要执行的任务,然后再在要执行该线程时,new出对象来,对象.start(),启动该线程
2、实现Runnable接口,实现其中的run方法,new出该对象A来,Thread thread = new Thread(A); 这样,thread.start(),就能启动该线程。
注意:继承Thread类局限于单继承,所以实现Runnable接口,就能在继承别的类。其实本质都一样,Thread类也实现了Runnable接口。
3、使用executor框架来创建多线程。可以自行百度去了解一下。
三、概括的解释下线程的几种可用状态。
自我解答:
创建状态、运行状态、暂停状态、死亡状态
参考答案:
1. 新建( new ):新创建了一个线程对象。
2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。

自我评价:不清清楚这个内容,
1、五个状态 新建状态 -- 可运行状态 -- 运行状态 -- 阻塞状态 -- 销毁状态
2、阻塞状态
等待阻塞:使用wait(),然后再等待队列里面呆着。等待依次被调用
同步阻塞:调用了某个带锁的方法,当前锁被其他线程给拿到了,就需要等待其他线程用完,然后再拿到该锁,
其他阻塞:比如 执行了 sleep、或者 join 方法,使之线程进入了睡眠或者要等待别的线程执行完才轮到自己。
四、同步方法和同步代码块的区别是什么?
自我解答:
这个也不清楚。
参考答案:
区别:
自我评价:
1、同步的单词是: synchronized 异步的单词是: asynchronized
2、同步方法和同步代码块只得是用synchronized关键字对方法加锁,
3、同步方法: synbhronized只对方法加锁,作用的范围就是,如果该类对象调用了该方法,则获得锁,其他线程不管是调用该带锁的方法还是非锁方法都必须等待
4、同步代码块:对方法或者任意代码加锁,不同的是,只对获得该段代码的锁机制生效,意思就是,当A线程获得了该段代码的锁,B线程照样执行其他非带锁的方法。
五、在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
自我解答:
几个多线程的题目顿时懵逼了,多线程这块很弱,记不住,以前看了一点,都差不多忘记了。
参考答案:
监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。
在 java 虚拟机中, 每个对象( Object 和 class )通过某种逻辑关联监视器,每个监视器和一个对象引用相关联, 为了实现监视器的互斥功能, 每个对象都关联着一把锁. 一旦方法或者代码块被 synchronized 修饰, 那么这个部分就放入了监视器的监视区域, 确保一次只能有一个线程执行该部分的代码, 线程在获取锁之前不允许执行该部分的代码 另外 java 还提供了显式监视器( Lock )和隐式监视器( synchronized )两种锁方案
自我评价:
1、有关于java虚拟机的一部分,在讲解如何实现锁机制的。这个感觉有点超出我自己的能力了,等看到了应该会知道,现在当时了解一下,有这个东西。
Java常考面试题(三)的更多相关文章
- Java常考面试题
Java常考面试题 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行 ...
- Java常考面试题整理(三)
明天又要去面试,Good luck to me.,让我在这段时间换个新的工作吧. 41.在Java中,对象什么时候可以被垃圾回收? 参考答案: 当对象对当前使用这个对象的应用程序变得不可触及的时候,这 ...
- Java常考面试题(二)
序言 昨天刚开始的”每日5题面试“这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的面试题,试着用 ...
- Java常考面试题整理(四)
有关所有Swing相关的面试题,都可以说是凑数的,感觉自己在敲这些的时候感觉一点用处都没有,可以从第72条开始看. 61.说出三种支持重绘(painting)的组件. 参考答案: Canvas,Fra ...
- Java常考面试题(二)(转)
序言 昨天刚开始的"每日5题面试"这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看 ...
- 阿里巴巴JAVA常考面试题及汇总答案
一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答: 1.String是字符串常量,StringBuffer和StringB ...
- Java常考面试题(经典)
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计 ...
- Java常考面试题(四)
序言 双十一那天去我女朋友那了,11.11到11.13 漏了两天的内容,今天中午刚回来的,赶紧补一下前两天漏下的博文,我相信,坚持下来,会有成长的,等到出去实习那一天,肯定会很有帮助,会感谢现在自己的 ...
- Java常考面试题(一)
序言 我是一只乱飞乱撞的菜鸟,写的文章目前是以记录自己学习,和方便以后查看,期待日后不久能通过自己的努力,获得一点小小的成功,然后写出我的学习经验总结性文章来. ---WH 一.什么是虚拟机?为什么J ...
随机推荐
- Jquery为动态添加的未来元素绑定事件
语法: $(selector).on(event,childSelector,data,function) event:必需.规定要从被选元素移除的一个或多个事件或命名空间.由空格分隔多个事件值,也可 ...
- CentOS7中zip压缩和unzip解压缩命令详解
安装zip.unzip应用 yum install zip unzip 以下命令均在/home目录下操作cd /home #进入/home目录1.把/home目录下面的mydata目录压缩为mydat ...
- 阿里历年经典Java面试题汇总,想进BAT你还不快收藏!
转载:https://mp.weixin.qq.com/s/M8YyxloxZnMACH9QCQN7HA Volatile的特征: A.禁止指令重排(有例外) B.可见性 Volatile的内存语义: ...
- python 模块之os.path模块
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 模块之os.path模块 #http://www.cnblogs.com/dkblog/arc ...
- centos7 计划任务 crontab的使用
#vim /etc/crontab #号代表以管理员身份运行. 将你要执行的脚本或者命令加进去,例如我的: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr ...
- windows下命令行终端使用rz上传文件参数详解
rz命令: (X) = option applies to XMODEM only (Y) = option applies to YMODEM only (Z) = option applies t ...
- SpannableStringUtil实现丰富文字效果
代码地址如下:http://www.demodashi.com/demo/15007.html 前言 在android开发中,我们不免会用到 TextView 的各种显示效果,如字体样式,颜色,大小, ...
- Oracle 错误总结及问题解决 ORA
参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数O ...
- Android API之Telephony.Threads
1. Telephony.ThreadsColumns Columns for the "threads" table used by MMS and SMS. 在Telephon ...
- ios中文件下载(带缓存)
使用asiHttPRequst框架 封装下载类 #import <Foundation/Foundation.h> #define FILESDOWNLOADCOMPLETE @" ...