♦ JVM相关
• 1. 说一下Java的垃圾回收机制。
• 2. JVM的内存布局内存模型。
• 3. JVM 的 4 种引用和使用场景?
• 4. 说一下引用计数法与可达性分析算法。
• 5. 如何判断对象是不是垃圾?
• 6. 堆里面的分区和各自的特点。
• 7. Minor GC 与 Full GC 分别在什么时候发生?
• 8. 对象创建方法,对象的内存布局,对象的访问定位。
• 9. 说一下几种垃圾收集算法的原理和特点,应用的场景。怎么优化复制算法?
• 10. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
• 11. 什么是内存泄露和内存溢出。
• 12. 如何减少 gc 出现的次数(java 内存管理)。(重点!!!!)
• 13. 数组多大放在 JVM 老年代? 永久代对象如何 GC?如果想不被 GC 怎么办?如果想在 GC 中生存 1 次怎么办?
• 14. JVM 常见的启动参数。
• 15. 说下几种常用的内存调试工具: jps、 jmap、 jhat、 jstack、 jconsole,jstat。
• 16. 说下虚拟机的类加载机制。
• 17. 说下双亲委派模型。双亲委派模型中有哪些方法。用户如何自定义类加载器 。怎么打破双亲委托机制?
• 18. 描述 Java 类加载器的工作原理及其组织结构。
• 21. Java 编译的过程。
• 22. class 文件是什么类型文件(字节码文件的格式)?
• 23. 即时编译器的优化方法。
• 24. 静态分派与动态分派。
• 25. 编译阶段对程序做了哪些优化?
• 26. new 的对象如何不分配在堆而分配在栈上?
♦ Java中的集合类
• 1. ArrayList、LinkedList、Vector 的区别和实现原理。
• 2. HashMap、HashTable、LindedHashMap、ConcurrentHashMap、WeakHashMap 的区别和实现原理。
• 3. 讲一下集合中的 fail-fast 机制。
• 4. 介绍一下 Java 中的集合框架?
• 5. Collection 包结构与 Collections 的区别。
♦ 设计模式相关
• 1. 编写线程安全的单例模式。
• 2. 享元模式。
• 3. 原型模式。
♦ Java语言相关
• 1. 标识符的命名规则。
• 2. Instanceof 关键字的作用。
• 3. strictfp 关键字的作用。
• 4. 什么是不可变类?
• 5. Java 中的基本数据类型占据几个字节?
• 6. 运算符的优先级。
• 7. 强制类型转换时的规则有哪些。
• 8. 数组初始化时需要注意的问题。
• 9. 如何在 main()方法执行前输出“Hello world”?
• 10. Java 程序初始化的顺序(对象实例化的过程)。
• 11. 构造函数的特点。
• 12. 序列化与反序列化。
• 13. Switch 能否用 string 做参数?
• 14. equals 与==的区别。
• 15. Hashcode 的作用。
• 16. hashCode() 与 equals() 生成算法、方法怎么重写。
• 17. Object 有哪些公用方法?
• 18. String、StringBuffer 与 StringBuilder 的区别。
• 19. try catch finally,try 里有 return,finally 还执行么?如果会的话,什么时候执行,在 return 之前还是 return 之后?
• 20. 说下异常的原理。
• 21. Java 面向对象的三个特征与含义。
• 22. java 多态的实现原理(实现机制)。
• 23. Override(覆盖、重写)和 Overload(重载)的区别。
• 24. 接口与抽象类的区别。
• 25. 静态内部类和非静态内部类的区别。
• 26. static 的使用方式。
• 27. 反射的作用与原理。如何提高反射效率?
• 28. Java 和 C++/C 的区别,JAVA 的优点。
• 29. 同一个.java 文件中是否可以有多个 main()方法?
• 30. JAVA 中的类和成员的访问控制。
• 31. System.out.println()方法使用时需要注意的问题。
• 32. 继承和组合区别。
• 33. final finally finalize 的区别。
• 34. JDK1.7 和 1.8 的区别。
• 35. List<String>能否转为List<Object>?能否List<Object>list=newArrayList<String>()?List<String>list=new ArrayList<Object>()?原因?
• 36. 泛型的好处?
♦ Java基础专题
• 1. String 中的”+”操作是怎么回事?
• 2. StringBuilder 和 StringBuffer 底层是怎么实现的。
• 3. String 类中常用的方法。
• 4. 创建虚引用的时候,构造方法传入一个 ReferenceQueue,作用是什么。
• 5. 栈溢出的原因和解决方法。
• 6. HashMap的加载因子的作用。
• 7. HashMap中的 key 可以是任意对象吗?(Set 中元素的内容可以改变吗?)
• 8. 如果你定义一个类,包括学号,姓名,分数,如何把这个对象作为 key?
• 9. Java是如何实现跨平台的。
• 10. 什么是泛型,为什么要使用以及类型擦除。
• 11. Java中的 NIO,BIO 分别是什么。NIO 主要用来解决什么问题。
• 12. 面向对象的 6 个基本原则(设计模式的 6 个基本原则)。
• 13. JDK 源码中用到的设计模式。
• 14. 执行 Student s = new Student();在内存中做了哪些事情?
• 15. 你知道的开源软件有哪些?
• 16. String 型变量如何转成 int 型变量,反过来呢?
• 17. 怎么判断数组是 null 还是为空?
• 18. 怎样让一个线程放弃锁。
• 19. IO 里面常见的类。
• 20. xml 解析方式。
♦ 多线程和并发专题
• 1. 什么是缓存一致性问题?如何解决呢?
• 2. 简述 volatile 关键字(或 volatile 的内存语义或 volatile 的2个特性)
• 3. 简述 JAVA 的内存模型。
• 4. Java 中的同步容器类和缺陷
• 5. 为什么说 ConcurrentHashMap 是弱一致性的?以及为何多个线程并发修改 ConcurrentHashMap 时不会报 ConcurrentModificationException?
• 6. CopyOnWriteArrayList 的实现原理。
• 7. Java 中堆和栈有什么不同?
• 8. Java 中的活锁,死锁,饥饿有什么区别?
♦ 线程池的问题
• 1. 什么是线程池?线程池的工作原理?
• 2. 使用线程池的好处?
• 3. 线程池的注意事项。
• 4. 简单线程池的设计。
♦ 并发的问题
• 1. 网站的高并发,大流量访问怎么解决?
• 2. 可扩展到任何高并发网站要考虑的并发读写问题
♦ 并发包的问题
• 1. 并发包(Concurrent 包)中含有的类。
♦ 阻塞队列相关的问题
• 1. 阻塞队列
• 2. 生产者/消费者问题的多种实现方式
• 3. 编程实现一个最大元素为 100 的阻塞队列。
• 4. 设计一个双缓冲阻塞队列,写代码。
• 5. Java 中的队列都有哪些,有什么区别。
♦ 多线程相关的问题
• 1. 如果不用锁机制如何实现共享数据访问。
• 2. 说一下 java 中的多线程。
• 3. 实现线程之间的通信?
• 4. 如何确保线程安全?
• 5. 多线程的优点和缺点?
• 6. 写出 3 条你遵循的多线程最佳实践。
• 7. 多线程的性能一定就优于单线程吗?
• 8. 多线程中锁的种类。
• 9. 锁优化
• 10. wait()和 sleep()的区别。
• 11. Java 中 interrupted() 和 isInterrupted()方法的区别?
• 12. Java 创建线程之后,直接调用 start()方法和 run()的区别 ?
• 13. 什么是线程的上下文切换?
• 14. 怎么检测一个线程是否拥有锁?
• 15. 用户线程和守护线程有什么区别?
• 16. 什么是线程调度器?
• 17. 线程的状态。
• 18. 有三个线程 T1,T2,T3,怎么确保它们按顺序执行?
• 19. 在一个主线程中,要求有大量子线程执行完之后,主线程才执行完成。多种方式,考虑效率。
• 20. java 程序如何停止一个线程?
♦ 其他问题
• 1. ThreadLocal 的原理
• 2. Collections.synchronizedXX 方法的原理。
• 3. 如何在两个线程间共享数据?
♦ 数据库专题
• 1. 优化查询的方法?
• 2. 如果有一个特别大的访问量到数据库上,怎么做优化?
• 3. 数据库分表, 分区, 分库
♦ sql注入的问题
• 1. SQL语句应该考虑哪些安全问题?
• 2. 什么叫SQL注入,如何防止?请举例说明。
♦ 连接问题
• 1. 内连接与外链接的区别?
• 2. inner join 和 left join 的性能比较。
• 3. 联合查询的索引使用
• 4. 数据库中两个表求交集、并集、差集。
♦ 存储过程相关问题
• 1. 存储过程的概念以及优缺点是什么。
♦ 范式问题
• 1. 数据库的三级范式?
♦ 事务问题
• 1. 数据库事务正确执行的四个基本要素(事务的四个属性)。
• 2. 并发事务带来的问题。
• 3. 并发控制的方式(如何解决并发问题)
• 4. 数据库事物的隔离级别介绍、举例说明。
• 5. MySQL事务控制语句
• 6. 数据库怎么保证数据的一致性。
♦ 锁的问题
• 1. 如何并发访问数据库
• 2. 说下数据库的锁机制,数据库中都有哪些锁。
• 3. MySQL锁的粒度(即锁的级别)
• 4. 乐观锁和悲观锁的概念,实现方式和使用场景。
♦ 命令问题
• 1. truncate 与 delete 的区别是什么?
• 2. SQL的授权语句和收回权限语句?
• 3. 怎么新加一行记录,怎么添加一个列字段,修改列?
• 4. Select Count(*)和Select Count(数字)以及Select Count(column)区别。
• 5. EXISTS关键字的使用方法?
• 6. 例题
• 7. 判断表的字段值是否为空
♦ 索引问题
• 1. 索引的优缺点
• 2. 索引有哪些?
• 3. 数据库索引的原理(实现)
• 4. MySQL的B+树索引的优点?为什么不用二叉树?B-树和B+树为什么比红黑树更合适?
• 5. 建索引的几大原则
♦ 存储引擎问题
• 1. MySQL中Mylsam与InnoDB的区别,至少5点。
• 2. 例题
♦ 其他问题
• 1. 如果在数据库上进行误操作该怎么处理。
• 2. 数据库在进行水平分表之后,SQL分页查询该怎么进行?分表之后想让一个id多个表示自增的,效率实现。数据库中的分页查询怎么写?
• 3. 关系型数据库和非关系型数据库的区别
• 4. 数据库连接池的原理?连接池使用什么数据结构实现?实现连接池?
• 5. 列级约束与表级约束的区别?
• 6. 关系五种基本运算
♦ 操作系统专题
• 1. 进程间的通信方式(IPC)?进程调度方法
• 2. 线程间的通信方式?
• 3. 线程同步的机制
• 4. 操作系统由哪几部分组成?
• 5. 用户态和系统态是什么时候进行切换的?64位操作系统和32位操作系统有什么区别和优点
• 6. 选择一个你熟悉的磁盘臂调度算法进行简单描述
• 7. 进程和线程的区别?
• 8. 操作系统的换页方法
• 9. 哲学家进餐问题的无死锁算法
• 10. 操作系统的内存管理
♦ linux系统常用命令
• 1. Linux常用命令1
• 2. Linux常用命令2(远程文件下载+查看文件内容)
• 3. Linux常用命令3(压缩和解压缩总结)
• 4. Linux常用命令4(查找命令)
• 5. linux常用命令5(查看系统信息)
• 6. linux下如何检查服务器异常
• 7. linux系统任务的后台运行和关闭、查看后台任务等
♦ TCP/IP相关的问题
• 1. OSI 与 TCP/IP 各层的结构与功能,都有哪些协议,协议所占端口号。
• 2. IP 地址的分类。
• 3. 画出三次握手和四次挥手的图(状态转移图)。TCP 为什么三次握手,四次挥手?
• 4. 为什么收到 Server 端的确认之后,Client 还需要进行第三次“握手”呢?
• 5. 为什么要 4 次挥手?
• 6. 建立连接的第二个 syn 作用是啥? time_wait 状态产生的原因?
• 7. 如果网络连接中出现大量 TIME_WAIT 状态所带来的危害?
• 8. 如何消除大量 TCP 短连接引发的 TIME_WAIT?
• 9. TIME_WAIT 的时间? 当关闭连接时最后一个 ACK 丢失怎么办?
• 10. TCP如何保证可靠传输?
• 11. TCP 建立连接之后怎么保持连接(检测连接断没断)?
• 12. TCP 三次握手有哪些漏洞?
• 13. TCP 存在的缺陷有哪些?
• 14. 三次握手与 accept()函数的关系?
• 15. 在三次握手和四次挥手协议中,客户端和服务器端各用到什么函数(这里涉及到底层的 socket 知识)。
• 16. listen 的真正目的?
• 17. 如果客户端发起握手请求,服务端无法立刻建立连接应该回应什么?
• 18. TCP 与 UDP 的区别(或各自的优缺点),以及各自的用途和使用领域。
• 19. 为什么 TCP 比 UDP 安全,但是还有很多用 UDP?
• 20. UDP 为何快?
• 21. TCP 如何实现流量控制和拥塞控制。tcp 是怎么做错误处理的?
• 22. TCP 滑动窗口协议,窗口过大或过小有什么影响?
• 23. 在流量控制的过程中,必须考虑传输效率。
• 24. 说下 TCP 的黏包 ?
• 25. TCP 头部有哪些字段?
• 26. UDP 的首部多长,具体包含哪些字段?
♦ HTTP协议相关的问题
• 1. Http 的请求报文结构和响应报文结构。
• 2. 常见 HTTP 首部字段。
• 3. Http 状态码含义。
• 4. http 中有关缓存的首部字段有哪些?http 的浏览器缓存机制。
• 5. Http1.1 和 Http1.0 的区别。(HTTP1.1 版本的 4 个新特性)
• 6. 常用的 HTTP 方法有哪些?
• 7. http 的请求方式 get 和 post 的区别。
• 8. 为什么 HTTP 是无状态的?如何保持状态(会话跟踪技术、状态管理)?
• 9. Http 的短连接和长连接的原理。
• 10. HTTP 的特点。
• 11. http 的安全问题。
• 12. Https 的作用。
• 13. 浏览器和服务器在基于 https 进行请求链接到数据传输过程中,用到了哪些技术?
• 14. 讲下 Http 协议。
• 15. http 和 socket 的区别,两个协议哪个更高效一点。
• 16. HTTP 与 HTTPS 的区别。
♦ 安全相关的问题
• 1. 攻击网站的方法和原理。
• 2. 怎么确保数据传输过程中的安全性?
♦ Socket编程
• 1. socket 编程的基本步骤(TCP/UDP)。
• 2. Socket 通信模型。
• 3. Socket I/O模型。
♦ 其他相关的问题
• 1. Session 原理。
• 2. Cookie 的机制。
• 3. Cookie 被浏览器禁用怎么办?
• 4. Cookie 和 Session 原理解析。
• 5. Cookie 与 Session 的区别。
• 6. session 和 cache 的区别。
• 7. 如果有几千个 session,怎么提高效率 。当 session 访问量比较大的时候,怎么解决?
• 8. 在浏览器中输入 URL 后,执行的全部过程。会用到哪些协议?(一次完整的 http 请求过程)。
• 9. 路由器与交换机的区别是什么?
♦ 计算机网络专题(补1)
• 1. NAT 地址转换。
• 2. HTTP 断点续传的原理。
• 3. 有几种会话跟踪技术(补充)?
• 4. TCP 接收方如何保证按序接收。
• 5. 数据传输:服务器与服务器之间传输文件夹下的文件,一个文件夹下有 10 个文件,另一个文件夹下有 100 个文件,两个文件夹大小相等,问,哪个传输更快?