学习资料Alibaba interview我爱编程

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

2017-11-13  本文已影响451人  Java红茶

基本概念

关键字

finalize

  1. finalize()方法什么时候被调用
  2. 析构函数(finalization)的目的是什么
  3. final 和 finalize 的区别
  4. final
  1. final 与 static 关键字可以用于哪里?它们的作用是什么
  2. final, finally, finalize的区别
  3. final、finalize 和 finally 的不同之处?
  1. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
  2. 一个类被声明为final类型,表示了什么意思
  3. throws, throw, try, catch, finally分别代表什么意义

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

volatile

transient变量有什么特点

super什么时候使用

public static void 写成 static public void会怎样

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

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

sizeof 是Java 的关键字吗

static

switch

操作符

数据结构

基础类型(Primitives)

类型转换

数组

队列

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

String

StringBuffer

HashMap

HashSet

Set

Hash算法

LinkedHashMap

List

  1. LinkedList 是单向链表还是双向链表
  2. LinkedList 与 ArrayList 有什么区别
  3. 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?
  4. 插入数据时,ArrayList, LinkedList, Vector谁速度较快?
  1. ArrayList 和 HashMap 的默认大小是多数
  2. ArrayList 和 LinkedList 的区别,什么时候用 ArrayList?
  3. ArrayList 和 Set 的区别?
  4. ArrayList, LinkedList, Vector的区别
  5. ArrayList是如何实现的,ArrayList 和 LinkedList 的区别
  6. ArrayList如何实现扩容
  7. Array 和 ArrayList 有何区别?什么时候更适合用Array
  8. 说出ArraList,Vector, LinkedList的存储性能和特性

Map

Collections

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

接口

对象

拷贝(clone)

比较

构造器

不可变对象

如何对一组对象进行排序

方法

GC

概念

GC收集器有哪些

GC策略

收集方法

JVM

参数

类加载器(ClassLoader)

内存管理

jstack,jstat,jmap,jconsole怎么用

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

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

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

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

双亲委派模型是什么

多线程

基本概念

  1. 用 Runnable 还是 Thread
  1. Vector, SimpleDateFormat 是线程安全类吗
  2. 什么 Java 原型不是线程安全的
  3. 哪些集合类是线程安全的

Current

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

Semaphore的用法

Thread

生命周期

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

ThreadPool

线程调度

线程同步

Executors类是什么? Executor和Executors的区别

什么是Java线程转储(Thread Dump),如何得到它

如何在Java中获取线程堆栈

说出 3 条在 Java 中使用线程的最佳实践

在线程中你怎么处理不可捕捉异常

实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的

请说出与线程同步以及线程调度相关的方法

程序中有3个 socket,需要多少个线程来处理

假如有一个第三方接口,有很多个线程去调用获取数据,现在规定每秒钟最多有 10 个线程同时调用它,如何做到

如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长

如何确保 main() 方法所在的线程是 Java 程序最后结束的线程

非常多个线程(可能是不同机器),相互之间需要等待协调才能完成某种工作,问怎么设计这种协调方案

你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它

异常

基本概念

  1. UnsupportedOperationException是什么
  2. NullPointerException 和 ArrayIndexOutOfBoundException 之间有什么相同之处

finally

  1. 如果执行finally代码块之前方法返回了结果,或者JVM退出了,finally块中的代码还会执行吗
  2. try里有return,finally还执行么?那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
  3. 在什么情况下,finally语句不会执行

throw 和 throws 有什么区别?

OOM你遇到过哪些情况?你是怎么搞定的?

SOF你遇到过哪些情况?

既然我们可以用RuntimeException来处理错误,那么你认为为什么Java中还存在检查型异常

当自己创建异常类的时候应该注意什么

导致空指针异常的原因

异常处理 handle or declare 原则应该如何理解

怎么利用 JUnit 来测试一个方法的异常

catch块里别不写代码有什么问题

你曾经自定义实现过异常吗?怎么写的

什么是 异常链

在try块中可以抛出异常吗

JDBC

IO

  1. File类型中定义了什么方法来创建一级目录

File类型中定义了什么方法来判断一个文件是否存在

  1. 为了提高读写性能,可以采用什么流
  2. Java中有几种类型的流
  3. JDK 为每种类型的流提供了一些抽象类以供继承,分别是哪些类
  4. 对文本文件操作用什么I/O流
  5. 对各种基本数据类型和String类型的读写,采用什么流
  6. 能指定字符编码的 I/O 流类型是什么
  1. 什么是序列化?如何实现 Java 序列化及注意事项
  2. Serializable 与 Externalizable 的区别
  1. socket 选项 TCP NO DELAY 是指什么
  2. Socket 工作在 TCP/IP 协议栈是哪一层
  3. TCP、UDP 区别及 Java 实现方式

面向对象编程(OOP)

  1. 获得一个类的类对象有哪些方式
  2. 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
  3. 说出几条 Java 中方法重载的最佳实践
  1. 抽象类和接口的区别
  2. 抽象类中是否可以有静态的main方法
  3. 抽象类是否可实现(implements)接口
  4. 抽象类是否可继承具体类(concrete class)

匿名内部类是否可以继承其它类?是否可以实现接口

  1. 内部类分为几种
  2. 内部类可以引用它的包含类(外部类)的成员吗
  3. 请说一下 Java 中为什么要引入内部类?还有匿名内部类
  1. 继承(Inheritance)与聚合(Aggregation)的区别在哪里
  2. 继承和组合之间有什么不同
  3. 为什么类只能单继承,接口可以多继承
  4. 存在两个类,B 继承 A,C 继承 B,能将 B 转换为 C 么?如 C = (C) B
  5. 如果类 a 继承类 b,实现接口c,而类 b 和接口 c 中定义了同名变量,请问会出现什么问题
  1. 接口是什么
  2. 接口是否可继承接口
  3. 为什么要使用接口而不是直接使用具体类?接口有什么优点

泛型

工具类

  1. Calendar Class的用途
  2. 如何在Java中获取日历类的实例
  3. 解释一些日历类中的重要方法
  4. GregorianCalendar 类是什么
  5. SimpleTimeZone 类是什么
  6. Locale类是什么
  7. 如何格式化日期对象
  8. 如何添加小时(hour)到一个日期对象(Date Objects)
  9. 如何将字符串 YYYYMMDD 转换为日期

Math.round()什么作用?Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

  1. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?DOM 和 SAX 解析器有什么不同?
  2. Java解析XML的方式
  3. 用 jdom 解析 xml 文件时如何解决中文问题?如何解析
  4. 你在项目中用到了 XML 技术的哪些方面?如何实现

动态代理

设计模式

  1. 除了单例模式,你在生产环境中还用过什么设计模式?
  2. 写 Singleton 单例模式
  3. 单例模式的双检锁是什么
  4. 如何创建线程安全的 Singleton
  5. 什么是类的单例模式
  6. 写出三种单例模式实现
  1. 适配器模式是什么?什么时候使用
  2. 适配器模式和代理模式之前有什么不同
  3. 适配器模式和装饰器模式有什么区别

开放问题

知识面

  1. Linux 下 IO 模型有几种,各自的含义是什么。
  2. Linux 系统下你关注过哪些内核参数,说说你知道的
  3. Linux 下用一行命令查看文件的最后五行
  4. 平时用到哪些 Linux 命令
  5. 用一行命令输出正在运行的 Java 进程
  6. 使用什么命令来确定是否有 Tomcat 实例运行在机器上
  1. HTTPS 的加密方式是什么,讲讲整个加密解密流程
  2. HTTPS和HTTP的区别
  3. HTTP连接池实现原理
  4. HTTP集群方案
  5. Nginx、lighttpd、Apache三大主流 Web服务器的区别
  6. java学习群669823128

编程题

计算加班费

加班10小时以下加班费是时薪的1.5倍。加班10小时或以上,按4元/时算。提示:(一个月工作26天,一天正常工作8小时)

卖东西

一家商场有红苹果和青苹果出售。(红苹果5元/个,青苹果4元/个)。

提示:一个苹果是一个单独的实体。

日期提取

有这样一个时间字符串:2008-8-8 20:08:08 , 请编写能够匹配它的正则表达式,并编写Java代码将日期后面的时分秒提取出来,即:20:08:08

线程

数字

  1. 显示放组里的数
  2. 找出第[5]个数
  3. 删除第[9]个数,再显示删除后的第[9]个

网络

反射

数据库

算法

正则

字符串

日期

上一篇下一篇

猜你喜欢

热点阅读