
Java
iteye_16074
这个作者很懒,什么都没留下…
展开
-
年龄最小的3个职工
问题:职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。输入:----------------------------------------------------------------输入第一行包括1个整数N,1...原创 2012-02-13 16:09:07 · 202 阅读 · 0 评论 -
互联网公司面试题之八
问题一:读入两个小于100的正整数A和B,计算A+B。[color=red]需要注意的是:A和B的每一位数字由对应的英文单词给出。[/color]例如:one + two =three four + five six =zero seven + eight nine =zero + zero =[color=red]当A和B同时为0时输入结束,相应的结果不要输出[/co...原创 2011-12-15 17:23:04 · 187 阅读 · 0 评论 -
Java面试问题之六十一
问题:请你编写一个方法来判断一个整数是否是一个守形数,如果是输出"YES",否则输出"NO"。要求尽可能地简单和快速。答:代码如下:[code="java"]import java.lang.Math;public class KeepFormatNumber { public static String doJudge(int n) { ...原创 2011-11-30 16:04:03 · 106 阅读 · 0 评论 -
Java面试问题之六十
问题:请列举一些常用的JDK监控和故障处理的工具,并说明这些工具的作用。答:在日常监控和故障排除工作中,我们常常使用以下几个小工具: (1)jps:即JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 (2)jstat:即JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行...原创 2011-11-22 14:52:16 · 142 阅读 · 0 评论 -
Java面试问题之五十九
问题:Java虚拟机中采用了哪些垃圾回收的算法?请简要说明。答:JVM中垃圾回收算法主要分为四种: (1)标记-清除算法(Mark-Sweep Algorithm):算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后同一回收掉所有被标记的对象。这个算法主要有两个缺点:第一个是效率问题,标记和清除过程的效率都不高;另外一个是空间问题,标记清除之后产生大...原创 2011-11-22 10:52:53 · 94 阅读 · 0 评论 -
Java面试问题之五十八
问题:Java虚拟机是如何判断哪些对象应该放在新生代,哪些对象应该放在老年代中,提供何种机制来实现?答:Java虚拟机一般采用分代的思想来内存的,为了确定一个对象年龄(Age),虚拟机给每个对象都引进了一个对象年龄计数器。如果对象在Eden出生并经过第一次Minor GC后仍然存活,并且能够被Survivor容纳的话,将被移动到Survivor空间中,并将对象的年龄设定为1。对象在Su...原创 2011-11-18 14:29:11 · 125 阅读 · 0 评论 -
Java面试问题之五十七
问题:在Java垃圾收集机制中的Minor GC和Full GC分别指什么,有和不同?答:Minor GC是指新生代GC,是发生在新生代的垃圾收集动作,因为Java对象大多都具有“朝生夕灭”的特性,所以Minor GC非常频繁,一般回收速度也比较快;Full GC(也称为Major GC)是指老年代的GC,Full GC的速度一般会比Minor GC慢10倍以上。相关知识扩展:...原创 2011-11-17 20:11:15 · 144 阅读 · 0 评论 -
Java面试问题之五十六
[百度面试问题之三]:请谈谈你对Java垃圾收集器中并行和并发概念的理解。答:并行和并发这两个概念都是编程中的概念,在垃圾收集器的上下文语境中,我们应该这样理 解: (1)并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 (2)并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能...原创 2011-11-17 12:11:01 · 140 阅读 · 0 评论 -
Java面试问题之五十五
[百度面试题问题之一]:请分析一下Java的垃圾回收机制中对方法区的回收过程,在何种条件下才会触发GC对方法区进行回收工作。答:所谓的方法区也就是HotSpot虚拟机中的永久代,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集机制,而且在方法区回收的“性价比”一般比较低;在堆中,尤其是在新生代中,常规应用进行一次垃圾收集可以回收70%~95%的空间,而永久代的垃圾收集效率远...原创 2011-11-16 15:30:40 · 133 阅读 · 0 评论 -
Java面试问题之五十四
问题:请问在Java中本地直接内存(Direct Memory)和堆内存(Java Heap)之间有何关系与区别,并尝试分析一下直接内存有什么作用。答:根据Java虚拟机规范,堆内存(Heap Memory)和直接内存(Direct Memory)是Java虚拟机中两种基本的内存空间类型。堆内存是一个标准内存池,用于存放绝大多数对象的实例;直接内存则是一块由程序本身管理的一块内存空间,...原创 2011-11-16 10:53:27 · 95 阅读 · 0 评论 -
Java面试问题之五十三
问题:请问Java的运行时数据区域是如何划分的,分为几个部分,每个部分主要有什么作用?答:Java的运行时数据区主要分为如下几个部分: (1)程序计数器(Program Counter Register):它是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳...原创 2011-11-12 22:15:12 · 120 阅读 · 0 评论 -
Java面试问题之五十二
问题:请分析一下Java中StackOverflowError异常和OutOfMemoryError异常之间联系与区别,什么时候会产生StackOverflowError异常?什么时候产生OutOfMemoryError异常?答:在Java虚拟机规范中是这样描述这两类异常的: (1)如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异...原创 2011-11-12 18:26:58 · 163 阅读 · 0 评论 -
Java面试问题之五十一
问题:请问Java语言实现闭包了吗?你是如何理解语言中闭包的概念的,请详细谈谈你的看法。答:Oracle公司在最新推出的JDK 7.0中提供了闭包与Lambda表达式的一个实现方式,虽然还有许多值得考虑的地方,但是从Java语言的发展趋势来看,支持闭包的概念无疑是Java语言的一个方向。所谓闭包是指可以包含自由(未绑定到特定对象)变量的代码块,这些变量不是在这个代码块内或者任何全局上下文中...原创 2011-11-11 15:24:13 · 125 阅读 · 0 评论 -
Java面试问题之五十
Question: Provide a function to accept an integer array and computes the maximum consecutive sum. If the maximum sum is negative, this function returns zero.问题:请一个整数数组的最大连续和,若和小于零则返回零。实现代码:...原创 2011-11-07 21:27:46 · 119 阅读 · 0 评论 -
Java面试问题之四十九
问题:请问当你写的程序出现OutOfMemoryError的时候,你该如何进行排查?使用什么Java命令参数和方法呢?答:可以尝试使用VM arguments来协助排查,主要分为以下几个步骤: (1)预估你的程序使用内存的大小,尽可能估计一个准确的范围且这个范围一定需要比运行你的程序所需的最低内存大1倍(经验值)。 (2)假定估计消耗内存的值为10M,那么应该使...原创 2011-11-04 11:21:58 · 127 阅读 · 0 评论 -
字符串移位包含问题
问题:给定两个字符串s1和s2,要求判断s2是否能够通过s1做循环移位操作得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。答:这个问题可以使用“提高空间复杂度来换取时间复杂度的降低”的思路来解决。实现代码:[code="java"]public class ShiftStringMa...原创 2011-11-03 22:10:05 · 121 阅读 · 0 评论 -
Java实现一个简单的BitArray
在处理大数据的排序的时候,位图是经常使用的一种数据结构,在JDK中已经提供了现成的BitSet类,但是如果需要做一些比较简单的应用且能够有效控制程序的效率,还是使用数组实现一个简单的BitArray吧。以下是一个简单BitArray的实现,没有考虑线程安全的问题,适合在不需要多线程并发的情况下使用。[code="java"]import java.lang.IllegalArgumen...原创 2011-10-12 12:59:27 · 955 阅读 · 0 评论 -
判断一个数是否是2的幂的快速方法
使用Java语言编写程序来判断一个整数是不是2的阶次方数,要求使用尽量快速简便的方法。答:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干位0。比如8就是1000,64是1000000。如果将这个数减1再与该数做&运算,则应该全部位都是0。所以如果一个数d,满足d&(d-1)==0,则这个数必定是可以被2的幂整除的数。[code="java"]import ...原创 2011-10-08 11:35:13 · 252 阅读 · 0 评论 -
Java面试问题之四十八
请简述一下Java中线程组的特性。答:Java中的ThreadGroup类表示线程组,它能够对一组线程进行几种管理。用户创建的每个线程均属于某个线程组。线程组具有以下几点特性:(1)一旦线程加入某线程组,该线程就一直存在与该线程组直至线程死亡,不能在中途改变线程所属的线程组。假定线程A创建了线程B,如果创建线程B时没有在构造方法中执行线程组,那么线程B会加入到线程A所属的线程中。...原创 2011-10-02 15:46:10 · 100 阅读 · 0 评论 -
Java面试问题之四十七
请问如何才能安全地使线程暂停、恢复运行和停止,谈谈你的想法并举例说明。答:虽然在Java中的Thread类中分别提供了使线程暂停(suspend()方法)、恢复运行(resume()方法)以及停止(stop()方法)的方法,但是使用这些方法会产生如下两点风险:(1)容易造成死锁。(2)一个线程强制中断另一个线程的运行,会造成另一个线程操作的数据停留在逻辑上不合理 的...原创 2011-10-02 14:35:50 · 109 阅读 · 0 评论 -
Java面试问题之四十六
请问在Java中notify()和notifyAll方法有什么区别?答:Java中notify()和notifyAll()方法的主要区别在于:notifyAll()方法会使原来在某个对象等待池中的线程全部退出wait状态,进入该对象的锁池中,一旦该对象的锁被释放,它们会竞争获取对象的锁。相比之下,notify()方法只会随机选择一个处于wait状态的线程进行唤醒,使这个线程进入该对象的锁池...原创 2011-10-01 12:43:10 · 102 阅读 · 0 评论 -
Java面试问题之四十五
请问Java中都提供了哪些控制线程的方法?答:Thread类中提供了以下几个控制线程的方法: (1)start()方法,这个方法用于启动线程。 (2)suspend()方法,使线程暂停方法。 (3)resume()方法,使暂停的线程恢复运行的方法。 (4)stop()方法,终止线程的方法。 但是,从JDK 1.2开始,除了st...原创 2011-09-27 21:06:29 · 108 阅读 · 0 评论 -
Java面试问题之四十四
请写出下面程序的运行结果,并分析运行的过程。[code="java"]import java.util.*;public class MachineInterruptedException extends Thread { private int a = 0; private Timer timer = new Timer(true);...原创 2011-09-27 17:48:28 · 116 阅读 · 0 评论 -
Java面试问题之四十三
请问Java有哪些方法用于线程的通信?答:java.lang.Object类中提供了两个用于线程通信的方法: (1)wait()方法,执行该方法的线程释放对象的锁,Java虚拟机把该线程放到该对象的等待 池中。该线程等待其他线程将它唤醒。 (2)notify()方法,执行该方法的线程唤醒在对象的等待池中等待的一个线程。Java虚拟机 ...原创 2011-09-26 22:59:42 · 100 阅读 · 0 评论 -
Java面试问题之四十二
请问在Java多线程运行环境中,在哪些情况下会使对象锁释放?答:由于等待一个锁的线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不再需要锁的时候及时释放锁是很重要的。在以下情况下,持有锁的线程会释放锁:(1)执行完同步代码块,就会释放锁。(2)在执行同步代码块的过程中,遇到异常而导致线程终止,锁也会被释放。(3)在执行同步代码块的过程中,执行了锁所属对象的wai...原创 2011-09-26 11:18:56 · 124 阅读 · 0 评论 -
Java面试问题之四十一
请问Java提供了哪些常用的线程安全的类,在一个可变类中采用什么措施可以降低因保证线程安全而损失的并发性能。答:所谓的线程安全就是不需要手动添加同步方法或者同步块来保证线程的同步,一般线程安全类都包含了同步的方法或者同步代码块,所以耗费了很多的系统性能。在非必要的情况下,一般尽量避免使用线程安全类,以提高系统的性能。Java中提供常用的线程安全类有:(1)Vector(向量类)...原创 2011-09-26 11:02:13 · 109 阅读 · 0 评论 -
Java面试问题之四十
请问一个线程安全的类必须满足几个条件,这些条件分别是什么?答:要设计一个满足线程安全的类一般需要满足以下三个条件: (1)这个类的对象可以同时被多个线程安全地访问。 (2)每个线程都能正常执行原子操作,等到正确的结果。 (3)在每个线程的原子操作都完成之后,对象处于逻辑上合理的状态。 另外,不可变类总是线程安全,不需要对这样的类进行特别的限...原创 2011-09-25 22:55:16 · 102 阅读 · 0 评论 -
Java面试问题之三十九
请说说你对Java线程同步机制的理解,Java线程同步都哪些特征。答:Java线程同步机制能够确保线程之间能够保持同步,所谓线程之间的同步,是指不同线程在执行同一个对象的同步代码块时,因为要获得这个对象的锁而相互牵制。Java线程同步的主要特征有:(1)如果一个同步代码块和非同步代码块同时操作共享资源时,仍然会造成对共享资源的竞争。因为当一个线程执行一个对象的同步代码块时,其他线程...原创 2011-09-25 22:09:09 · 109 阅读 · 0 评论 -
Java面试问题之三十八
请写出以下代码块的等价形式:[code="java"]public synchronized String pop(){ //some codes}[/code]答:上述代码是一个同步代码块,它等价的写法如下:[code="java"]public String pop() { synchronized(this){ ...原创 2011-09-25 21:39:13 · 95 阅读 · 0 评论 -
Java面试问题之三十七
请说说你对Java定时器的认识,尝试写一个例子来说明。答:在JDK中的java.util包中提供了一个使用类Timer,它能够定时执行特定的任务。TimerTask类表示定时执行某一项任务。比如,下面的代码段说明了Java定时器的使用方法。[code="java"]import java.util.Timer;import java.util.TimerTask;...原创 2011-09-25 20:56:02 · 113 阅读 · 0 评论 -
Java面试问题之三十六
请谈谈你对Java后台线程的理解以及它有和特点。答:所谓的后台线程就是指为其他线程服务的线程,也称为守护线程。比如,Java虚拟机中的垃圾回收线程就是典型的后台线程,它负责回收其他线程不再使用的内存资源。后台线程的特点是:后台线程与前台线程相伴相随,通常情况下只有所有前台线程都结束生命周期,后台线程才会结束生命周期。只要有一个前台线程还没有运行结束,后台线程就不会结束生命周期。主线程在默认...原创 2011-09-18 17:11:07 · 112 阅读 · 0 评论 -
Java面试问题之三十五
分析以下Java代码段,给出程序运行的结果并简要说明join()方法的用途。[code="java"]import java.lang.Thread;public class MachineJoin extends Thread { public void run() { for(int a=0;a...原创 2011-09-18 15:52:15 · 82 阅读 · 0 评论 -
Java面试问题之三十四
请问Java中的静态方法Thread.yield()有何作用,它在什么时候会被使用?Thread.yield() 与Thread.sleep()这两个方法之间有些什么区别?答:当线程在运行中执行了Thread类的yield()静态方法,如果此时具有相同优先级的其他线程处于就绪状态,那么yield() 方法将把当前运行的线程放到可运行池中并使另外一个线程运行起来。如果没有相同优先级的可运行线...原创 2011-09-18 15:03:02 · 77 阅读 · 0 评论 -
Java面试问题之三十三
谈谈你对Java线程调度模型的理解。答:计算机通常只有一个CPU,在任意的时刻只能执行一条机器指令,每个线程只能获得CPU的使用权才能执行指令。所谓多线程的并发运行,其实是指从宏观上看,每个线程轮流获得CPU的使用权,分别执行各自的任务。在运行池中,会有多个处于就绪状态的线程在等待CPU,Java虚拟机的一项任务就是负责线程的调度。线程的调度是指按照特定的机制为多个线程分配CPU的使用权。...原创 2011-09-17 16:33:25 · 82 阅读 · 0 评论 -
Java面试问题之三十二
请问Java线程有几种状态,每种状态都完成些什么工作。答:Java线程可以处于5种不同的状态,它们分别是:新建状态、就绪状态、运行状态、阻塞状态和死亡状态。其中阻塞状态有三种,分别为位于对象等待池种的阻塞状态,位于对象锁池中的阻塞状态和其他阻塞状态。(1)新建状态:用new语句创建的线程对象处于新建状态,此时它和其他Java对象一样,仅仅在堆区中被分配了内存。(2)就绪状态...原创 2011-09-17 16:02:45 · 104 阅读 · 0 评论 -
Java面试问题之三十一
请谈谈Java线程的运行机制。答:在Java虚拟机进程中,执行程序代码任务是由线程来完成的。每个线程都有一个独立的程序计数器和方法调用栈(method invocation stack)。(1)程序计数器:也称为PC寄存器,当线程执行一个方法时,程序计数器指向方法区中下一个要执行的字节码指令。(2)方法调用栈:简称方法栈,用来跟踪程序运行中一系列方法调用过程,栈中的元素称为...原创 2011-09-17 11:49:22 · 112 阅读 · 0 评论 -
Java面试问题之三十
请说明一下Java中实例内部类、静态内部类和局部内部类在主要特征、可用的修饰符、可访问外部类成员、能够拥有成员类型以及外部类访问内部类成员的方式等方面的差异。答:[table]|比较方面|实例内部类|静态内部类|局部内部类||主要特征|内部类的实例引用特定的外部类的实例|内部类的实例不与外部类的任何实例关联|可见范围是所在的方法内部||可用的修饰符|访问控制修饰符:abst...原创 2011-09-15 14:40:15 · 95 阅读 · 0 评论 -
Java面试问题之二十九
请你说一下Java内部类都有哪些用途以及在什么情况下才需要使用内部类。答:个人认为Java内部类主要有三个用途:第一,起到封装类的作用;第二,可以直接访问外部类的成员;第三,回调外部类的方法。作为Java内部类的作用,第三点尤为重要。(1)封装类型:面向对象的核心思想之一就是封装,把所有不希望对外公开的实现细节封装起来。顶层类只能处于public和默认两种访问级别,而成员内部类可以...原创 2011-09-15 13:48:09 · 122 阅读 · 0 评论 -
Java面试问题之二十八
请阅读以下代码段,给出这段程序运行结果,并尝试总结一下匿名类的特点。[code="java"]package com.ecom.baidu;public class A { A(int v) { System.out.println("another constructor"); } A() ...原创 2011-09-14 17:45:36 · 78 阅读 · 0 评论 -
Java面试问题之二十七
阅读以下代码段,给出代码运行的结果及其原因:[code="java"]class Outer { Inner in; Outer() { in = new Inner(); } public class Inner { public Inner() {...原创 2011-09-14 15:23:24 · 81 阅读 · 0 评论