一、数据结构与算法基础
- · 说一下几种常见的排序算法和分别的复杂度。
- · 用Java写一个冒泡排序算法
- · 描述一下链式存储结构。
- · 如何遍历一棵二叉树?
- · 倒排一个LinkedList。
- · 用Java写一个递归遍历目录下面的所有文件。
二、Java基础
- · 接口与抽象类的区别?
- · Java中的异常有哪几类?分别怎么使用?
- · 常用的集合类有哪些?比如List如何排序?
- · ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?
- · 内存溢出是怎么回事?请举一个例子?
- · ==和equals的区别?
- · hashCode方法的作用?
- · NIO是什么?适用于何种场景?
- · HashMap实现原理,如何保证HashMap的线程安全?
- · JVM内存结构,为什么需要GC?
- · NIO模型,select/epoll的区别,多路复用的原理
- · Java中一个字符占多少个字节,扩展再问int, long, double占多少字节
- · 创建一个类的实例都有哪些办法?
- · final/finally/finalize的区别?
- · Session/Cookie的区别?
- · String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?
- · Servlet的生命周期?
- · 如何用Java分配一段连续的1G的内存空间?需要注意些什么?
- · Java有自己的内存回收机制,但为什么还存在内存泄露的问题呢?
- · 什么是java序列化,如何实现java序列化?(写一个实例)?
- · String s = new String("abc");创建了几个 String Object?
三、JVM
- · JVM堆的基本结构。
- · JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?
- · JVM有哪些常用启动参数可以调整,描述几个?
- · 如何查看JVM的内存使用情况?
- · Java程序是否会内存溢出,内存泄露情况发生?举几个例子。
- · 你常用的JVM配置和调优参数都有哪些?分别什么作用?
- · JVM的内存结构?
- · 常用的GC策略,什么时候会触发YGC,什么时候触发FGC?
四、多线程/并发
- · 如何创建线程?如何保证线程安全?
- · 如何实现一个线程安全的数据结构
- · 如何避免死锁
- · Volatile关键字的作用?
- · HashMap在多线程环境下使用需要注意什么?为什么?
- · Java程序中启动一个线程是用run还是start?
- · 什么是守护线程?有什么用?
- · 什么是死锁?如何避免
- · 线程和进程的差别是什么?
- · Java里面的Threadlocal是怎样实现的?
- · ConcurrentHashMap的实现原理是?
- · sleep和wait区别
- · notify和notifyAll区别
- · volat