JAVA程序员面试笔试宝典3
1.什么是线程?它与进程有什么区别?为什么要使用多线程
线程是指程序在执行过程中,能够执行程序代码的一个执行单元。进程是指一段正在执行的程序。
- 使用多线程可以减少程序的相应时间
- 与进程相比,线程的创建和切换开销更小
- 多CPU和多核计算机本身就具有执行多线程的能力
- 简化程序结构,使程序便于理解和维护
2.实现同步的方式有两种,一是利用同步代码块来实现同步;另一种是利用同步方法来实现同步(Synchronized)
3.如何实现Java多线程?
- 继承Thread类,重写run方法(启动线程是通过调用Thread类的start()方法,调用start()方法后并不是立即执行多线程代码,而是使得该线程变为可运行态)
- 实现Runnable接口,并实现该接口的run()方法(创建Thread对象,用实现Runnable接口的对象作为参数实例化该Thread对象)
4.多线程同步的实现方法有哪些?
- synchronized关键字(synchronized方法、synchronized代码块)
- wait()方法与notify()方法
- Lock接口(实现类ReentrantLock(重入锁)),提供的方法如下
- lock(),以阻塞的方式获取锁
- tryLock(),以非阻塞的方式获取锁,tryLock(long timeout,timeUnit unit)
5.sleep()方法与wait()方法有什么区别?
- 原理不同。sleep()方法是Thread()类的静态方法,它会使此线程暂停执行一段时间,而把执行机会让给其他线程,等到时间一到,此线程会自动苏醒。而wait()方法是Object类的方法,用于进程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法时才醒来,不过开发人员也可以给它指定一个时间,自动醒来。
- 对锁的处理机制不同。sleep()方法不会释放锁,而wait()方法则不同,当调用wait方法后,线程会释放掉所占用的锁。
- 使用区域不同。由于wait()方法的特殊意义,它必须在同步控制方法或者同步语句块中使用,而sleep()方法则可以在任何的地方使用。
6.终止线程的方法有哪些
stop()方法与suspend()方法,(使用interrupt()可以打破阻塞)
7.synchronized与lock有什么异同
7.读脏数据:一个事务读取了另一个事务尚未提交的数据,例如,当事务A与事务B并发执行时,事务A跟新后,事务B查询读取到A尚未提交的数据,此时事务A回滚,则事务B读到的数据是无效的“脏”数据
8.Class.forName的作用是什么:将类加载到JVM中,并且JVM会执行该类的静态代码段,也会返回一个Class对象。
9.PrepaerdStatement与Statement的区别:
- PrepaerdStatement效率更高,预编译的,在缓冲区中,是可以重复使用的,能够有效提高系统性能。
- PrepaerdStatement代码的可读性和可维护性更好
- PrepaerdStatement安全性更好
10.getString()方法与getObject()方法有什么区别
getString()、getInt()等方法在调用时,程序会一次性地把数据都放到内存里,当数据量大到内存放不下时就会抛出异常,而使用getObject方法就不会有这种问题,因为数据不会一次性读到内存里,每次调用时会直接从数据库中获取数据,因此使用这种方法不会因为数据量过大而出错。
JAVA程序员面试笔试宝典3的更多相关文章
- 《Java程序员面试笔试宝典》终于在万众期待中出版啦~
<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理 ...
- 《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法
public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法.其中,public是权限修饰符,表明任何类或对象都可 ...
- 《Java程序员面试笔试宝典》之Java程序初始化的顺序是怎样的
在Java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象. Java程序的初始化一般遵循以下三个原则(以下三原则优 ...
- JAVA程序员面试笔试宝典1
1.为什么Java中有些接口没有任何方法? 这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型. 2.j ...
- 《Java程序员面试笔试宝典》之Static关键字有哪些作用
static关键字主要有两种作用:第一,只想为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过 ...
- 《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么
在Java语言中,字符串起着非常重要的作用,字符串的声明与初始化主要有如下两种情况: (1) 对于String s1=new String("abc")语句与Strin ...
- 《Java程序员面试笔试宝典》之Java与C/C++有什么异同
Java与C++都是面向对象语言,都使用了面向对象思想(例如封装.继承.多态等),由于面向对象有许多非常好的特性(继承.组合等),使得二者都有很好的可重用性. 需要注意的是,二者并非完全一样,下面主要 ...
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...
- 《Java程序员面试笔试宝典》之组合与继承有什么区别
组合和继承是面向对象中两种代码复用的方式.组合是指在新类里面创建原有类的对象,重复利用已有类的功能.继承是面向对象的主要特性之一,它允许设计人员根据其它类的实现来定义一个类的实现.组合和继承都允许在新 ...
- 《Java程序员面试笔试宝典》之switch使用时有哪些注意事项
switch语句用于多分支选择,在使用switch(expr)的时候,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其对应的包装类In ...
随机推荐
- Run bash script as daemon
linux - Run bash script as daemon - Stack Overflow https://stackoverflow.com/questions/19233529/run- ...
- SSDP 抓包
简单服务发现协议(SSDP,Simple Service Discovery Protocol)
- Lein droid
最近尝试使用Clojure,发现有个Lein droid的项目可以方便的在android下使用Clojure. http://clojure-android.info/#get-started 尝试了 ...
- [Codeforces 1037D] Valid BFS?
[题目链接] http://codeforces.com/problemset/problem/1037/D [算法] 首先求出每个点的父节点 , 每棵子树的大小 然后判断BFS序是否合法即可 时间复 ...
- G. 铁路修复计划 最小生成树
G. 铁路修复计划 二分答案,改变边的权值,找最小生成树即可. 类似的思想还可以用在单度限制最小生成树和最优比例生成树上. #include<iostream> #include<c ...
- centOS命令随笔记(杂):cd、pwd
1.向上向下翻页: 反向的命令一般是Shift-PageUp和Shift-PageDown. 每日一命令:cd 1.cd / 进入系统根目录 2.cd .. 进入系统根目录可以使用“ cd . ...
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行【01分数规划+spfa】
把add传参里的double写成int我也是石乐志-- 首先这个东西长得就很01分数规划 然后我不会证为什么没有8字环,我们假装他没有 那么设len为环长 \[ ans \leq \frac{\sum ...
- P4556 [Vani有约会]雨天的尾巴(线段树合并)
传送门 一道线段树合并 首先不难看出树上差分 我们把每一次修改拆成四个,在\(u,v\)分别放上一个,在\(lca\)和\(fa[lca]\)各减去一个,那么只要统计一下子树里的总数即可 然而问题就在 ...
- [App Store Connect帮助]六、测试 Beta 版本(4.3) 管理 Beta 版构建版本:为 Beta 版构建版本提供出口合规证明
如果您没有完成出口合规证明,则该 Beta 版构建版本的状态为“缺少合规证明”.您可以在 TestFlight 部分中回答必需的出口合规证明问题. 必要职能:“帐户持有人”职能.“管理”职能或“App ...
- angularjs2 不同组件间的通信
AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传 ...