Java基础知识整理

2019年11月12日 阅读数:54
这篇文章主要向大家介绍Java基础知识整理,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

基本概念

  • 操做系统中 heap 和 stack 的区别前端

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

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

  • 什么是 Java 的反射机制正则表达式

  • 什么是 ACID算法

  • BS与CS的联系与区别数据库

  • Cookie 和 Session的区别编程

  • fail-fast 与 fail-safe 机制有什么区别设计模式

  • get 和 post请求的区别数组

  • Interface 与 abstract 类的区别浏览器

  • IOC的优势是什么

  • IO 和 NIO的区别,NIO优势

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

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

  • JRE、JDK、JVM 及 JIT 之间有什么不一样

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

  • RPC 通讯和 RMI 区别

  • 什么是 Web Service(Web服务)

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

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

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

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

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

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

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

  • 简单描述Struts的主要功能

  • 什么是 N 层架构

  • 什么是CORBA?用途是什么

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

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

  • 什么是懒加载(Lazy Loading)

  • 什么是尾递归,为何须要尾递归

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

关键字

finalize

  • 什么是finalize()方法

  1. finalize()方法何时被调用

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

  3. final 和 finalize 的区别

  4. final

  • final关键字有哪些用法

  1. final 与 static 关键字能够用于哪里?它们的做用是什么

  2. final, finally, finalize的区别

  3. final、finalize 和 finally 的不一样之处?

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

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

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

  3. 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

  1. LinkedList 是单向链表仍是双向链表

  2. LinkedList 与 ArrayList 有什么区别

  3. 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?

  4. 插入数据时,ArrayList, LinkedList, Vector谁速度较快?

  • ArrayList

  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

  • 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本身管理堆
什么状况下会发生栈内存溢出
双亲委派模型是什么

多线程

基本概念

  • 什么是线程

  • 多线程的优势

  • 多线程的几种实现方式

  1. 用 Runnable 仍是 Thread

  • 什么是线程安全

  1. Vector, SimpleDateFormat 是线程安全类吗

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

  3. 哪些集合类是线程安全的

  • 多线程中的忙循环是什么

  • 如何建立一个线程

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

  • 什么是线程局部变量

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

  • 什么是多线程环境下的伪共享(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 个资源同时又不致使死锁

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

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

  • 如何实现分布式锁

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

  • 读写锁能够用于什么应用场景

Executors类是什么? Executor和Executors的区别
什么是Java线程转储(Thread Dump),如何获得它
如何在Java中获取线程堆栈
说出 3 条在 Java 中使用线程的最佳实践
在线程中你怎么处理不可捕捉异常
实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的
请说出与线程同步以及线程调度相关的方法
程序中有3个 socket,须要多少个线程来处理
假若有一个第三方接口,有不少个线程去调用获取数据,如今规定每秒钟最多有 10 个线程同时调用它,如何作到
如何在 Windows 和 Linux 上查找哪一个线程使用的 CPU 时间最长
如何确保 main() 方法所在的线程是 Java 程序最后结束的线程
很是多个线程(多是不一样机器),相互之间须要等待协调才能完成某种工做,问怎么设计这种协调方案
你须要实现一个高效的缓存,它容许多个用户读,但只容许一个用户写,以此来保持它的完整性,你会怎样去实现它

异常

基本概念

  • Error 和 Exception有什么区别

  1. UnsupportedOperationException是什么

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

  • 什么是受检查的异常,什么是运行时异常

  • 运行时异常与通常异常有何异同

  • 简述一个你最多见到的runtime exception(运行时异常)

finally

  • 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

  • 经过 JDBC 链接数据库有哪几种方式

  • 阐述 JDBC 操做数据库的基本步骤

  • JDBC 中如何进行事务处理

  • 什么是 JdbcTemplate

  • 什么是 DAO 模块

  • 使用 JDBC 操做数据库时,如何提高读取数据的性能?如何提高更新数据的性能

  • 列出 5 个应该遵循的 JDBC 最佳实践

IO

  • File

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

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

  1. 为了提升读写性能,能够采用什么流

  2. Java中有几种类型的流

  3. JDK 为每种类型的流提供了一些抽象类以供继承,分别是哪些类

  4. 对文本文件操做用什么I/O流

  5. 对各类基本数据类型和String类型的读写,采用什么流

  6. 能指定字符编码的 I/O 流类型是什么

  • 序列化

  1. 什么是序列化?如何实现 Java 序列化及注意事项

  2. Serializable 与 Externalizable 的区别

  • Socket

  1. socket 选项 TCP NO DELAY 是指什么

  2. Socket 工做在 TCP/IP 协议栈是哪一层

  3. TCP、UDP 区别及 Java 实现方式

  • 说几点 IO 的最佳实践

  • 直接缓冲区与非直接缓冲器有什么区别?

  • 怎么读写 ByteBuffer?ByteBuffer 中的字节序是什么

  • 当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少

  • 如何使用扫描器类(Scanner Class)令牌化

面向对象编程(OOP)

  • 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)

  • 多态的实现原理

  • 封装、继承和多态是什么

  • 对象封装的原则是什么?

  1. 得到一个类的类对象有哪些方式

  2. 重载(Overload)和重写(Override)的区别。重载的方法可否根据返回类型进行区分?

  3. 说出几条 Java 中方法重载的最佳实践

  • 抽象类

  1. 抽象类和接口的区别

  2. 抽象类中是否能够有静态的main方法

  3. 抽象类是否可实现(implements)接口

  4. 抽象类是否可继承具体类(concrete class)

  • 匿名类(Anonymous Inner 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. 为何要使用接口而不是直接使用具体类?接口有什么优势

泛型

  • 泛型的存在是用来解决什么问题

  • 泛型的经常使用特色

  • List可否转为List

工具类

  • 日历

  1. Calendar Class的用途

  2. 如何在Java中获取日历类的实例

  3. 解释一些日历类中的重要方法

  4. GregorianCalendar 类是什么

  5. SimpleTimeZone 类是什么

  6. Locale类是什么

  7. 如何格式化日期对象

  8. 如何添加小时(hour)到一个日期对象(Date Objects)

  9. 如何将字符串 YYYYMMDD 转换为日期

  • Math

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

  • XML

  1. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?DOM 和 SAX 解析器有什么不一样?

  2. Java解析XML的方式

  3. 用 jdom 解析 xml 文件时如何解决中文问题?如何解析

  4. 你在项目中用到了 XML 技术的哪些方面?如何实现

动态代理

  • 描述动态代理的几种实现方式,分别说出相应的优缺点

设计模式

  • 什么是设计模式(Design Patterns)?你用过哪一种设计模式?用在什么场合

  • 你知道哪些商业级设计模式?

  • 哪些设计模式能够增长系统的可扩展性

  • 单例模式

  1. 除了单例模式,你在生产环境中还用过什么设计模式?

  2. 写 Singleton 单例模式

  3. 单例模式的双检锁是什么

  4. 如何建立线程安全的 Singleton

  5. 什么是类的单例模式

  6. 写出三种单例模式实现

  • 适配器模式

  1. 适配器模式是什么?何时使用

  2. 适配器模式和代理模式以前有什么不一样

  3. 适配器模式和装饰器模式有什么区别

  • 何时使用享元模式

  • 何时使用组合模式

  • 何时使用访问者模式

  • 什么是模板方法模式

  • 请给出1个符合开闭原则的设计模式的例子

开放问题

  • 用一句话归纳 Web 编程的特色

  • Google是如何在一秒内把搜索结果返回给用户

  • 哪一种依赖注入方式你建议使用,构造器注入,仍是 Setter方法注入

  • 树(二叉或其余)造成许多普通数据结构的基础。请描述一些这样的数据结构以及什么时候可使用它们

  • 某一项功能如何设计

  • 线上系统忽然变得异常缓慢,你如何查找问题

  • 什么样的项目不适合用框架

  • 新浪微博是如何实现把微博推给订阅者

  • 简要介绍下从浏览器输入 URL 开始到获取到请求界面以后 Java Web 应用中发生了什么

  • 请你谈谈SSH整合

  • 高并发下,如何作到安全的修改同一行数据

  • 12306网站的订票系统如何实现,如何保证不会票不被超卖

  • 网站性能优化如何优化的

  • 聊了下曾经参与设计的服务器架构

  • 请思考一个方案,实现分布式环境下的 countDownLatch

  • 请思考一个方案,设计一个能够控制缓存整体大小的自动适应的本地缓存

  • 在你的职业生涯中,算得上最困难的技术挑战是什么

  • 如何写一篇设计文档,目录是什么

  • 大写的O是什么?举几个例子

  • 编程中本身都怎么考虑一些设计原则的,好比开闭原则,以及在工做中的应用

  • 解释一下网络应用的模式及其特色

  • 设计一个在线文档系统,文档能够被编辑,如何防止多人同时对同一份文档进行编辑更新

  • 说出数据链接池的工做机制是什么

  • 怎么获取一个文件中单词出现的最高频率

  • 描述一下你最经常使用的编程风格

  • 若是有机会从新设计大家的产品,你会怎么作

  • 如何搭建一个高可用系统

  • 如何启动时不需输入用户名与密码

  • 如何在基于Java的Web项目中实现文件上传和下载

  • 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

  • 如何实现负载均衡,有哪些算法能够实现

  • 如何设计一个购物车?想一想淘宝的购物车如何实现的

  • 如何设计一套高并发支付方案,架构如何设计

  • 如何设计创建和保持 100w 的长链接

  • 如何避免浏览器缓存。

  • 如何防止缓存雪崩

  • 若是AB两个系统互相依赖,如何解除依

  • 若是有人恶意建立非法链接,怎么解决

  • 若是有几十亿的白名单,天天白天须要高并发查询,晚上须要更新一次,如何设计这个功能

  • 若是系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)

  • 若是要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现

  • 若是让你实现一个并发安全的链表,你会怎么作

  • 应用服务器与WEB 服务器的区别?应用服务器怎么监控性能,各类方式的区别?你使用过的应用服务器优化技术有哪些

  • 大型网站在架构上应当考虑哪些问题

  • 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的

  • 最近看什么书,印象最深入的是什么

  • 描述下经常使用的重构技巧

  • 你使用什么版本管理工具?分支(Branch)与标签(Tag)之间的区别在哪里

  • 你有了解过存在哪些反模式(Anti-Patterns)吗

  • 你用过的网站前端优化的技术有哪些

  • 如何分析Thread dump

  • 你如何理解AOP中的链接点(Joinpoint)、切点(Pointcut)、加强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念

  • 你是如何处理内存泄露或者栈溢出问题的

  • 大家线上应用的 JVM 参数有哪些

  • 怎么提高系统的QPS和吞吐量

知识面

  • 解释什么是 MESI 协议(缓存一致性)

  • 谈谈 reactor 模型

  • Java 9 带来了怎样的新功能

  • Java 与 C++ 对比,C++ 或 Java 中的异常处理机制的简单原理和应用

  • 简单讲讲 Tomcat 结构,以及其类加载器流程

  • 虚拟内存是什么

  • 阐述下 SOLID 原则

  • 请简要讲一下你对测试驱动开发(TDD)的认识

  • CDN实现原理

  • Maven 和 ANT 有什么区别

  • UML中有哪些经常使用的图

  • Linux

  1. Linux 下 IO 模型有几种,各自的含义是什么。

  2. Linux 系统下你关注过哪些内核参数,说说你知道的

  3. Linux 下用一行命令查看文件的最后五行

  4. 平时用到哪些 Linux 命令

  5. 用一行命令输出正在运行的 Java 进程

  6. 使用什么命令来肯定是否有 Tomcat 实例运行在机器上

  • 什么是 N+1 难题

  • 什么是 paxos 算法

  • 什么是 restful,讲讲你理解的 restful

  • 什么是 zab 协议

  • 什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别

  • 什么是领域驱动开发(Domain Driven Development)

  • 介绍一下了解的 Java 领域的 Web Service 框架

  • Web Server、Web Container 与 Application Server 的区别是什么

  • 微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里

  • 描述 Cookie 和 Session 的做用,区别和各自的应用范围,Session工做原理

  • 你经常使用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具备哪些

  • 简述下数据库正则化(Normalizations)

  • KISS,DRY,YAGNI 等原则是什么含义

  • 分布式事务的原理,优缺点,如何使用分布式事务?

  • 布式集群下如何作到惟一序列号

  • 网络

  1. HTTPS 的加密方式是什么,讲讲整个加密解密流程

  2. HTTPS和HTTP的区别

  3. HTTP链接池实现原理

  4. HTTP集群方案

  5. Nginx、lighttpd、Apache三大主流 Web服务器的区别

  • 是否看过框架的一些代码

  • 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些

  • 数值提高是什么

  • 你能解释一下里氏替换原则吗

  • 你是如何测试一个应用的?知道哪些测试框架

  • 传输层常见编程协议有哪些?并说出各自的特色

编程题

计算加班费

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

  • 计算1000月薪,加班9小时的加班费

  • 计算2500月薪,加班11小时的加班费

  • 计算1000月薪,加班15小时的加班费

卖东西

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

  • 模拟一个进货。红苹果跟青苹果各进200个。

  • 模拟一个出售。红苹果跟青苹果各买出10个。每卖出一个苹果须要进行统计。

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

日期提取

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

线程

  • 8设计4个线程,其中两个线程每次对j增长1,另外两个线程对j每次减小1。写出程序。

  • 用Java写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出

  • wait-notify 写一段代码来解决生产者-消费者问题

数字

  • 判断101-200之间有多少个素数,并输出全部素数

  • 用最有效率的方法算出2乘以17等于多少

  • 有 1 亿个数字,其中有 2 个是重复的,快速找到它,时间和空间要最优

  • 2 亿个随机生成的无序整数,找出中间大小的值

  • 10 亿个数字里里面找最小的 10 个

  • 1到1亿的天然数,求全部数的拆分后的数字之和,如286 拆分红二、八、6,如1到11拆分后的数字之和 => 1 + … + 9 + 1 + 0 + 1 + 1

  • 一个数若是刚好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3.编程 找出1000之内的全部完数

  • 一个数组中全部的元素都出现了三次,只有一个元素出现了一次找到这个元素

  • 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共通过多少米?第10次反弹多高?

  • 求100-1000内质数的和

  • 求1到100的和的平均数

  • 求s=a+a+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 求出1到100的和

  • 算出1到40的质数,放进数组里

  1. 显示放组里的数

  2. 找出第[5]个数

  3. 删除第[9]个数,再显示删除后的第[9]个

  • 有 3n+1 个数字,其中 3n 个中是重复的,只有 1 个是不重复的,怎么找出来。

  • 有一组数1.1.2.3.5.8.13.21.34。写出程序随便输入一个数就能给出和前一组数字同规律的头5个数

  • 计算指定数字的阶乘

  • 开发 Fizz Buzz

  • 给定一个包含 N 个整数的数组,找出丢失的整数

  • 一个排好序的数组,找出两数之和为m的全部组合

  • 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

  • 打印出全部的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数自己。例如:153是一个 “水仙花数 “,由于153=1的三次方+5的三次方+3的三次方

  • 原地交换两个变量的值

  • 找出4字节整数的中位数

  • 找到整数的平方根

  • 实现斐波那契

网络

  • 用Java Socket编程,读服务器几个字符,再写入本地显示

反射

  • 反射机制提供了什么功能?

  • 反射是如何实现的

  • 哪里用到反射机制

  • 反射中 Class.forName 和 ClassLoader 区别

  • 反射建立类实例的三种方式是什么

  • 如何经过反射调用对象的方法

  • 如何经过反射获取和设置对象私有字段的值

  • 反射机制的优缺点

数据库

  • 写一段 JDBC 连Oracle的程序,并实现数据查询

算法

  • 50我的围坐一圈,当数到三或者三的倍数出圈,问剩下的人是谁,原来的位置是多少

  • 实现一个电梯模拟器用

  • 写一个冒泡排序

  • 写一个折半查找

  • 随机产生20个不能重复的字符并排序

  • 写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组

  • 写一段代码在遍历 ArrayList 时移除一个元素

  • 古典问题:有一对兔子,从出生后第3个月起每月都生一对兔子,小兔子长到第四个月后每月又生一对兔子,假如兔子都不死,问每月的兔子总数为多少

  • 约瑟芬环游戏

正则

  • 请编写一段匹配IP地址的正则表达式

  • 写出一个正则表达式来判断一个字符串是不是一个数字

字符串

  • 写一个方法,入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

  • 写一个程序找出全部字符串的组合,并检查它们是不是回文串

  • 写一个字符串反转函数,输入abcde转换成edcba代码

  • 小游戏,倒转句子中的单词

  • 将GB2312编码的字符串转换为ISO-8859-1编码的字符串

  • 请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式

  • 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 可是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”

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

  • 打印出一个字符串的全部排列

  • 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)

  • 在Web应用开发过程当中常常遇到输出某种编码的字符,如从 GBK 到 ISO8859-1等,如何输出一个某种编码的字符串

日期

  • 计算两个日期之间的差距

  •  

基本概念

  • 操做系统中 heap 和 stack 的区别

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

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

  • 什么是 Java 的反射机制

  • 什么是 ACID

  • BS与CS的联系与区别

  • Cookie 和 Session的区别

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

  • get 和 post请求的区别

  • Interface 与 abstract 类的区别

  • IOC的优势是什么

  • IO 和 NIO的区别,NIO优势

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

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

  • JRE、JDK、JVM 及 JIT 之间有什么不一样

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

  • RPC 通讯和 RMI 区别

  • 什么是 Web Service(Web服务)

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

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

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

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

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

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

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

  • 简单描述Struts的主要功能

  • 什么是 N 层架构

  • 什么是CORBA?用途是什么

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

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

  • 什么是懒加载(Lazy Loading)

  • 什么是尾递归,为何须要尾递归

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

关键字

finalize

  • 什么是finalize()方法

  1. finalize()方法何时被调用

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

  3. final 和 finalize 的区别

  4. final

  • final关键字有哪些用法

  1. final 与 static 关键字能够用于哪里?它们的做用是什么

  2. final, finally, finalize的区别

  3. final、finalize 和 finally 的不一样之处?

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

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

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

  3. 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

  1. LinkedList 是单向链表仍是双向链表

  2. LinkedList 与 ArrayList 有什么区别

  3. 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?

  4. 插入数据时,ArrayList, LinkedList, Vector谁速度较快?

  • ArrayList

  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

  • 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本身管理堆
什么状况下会发生栈内存溢出
双亲委派模型是什么

多线程

基本概念

  • 什么是线程

  • 多线程的优势

  • 多线程的几种实现方式

  1. 用 Runnable 仍是 Thread

  • 什么是线程安全

  1. Vector, SimpleDateFormat 是线程安全类吗

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

  3. 哪些集合类是线程安全的

  • 多线程中的忙循环是什么

  • 如何建立一个线程

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

  • 什么是线程局部变量

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

  • 什么是多线程环境下的伪共享(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 个资源同时又不致使死锁

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

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

  • 如何实现分布式锁

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

  • 读写锁能够用于什么应用场景

Executors类是什么? Executor和Executors的区别
什么是Java线程转储(Thread Dump),如何获得它
如何在Java中获取线程堆栈
说出 3 条在 Java 中使用线程的最佳实践
在线程中你怎么处理不可捕捉异常
实际项目中使用多线程举例。你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的
请说出与线程同步以及线程调度相关的方法
程序中有3个 socket,须要多少个线程来处理
假若有一个第三方接口,有不少个线程去调用获取数据,如今规定每秒钟最多有 10 个线程同时调用它,如何作到
如何在 Windows 和 Linux 上查找哪一个线程使用的 CPU 时间最长
如何确保 main() 方法所在的线程是 Java 程序最后结束的线程
很是多个线程(多是不一样机器),相互之间须要等待协调才能完成某种工做,问怎么设计这种协调方案
你须要实现一个高效的缓存,它容许多个用户读,但只容许一个用户写,以此来保持它的完整性,你会怎样去实现它

异常

基本概念

  • Error 和 Exception有什么区别

  1. UnsupportedOperationException是什么

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

  • 什么是受检查的异常,什么是运行时异常

  • 运行时异常与通常异常有何异同

  • 简述一个你最多见到的runtime exception(运行时异常)

finally

  • 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

  • 经过 JDBC 链接数据库有哪几种方式

  • 阐述 JDBC 操做数据库的基本步骤

  • JDBC 中如何进行事务处理

  • 什么是 JdbcTemplate

  • 什么是 DAO 模块

  • 使用 JDBC 操做数据库时,如何提高读取数据的性能?如何提高更新数据的性能

  • 列出 5 个应该遵循的 JDBC 最佳实践

IO

  • File

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

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

  1. 为了提升读写性能,能够采用什么流

  2. Java中有几种类型的流

  3. JDK 为每种类型的流提供了一些抽象类以供继承,分别是哪些类

  4. 对文本文件操做用什么I/O流

  5. 对各类基本数据类型和String类型的读写,采用什么流

  6. 能指定字符编码的 I/O 流类型是什么

  • 序列化

  1. 什么是序列化?如何实现 Java 序列化及注意事项

  2. Serializable 与 Externalizable 的区别

  • Socket

  1. socket 选项 TCP NO DELAY 是指什么

  2. Socket 工做在 TCP/IP 协议栈是哪一层

  3. TCP、UDP 区别及 Java 实现方式

  • 说几点 IO 的最佳实践

  • 直接缓冲区与非直接缓冲器有什么区别?

  • 怎么读写 ByteBuffer?ByteBuffer 中的字节序是什么

  • 当用System.in.read(buffer)从键盘输入一行n个字符后,存储在缓冲区buffer中的字节数是多少

  • 如何使用扫描器类(Scanner Class)令牌化

面向对象编程(OOP)

  • 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)

  • 多态的实现原理

  • 封装、继承和多态是什么

  • 对象封装的原则是什么?

  1. 得到一个类的类对象有哪些方式

  2. 重载(Overload)和重写(Override)的区别。重载的方法可否根据返回类型进行区分?

  3. 说出几条 Java 中方法重载的最佳实践

  • 抽象类

  1. 抽象类和接口的区别

  2. 抽象类中是否能够有静态的main方法

  3. 抽象类是否可实现(implements)接口

  4. 抽象类是否可继承具体类(concrete class)

  • 匿名类(Anonymous Inner 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. 为何要使用接口而不是直接使用具体类?接口有什么优势

泛型

  • 泛型的存在是用来解决什么问题

  • 泛型的经常使用特色

  • List可否转为List

工具类

  • 日历

  1. Calendar Class的用途

  2. 如何在Java中获取日历类的实例

  3. 解释一些日历类中的重要方法

  4. GregorianCalendar 类是什么

  5. SimpleTimeZone 类是什么

  6. Locale类是什么

  7. 如何格式化日期对象

  8. 如何添加小时(hour)到一个日期对象(Date Objects)

  9. 如何将字符串 YYYYMMDD 转换为日期

  • Math

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

  • XML

  1. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?DOM 和 SAX 解析器有什么不一样?

  2. Java解析XML的方式

  3. 用 jdom 解析 xml 文件时如何解决中文问题?如何解析

  4. 你在项目中用到了 XML 技术的哪些方面?如何实现

动态代理

  • 描述动态代理的几种实现方式,分别说出相应的优缺点

设计模式

  • 什么是设计模式(Design Patterns)?你用过哪一种设计模式?用在什么场合

  • 你知道哪些商业级设计模式?

  • 哪些设计模式能够增长系统的可扩展性

  • 单例模式

  1. 除了单例模式,你在生产环境中还用过什么设计模式?

  2. 写 Singleton 单例模式

  3. 单例模式的双检锁是什么

  4. 如何建立线程安全的 Singleton

  5. 什么是类的单例模式

  6. 写出三种单例模式实现

  • 适配器模式

  1. 适配器模式是什么?何时使用

  2. 适配器模式和代理模式以前有什么不一样

  3. 适配器模式和装饰器模式有什么区别

  • 何时使用享元模式

  • 何时使用组合模式

  • 何时使用访问者模式

  • 什么是模板方法模式

  • 请给出1个符合开闭原则的设计模式的例子

开放问题

  • 用一句话归纳 Web 编程的特色

  • Google是如何在一秒内把搜索结果返回给用户

  • 哪一种依赖注入方式你建议使用,构造器注入,仍是 Setter方法注入

  • 树(二叉或其余)造成许多普通数据结构的基础。请描述一些这样的数据结构以及什么时候可使用它们

  • 某一项功能如何设计

  • 线上系统忽然变得异常缓慢,你如何查找问题

  • 什么样的项目不适合用框架

  • 新浪微博是如何实现把微博推给订阅者

  • 简要介绍下从浏览器输入 URL 开始到获取到请求界面以后 Java Web 应用中发生了什么

  • 请你谈谈SSH整合

  • 高并发下,如何作到安全的修改同一行数据

  • 12306网站的订票系统如何实现,如何保证不会票不被超卖

  • 网站性能优化如何优化的

  • 聊了下曾经参与设计的服务器架构

  • 请思考一个方案,实现分布式环境下的 countDownLatch

  • 请思考一个方案,设计一个能够控制缓存整体大小的自动适应的本地缓存

  • 在你的职业生涯中,算得上最困难的技术挑战是什么

  • 如何写一篇设计文档,目录是什么

  • 大写的O是什么?举几个例子

  • 编程中本身都怎么考虑一些设计原则的,好比开闭原则,以及在工做中的应用

  • 解释一下网络应用的模式及其特色

  • 设计一个在线文档系统,文档能够被编辑,如何防止多人同时对同一份文档进行编辑更新

  • 说出数据链接池的工做机制是什么

  • 怎么获取一个文件中单词出现的最高频率

  • 描述一下你最经常使用的编程风格

  • 若是有机会从新设计大家的产品,你会怎么作

  • 如何搭建一个高可用系统

  • 如何启动时不需输入用户名与密码

  • 如何在基于Java的Web项目中实现文件上传和下载

  • 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

  • 如何实现负载均衡,有哪些算法能够实现

  • 如何设计一个购物车?想一想淘宝的购物车如何实现的

  • 如何设计一套高并发支付方案,架构如何设计

  • 如何设计创建和保持 100w 的长链接

  • 如何避免浏览器缓存。

  • 如何防止缓存雪崩

  • 若是AB两个系统互相依赖,如何解除依

  • 若是有人恶意建立非法链接,怎么解决

  • 若是有几十亿的白名单,天天白天须要高并发查询,晚上须要更新一次,如何设计这个功能

  • 若是系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)

  • 若是要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现

  • 若是让你实现一个并发安全的链表,你会怎么作

  • 应用服务器与WEB 服务器的区别?应用服务器怎么监控性能,各类方式的区别?你使用过的应用服务器优化技术有哪些

  • 大型网站在架构上应当考虑哪些问题

  • 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的

  • 最近看什么书,印象最深入的是什么

  • 描述下经常使用的重构技巧

  • 你使用什么版本管理工具?分支(Branch)与标签(Tag)之间的区别在哪里

  • 你有了解过存在哪些反模式(Anti-Patterns)吗

  • 你用过的网站前端优化的技术有哪些

  • 如何分析Thread dump

  • 你如何理解AOP中的链接点(Joinpoint)、切点(Pointcut)、加强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念

  • 你是如何处理内存泄露或者栈溢出问题的

  • 大家线上应用的 JVM 参数有哪些

  • 怎么提高系统的QPS和吞吐量

知识面

  • 解释什么是 MESI 协议(缓存一致性)

  • 谈谈 reactor 模型

  • Java 9 带来了怎样的新功能

  • Java 与 C++ 对比,C++ 或 Java 中的异常处理机制的简单原理和应用

  • 简单讲讲 Tomcat 结构,以及其类加载器流程

  • 虚拟内存是什么

  • 阐述下 SOLID 原则

  • 请简要讲一下你对测试驱动开发(TDD)的认识

  • CDN实现原理

  • Maven 和 ANT 有什么区别

  • UML中有哪些经常使用的图

  • Linux

  1. Linux 下 IO 模型有几种,各自的含义是什么。

  2. Linux 系统下你关注过哪些内核参数,说说你知道的

  3. Linux 下用一行命令查看文件的最后五行

  4. 平时用到哪些 Linux 命令

  5. 用一行命令输出正在运行的 Java 进程

  6. 使用什么命令来肯定是否有 Tomcat 实例运行在机器上

  • 什么是 N+1 难题

  • 什么是 paxos 算法

  • 什么是 restful,讲讲你理解的 restful

  • 什么是 zab 协议

  • 什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别

  • 什么是领域驱动开发(Domain Driven Development)

  • 介绍一下了解的 Java 领域的 Web Service 框架

  • Web Server、Web Container 与 Application Server 的区别是什么

  • 微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里

  • 描述 Cookie 和 Session 的做用,区别和各自的应用范围,Session工做原理

  • 你经常使用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具备哪些

  • 简述下数据库正则化(Normalizations)

  • KISS,DRY,YAGNI 等原则是什么含义

  • 分布式事务的原理,优缺点,如何使用分布式事务?

  • 布式集群下如何作到惟一序列号

  • 网络

  1. HTTPS 的加密方式是什么,讲讲整个加密解密流程

  2. HTTPS和HTTP的区别

  3. HTTP链接池实现原理

  4. HTTP集群方案

  5. Nginx、lighttpd、Apache三大主流 Web服务器的区别

  • 是否看过框架的一些代码

  • 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些

  • 数值提高是什么

  • 你能解释一下里氏替换原则吗

  • 你是如何测试一个应用的?知道哪些测试框架

  • 传输层常见编程协议有哪些?并说出各自的特色

编程题

计算加班费

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

  • 计算1000月薪,加班9小时的加班费

  • 计算2500月薪,加班11小时的加班费

  • 计算1000月薪,加班15小时的加班费

卖东西

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

  • 模拟一个进货。红苹果跟青苹果各进200个。

  • 模拟一个出售。红苹果跟青苹果各买出10个。每卖出一个苹果须要进行统计。

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

日期提取

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

线程

  • 8设计4个线程,其中两个线程每次对j增长1,另外两个线程对j每次减小1。写出程序。

  • 用Java写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出

  • wait-notify 写一段代码来解决生产者-消费者问题

数字

  • 判断101-200之间有多少个素数,并输出全部素数

  • 用最有效率的方法算出2乘以17等于多少

  • 有 1 亿个数字,其中有 2 个是重复的,快速找到它,时间和空间要最优

  • 2 亿个随机生成的无序整数,找出中间大小的值

  • 10 亿个数字里里面找最小的 10 个

  • 1到1亿的天然数,求全部数的拆分后的数字之和,如286 拆分红二、八、6,如1到11拆分后的数字之和 => 1 + … + 9 + 1 + 0 + 1 + 1

  • 一个数若是刚好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3.编程 找出1000之内的全部完数

  • 一个数组中全部的元素都出现了三次,只有一个元素出现了一次找到这个元素

  • 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共通过多少米?第10次反弹多高?

  • 求100-1000内质数的和

  • 求1到100的和的平均数

  • 求s=a+a+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 求出1到100的和

  • 算出1到40的质数,放进数组里

  1. 显示放组里的数

  2. 找出第[5]个数

  3. 删除第[9]个数,再显示删除后的第[9]个

  • 有 3n+1 个数字,其中 3n 个中是重复的,只有 1 个是不重复的,怎么找出来。

  • 有一组数1.1.2.3.5.8.13.21.34。写出程序随便输入一个数就能给出和前一组数字同规律的头5个数

  • 计算指定数字的阶乘

  • 开发 Fizz Buzz

  • 给定一个包含 N 个整数的数组,找出丢失的整数

  • 一个排好序的数组,找出两数之和为m的全部组合

  • 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

  • 打印出全部的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数自己。例如:153是一个 “水仙花数 “,由于153=1的三次方+5的三次方+3的三次方

  • 原地交换两个变量的值

  • 找出4字节整数的中位数

  • 找到整数的平方根

  • 实现斐波那契

网络

  • 用Java Socket编程,读服务器几个字符,再写入本地显示

反射

  • 反射机制提供了什么功能?

  • 反射是如何实现的

  • 哪里用到反射机制

  • 反射中 Class.forName 和 ClassLoader 区别

  • 反射建立类实例的三种方式是什么

  • 如何经过反射调用对象的方法

  • 如何经过反射获取和设置对象私有字段的值

  • 反射机制的优缺点

数据库

  • 写一段 JDBC 连Oracle的程序,并实现数据查询

算法

  • 50我的围坐一圈,当数到三或者三的倍数出圈,问剩下的人是谁,原来的位置是多少

  • 实现一个电梯模拟器用

  • 写一个冒泡排序

  • 写一个折半查找

  • 随机产生20个不能重复的字符并排序

  • 写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组

  • 写一段代码在遍历 ArrayList 时移除一个元素

  • 古典问题:有一对兔子,从出生后第3个月起每月都生一对兔子,小兔子长到第四个月后每月又生一对兔子,假如兔子都不死,问每月的兔子总数为多少

  • 约瑟芬环游戏

正则

  • 请编写一段匹配IP地址的正则表达式

  • 写出一个正则表达式来判断一个字符串是不是一个数字

字符串

  • 写一个方法,入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

  • 写一个程序找出全部字符串的组合,并检查它们是不是回文串

  • 写一个字符串反转函数,输入abcde转换成edcba代码

  • 小游戏,倒转句子中的单词

  • 将GB2312编码的字符串转换为ISO-8859-1编码的字符串

  • 请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式

  • 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 可是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”

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

  • 打印出一个字符串的全部排列

  • 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)

  • 在Web应用开发过程当中常常遇到输出某种编码的字符,如从 GBK 到 ISO8859-1等,如何输出一个某种编码的字符串

日期

  • 计算两个日期之间的差距

  •  

上一篇: 面试问题
下一篇: [ZZ] Maxwell 架构