Java 面试题:百度前200页都在这里了

查看不同公司新鲜真实的Java面试题,摘自Glassdoor.com

Java 面试题:百度前200页都在这里了

巴克莱投资:

基本概念

  • 假设有一个 getNextparson() 方法返回 Person 对象,Person 类实现了
    comparable 接口,现在从文件中读取记录并排序,然后给出前 1000
    条记录,纸上作答
  • 答案见Glassdoor
  • 写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组。
  • 答案见Glassdoor

操作系统中 heap 和 stack 的区别

骑士资本:

什么是基于注解的切面实现

  • 给定一个包含 N 个整数的数组,找出丢失的整数?
  • 答案见Glassdoor

什么是 对象/关系 映射集成模块

全球医疗交流:

什么是 Java 的反射机制

  • 抽象类与接口的区别是什么?
  • 答案见Glassdoor

什么是 ACID

高盛投资:

BS与CS的联系与区别

  • 实现斐波那契
  • 答案见Glassdoor
  • 为什么 C++ 的析构器定义为虚拟的?
  • 答案见Glassdoor
  • 如何找到整数的平方根?
  • 答案见Glassdoor

Cookie 和 Session的区别

Google:

fail-fast 与 fail-safe 机制有什么区别

  • 给定 2 个包含单词列表(每行一个)的文件,编程列出交集。
  • 答案见Glassdoor

get 和 post请求的区别

Nextlabs:

Interface 与 abstract 类的区别

树(二叉或其他)形成许多普通数据结构的基础。请描述一些这样的数据结构以及何时可以使用它们。

IOC的优点是什么

Delphix:

IO 和 NIO的区别,NIO优点

  • 如何找出4字节整数的中位数?
  • 答案见Glassdoor 

Java 8 / Java 7 为我们提供了什么新功能

亚马逊:

什么是竞态条件? 举个例子说明。

  • 给定如下整数列表,如何最有效的进行排序同时剔除重复的数字?
  • 答案见Glassdoor

JRE、JDK、JVM 及 JIT 之间有什么不同

埃森哲: 

MVC的各个部分都有那些技术来实现?如何实现?

  • 解释 Java 和 C++ 内存管理的不同。
  • 答案见Glassdoor
  • 给定一个 C++ 或 Java
    类型/表达式,给出等价的表达(如果存在)。例如:C++ 有常量,Java
    有…?
  • 答案见Glassdoor
  • 给一个例子, 关于何时创建一个接口?
  • 答案见Glassdoor

RPC 通信和 RMI 区别

Citi:

什么是 Web Service(Web服务)

  • 你会重写哪些 java.lang.object 类中的函数?
  • 答案见Glassdoor

JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。

微软:

WEB容器主要有哪些功能? 并请列出一些常见的WEB容器名字。

  • 写一个程序找出所有字符串的组合,并检查它们是否是回文串?
  • 答案见Glassdoor

一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制

RedMane技术:

简单说说你了解的类加载器。是否实现过类加载器

技术问题:1. OOP的三个支柱,并解释它们 2. Java 的 final 关键字 3.
抽象类与接口的不同 4. JSP 与 Servlet 的不同 5.  Java 中的不变性 6.
多线程 – 休眠与让步? 7. 什么是设计模式,说一些。解释单例设计模式?

解释一下什么叫AOP(面向切面编程)

  1. 访问修饰符中的 protected 关键字 9. continue 与 break 表达式 10. 描述
    MVC 模式 11. StringBuffer 与StringBuilder 12.
    一个逻辑/算法问题:向有序数组中插入一个元素到合适的位置。他们将关注非常基础的逻辑设计,如循环,函数和它们的参数。

请简述 Servlet 的生命周期及其相关的方法

答案见Glassdoor

请简述一下 Ajax 的原理及实现步骤

OPNET:

简单描述Struts的主要功能

  • 解释 struts 架构?
  • 答案见Glassdoor

什么是 N 层架构

BlackBerry:

什么是CORBA?用途是什么

  • Hash Table 运行 null 值么?
  • 答案见Glassdoor

什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”

EverBank Financial:

什么是正则表达式?用途是什么?哪个包使用正则表达式来实现模式匹配

  • 导致空指针异常的原因?
  • 答案见Glassdoor

什么是懒加载(Lazy Loading)

TRUSTe:

什么是尾递归,为什么需要尾递归

  • 用 Java 实现一个电梯模拟器
  • 答案见Glassdoor

什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)

Airline Tariff Publishing Company:

关键字

  • 在 Spring
    中使用单例实例,你只能得到唯一一个实例。如果应用想得到多个实例,你是怎么重写或克服这种情况的?
  • 答案见Glassdoor

finalize

Clearwire:

什么是finalize()方法

  • 你使用什么命令来确定是否有 Tomcat 实例运行在机器上?
  • 答案见Glassdoor
  • 什么是执行 SQL join 操作的表的最小数?
  • 答案见Glassdoor

finalize()方法什么时候被调用

UC Davis:

析构函数(finalization)的目的是什么

  • 两个 JSP 页面见如何传递变量,那么在一个控制权 servlet 和 JSP
    页面间呢?
  • 答案见Glassdoor

final 和 finalize 的区别

Deutsche Bank:

final

  • ArrayList 和 LinkedList 的区别,例如什么时候用 ArrayList?
  • 答案见Glassdoor

final关键字有哪些用法

Mindteck: 

final 与 static 关键字可以用于哪里?它们的作用是什么

  1. 什么是泛型? 2. arraylist 和 set 的区别? 3. 解释 finally

final, finally, finalize的区别

Antra:

final、finalize 和 finally 的不同之处?

什么 Java 原型不是线程安全的;final 和 finalize 的区别;能否在运行时向
static final 类型的赋值;抽象类和接口的区别?

能否在运行时向 static final 类型的赋值

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变

一个类被声明为final类型,表示了什么意思

throws, throw, try, catch, finally分别代表什么意义

Java 有几种修饰符?分别用来修饰什么

volatile

volatile 修饰符的有过什么实践

volatile 变量是什么?volatile 变量和 atomic 变量有什么不同

volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗

能创建 volatile 数组吗?

transient变量有什么特点

super什么时候使用

public static void 写成 static public void会怎样

说明一下public static void main(String
args[])这段声明里每个关键字的作用

请说出作用域public, private, protected, 以及不写时的区别

sizeof 是Java 的关键字吗

static

static class 与 non static class的区别

static
关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法

静态类型有什么特点

main() 方法为什么必须是静态的?能不能声明 main() 方法为非静态

是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用

静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢

成员方法是否可以访问静态变量?为什么静态方法不能访问成员变量

switch

switch 语句中的表达式可以是什么类型数据

switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上

while 循环和 do 循环有什么不同

操作符

&操作符和&&操作符有什么区别?

a = a + b 与 a += b 的区别?

逻辑操作符 (&,|,^)与条件操作符(&&,||)的区别

3*0.1 == 0.3 将会返回什么?true 还是 false?

float f=3.4; 是否正确?

short s1 = 1; s1 = s1 + 1;有什么错?

数据结构

基础类型(Primitives)

基础类型(Primitives)与封装类型(Wrappers)的区别在哪里

简述九种基本数据类型的大小,以及他们的封装类

int 和 Integer 哪个会占用更多的内存? int 和 Integer
有什么区别?parseInt()函数在什么时候使

用到

float和double的默认值是多少

如何去小数四舍五入保留小数点后两位

char 型变量中能不能存贮一个中文汉字,为什么

类型转换

怎样将 bytes 转换为 long 类型

怎么将 byte 转换为 String

如何将数值型字符转换为数字

我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte
类型的范围,将会出现什么现象

能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗

类型向下转换是什么

数组

如何权衡是使用无序的数组还是有序的数组

怎么判断数组是 null 还是为空

怎么打印数组? 怎样打印数组中的重复元素

Array 和 ArrayList有什么区别?什么时候应该使用Array而不是ArrayList

数组和链表数据结构描述,各自的时间复杂度

数组有没有length()这个方法? String有没有length()这个方法

队列

队列和栈是什么,列出它们的区别

BlockingQueue是什么

简述 ConcurrentLinkedQueue LinkedBlockingQueue 的用处和不同之处。

ArrayList、Vector、LinkedList的存储性能和特性

String

StringBuffer

ByteBuffer 与 StringBuffer有什么区别

HashMap

HashMap的工作原理是什么

内部的数据结构是什么

HashMap 的 table的容量如何确定?loadFactor 是什么?
该容量如何变化?这种变化会带来什么

问题?

HashMap 实现的数据结构是什么?如何实现

HashMap 和 HashTable、ConcurrentHashMap 的区别

HashMap的遍历方式及效率

HashMap、LinkedMap、TreeMap的区别

如何决定选用HashMap还是TreeMap

如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办

HashMap 是线程安全的吗?并发下使用的 Map
是什么,它们内部原理分别是什么,比如存储方

式、 hashcode、扩容、 默认容量等

HashSet

HashSet和TreeSet有什么区别

HashSet 内部是如何工作的

WeakHashMap 是怎么工作的?

Set

Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是
equals()? 它们有

何区别?

TreeMap:TreeMap
是采用什么树实现的?TreeMap、HashMap、LindedHashMap的区别。

TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

TreeSet:一个已经构建好的 TreeSet,怎么完成倒排序。

EnumSet 是什么

Hash算法

Hashcode 的作用

简述一致性 Hash 算法

有没有可能 两个不相等的对象有相同的 hashcode?当两个对象 hashcode
相同怎么办?如何获取

值对象

为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode
的异同点在哪里

a.hashCode() 有什么用?与 a.equals(b) 有什么关系

hashCode() 和 equals() 方法的重要性体现在什么地方

Object:Object有哪些公用方法?Object类hashcode,equals 设计原则?
sun为什么这么设计?

Object类的概述

如何在父类中为子类自动完成所有的 hashcode 和 equals
实现?这么做有何优劣。

可以在 hashcode() 中使用随机数字吗?

LinkedHashMap

LinkedHashMap 和 PriorityQueue 的区别是什么

List

List, Set, Map三个接口,存取元素时各有什么特点

List, Set, Map 是否继承自 Collection 接口

遍历一个 List 有哪些不同的方式

LinkedList

LinkedList 是单向链表还是双向链表

LinkedList 与 ArrayList 有什么区别

描述下 Java
中集合(Collections),接口(Interfaces),实现(Implementations)的概念。

LinkedList 与 ArrayList 的区别是什么?

澳门新葡亰3522平台游戏 ,插入数据时,ArrayList, LinkedList, Vector谁速度较快?

ArrayList

ArrayList 和 HashMap 的默认大小是多数

ArrayList 和 LinkedList 的区别,什么时候用 ArrayList?

ArrayList 和 Set 的区别?

ArrayList, LinkedList, Vector的区别

ArrayList是如何实现的,ArrayList 和 LinkedList 的区别

ArrayList如何实现扩容

Array 和 ArrayList 有何区别?什么时候更适合用Array

说出ArraList,Vector, LinkedList的存储性能和特性

Map

Map, Set, List, Queue, Stack

Map 接口提供了哪些不同的集合视图

为什么 Map 接口不继承 Collection 接口

Collections

介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些

Collections类是什么?Collection 和
Collections的区别?Collection、Map的实现

集合类框架的最佳实践有哪些

为什么 Collection 不从 Cloneable 和 Serializable 接口继承

说出几点 Java 中使用 Collections 的最佳实践?

Collections 中 遗留类 (HashTable、Vector) 和 现有类的区别

什么是 B+树,B-树,列出实际的使用场景。

接口

Comparator 与 Comparable 接口是干什么的?列出它们的区别

对象

拷贝(clone)

如何实现对象克隆

深拷贝和浅拷贝区别

深拷贝和浅拷贝如何实现激活机制

写clone()方法时,通常都有一行代码,是什么

比较

在比较对象时,”==” 运算符和 equals 运算有何区别

如果要重写一个对象的equals方法,还要考虑什么

两个对象值相同(x.equals(y) == true),但却可有不同的hash
code,这句话对不对

构造器

构造器链是什么

创建对象时构造器的调用顺序

不可变对象

什么是不可变象(immutable object)

为什么 Java 中的 String 是不可变的(Immutable)

如何构建不可变的类结构?关键点在哪里

能创建一个包含可变对象的不可变对象吗

如何对一组对象进行排序

方法

构造器(constructor)是否可被重写(override)

方法可以同时即是 static 又是 synchronized 的吗

abstract 的 method是否可同时是 static,是否可同时是
native,是否可同时是synchronized

Java支持哪种参数传递类型

一个对象被当作参数传递到一个方法,是值传递还是引用传递

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结

果,那么这里到底是值传递还是引用传递

我们能否重载main()方法

如果main方法被声明为private会怎样

GC

概念

GC是什么?为什么要有GC

什么时候会导致垃圾回收

GC是怎么样运行的

新老以及永久区是什么

GC 有几种方式?怎么配置

什么时候一个对象会被GC? 如何判断一个对象是否存活

System.gc() Runtime.gc()会做什么事情? 能保证 GC 执行吗

垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

Minor GC 、Major GC、Young GC 与 Full GC分别在什么时候发生

垃圾回收算法的实现原理

如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

垃圾回收的最佳做法是什么

GC收集器有哪些

垃圾回收器的基本原理是什么?

串行(serial)收集器和吞吐量(throughput)收集器的区别是什么

Serial 与 Parallel GC之间的不同之处

CMS 收集器 与 G1 收集器的特点与区别

CMS垃圾回收器的工作过程

JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代

吞吐量优先和响应优先的垃圾收集器选择

GC策略

举个实际的场景,选择一个GC策略

JVM的永久代中会发生垃圾回收吗

收集方法

标记清除、标记整理、复制算法的原理与特点?分别用在什么地方

如果让你优化收集方法,有什么思路

JVM

参数

说说你知道的几种主要的jvm 参数

-XX:+UseCompressedOops 有什么作用

类加载器(ClassLoader)

Java 类加载器都有哪些

JVM如何加载字节码文件

内存管理

JVM内存分哪几个区,每个区的作用是什么

一个对象从创建到销毁都是怎么在这些部分里存活和转移的

解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法

JVM中哪个参数是用来控制线程的栈堆栈小

简述内存分配与回收策略

简述重排序,内存屏障,happen-before,主内存,工作内存

Java中存在内存泄漏问题吗?请举例说明

简述 Java 中软引用(SoftReferenc)、弱引用(WeakReference)和虚引用

内存映射缓存区是什么

jstack,jstat,jmap,jconsole怎么用

32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?32 位和 64 位的 JVM,int
类型变量的长度是

多数?

怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位

JVM自身会维护缓存吗?是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理堆

什么情况下会发生栈内存溢出

双亲委派模型是什么

多线程

基本概念

什么是线程

多线程的优点

多线程的几种实现方式

用 Runnable 还是 Thread

什么是线程安全

Vector, SimpleDateFormat 是线程安全类吗

什么 Java 原型不是线程安全的

哪些集合类是线程安全的

多线程中的忙循环是什么

如何创建一个线程

编写多线程程序有几种实现方式

什么是线程局部变量

线程和进程有什么区别?进程间如何通讯,线程间如何通讯

什么是多线程环境下的伪共享(false sharing)

同步和异步有何异同,在什么情况下分别使用他们?举例说明

Current

ConcurrentHashMap 和 Hashtable的区别

ArrayBlockingQueue, CountDownLatch的用法

ConcurrentHashMap的并发度是什么

CyclicBarrier 和 CountDownLatch有什么不同?各自的内部原理和用法是什么

Semaphore的用法

Thread

启动一个线程是调用 run() 还是 start() 方法?start() 和 run()
方法有什么区别

调用start()方法时会执行run()方法,为什么不能直接调用run()方法

sleep() 方法和对象的 wait() 方法都可以让线程暂停执行,它们有什么区别

yield方法有什么作用?sleep() 方法和 yield() 方法有什么区别

Java 中如何停止一个线程

stop() 和 suspend() 方法为何不推荐使用

如何在两个线程间共享数据

如何强制启动一个线程

如何让正在运行的线程暂停一段时间

什么是线程组,为什么在Java中不推荐使用

你是如何调用 wait(方法的)?使用 if 块还是循环?为什么

生命周期

有哪些不同的线程生命周期

线程状态,BLOCKED 和 WAITING 有什么区别

画一个线程的生命周期状态图

ThreadLocal 用途是什么,原理是什么,用的时候要注意什么

ThreadPool

线程池是什么?为什么要使用它

如何创建一个Java线程池

ThreadPool用法与优势

提交任务时,线程池队列已满时会发会生什么

newCache 和 newFixed
有什么区别?简述原理。构造函数的各个参数的含义是什么,比如

coreSize, maxsize 等

线程池的实现策略

线程池的关闭方式有几种,各自的区别是什么

线程池中submit() 和 execute()方法有什么区别?

线程调度

Java中用到的线程调度算法是什么

什么是多线程中的上下文切换

你对线程优先级的理解是什么

什么是线程调度器 (Thread Scheduler) 和时间分片 (Time Slicing)

线程同步

请说出你所知的线程同步的方法

synchronized 的原理是什么

synchronized 和 ReentrantLock 有什么不同

什么场景下可以使用 volatile 替换 synchronized

有T1,T2,T3三个线程,怎么确保它们按顺序执行?怎样保证T2在T1执行完后执行,T3在T2执行

完后执行

同步块内的线程抛出异常会发生什么

当一个线程进入一个对象的 synchronized 方法A
之后,其它线程是否可进入此对象的

synchronized 方法B

使用 synchronized 修饰静态方法和非静态方法有什么区别

如何从给定集合那里创建一个 synchronized 的集合

Java Concurrency API 中 的 Lock 接口是什么?对比同步它有什么优势

Lock 与 Synchronized 的区别?Lock 接口比 synchronized 块的优势是什么

ReadWriteLock是什么?

锁机制有什么用

什么是乐观锁(Optimistic Locking)?如何实现乐观锁?如何避免ABA问题

解释以下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲

观锁

什么时候应该使用可重入锁

简述锁的等级方法锁、对象锁、类锁

Java中活锁和死锁有什么区别?

什么是死锁(Deadlock)?导致线程死锁的原因?如何确保 N 个线程可以访问 N
个资源同时又不导

致死锁

死锁与活锁的区别,死锁与饥饿的区别

怎么检测一个线程是否拥有锁

如何实现分布式锁

有哪些无锁数据结构,他们实现的原理是什么

读写锁可以用于什么应用场景