需要掌握的面试点

Java基础

  1. 八种基本数据类型的大小,以及他们的封装类
  2. 引用数据类型
  3. switch能否用String做参数
  4. equals 与 == 的区别
  5. 自动装箱、常量池
  6. Object有哪些公开方法
  7. Java的四种引用,用到的场景
  8. HashCode的作用
  9. HashMap的hashcode的作用
  10. 为什么重载hashcode方法
  11. ArrayList、LinkedList、Vector的区别
  12. String、StringBuffer、StringBuilder的区别
  13. Map、Set、List、Queue、Stack的特点和用法
  14. HashMap和HashTable的区别
  15. JDK7和JDK8中HashMap的实现区别
  16. HashMap和ConcurrentHashMap的区别,HashMap的底层源码
  17. ConcurrentHashMap能完全替代HashTable吗
  18. 为什么HashMap是线程不安全的
  19. 如何线程安全的使用HashMap
  20. 多并发情况下HashMap是否能产生死循环
  21. TreeMap、HashMap、LinkedHashMap的区别
  22. Collection包结构,与Collections的区别
  23. try、catch、finally,try中有rerurn,finally还执行吗
  24. Excption与Error包结构,OOM你遇到过哪些情况,SOF你遇到过哪些情况
  25. Java(OOP)面向对象的三个特征与含义
  26. Override和Overload的含义与区别
  27. 接口和抽象类的区别
  28. static ?class 与non?static?class的区别
  29. Java多态的实现原理
  30. foreach与正常for循环效率对比
  31. Java的IO与NIO
  32. Java反射的作用与原理
  33. 泛型常用特点
  34. 解析XML的几种方式的原理与特点:DOM、SAX
  35. Java7与8、9、10的新特性
  36. 设计模式:单例、工厂、适配器、责任链、观察者等
  37. JNI的使用
  38. AOP是什么
  39. OOP是什么
  40. AOP与OOP的区别

多线程

  1. 什么是线程
  2. 什么是线程安全和线程不安全
  3. 什么是自旋锁
  4. 什么是Java内存模型
  5. 什么是CAS
  6. 什么是乐观锁和悲观锁
  7. 什么是AQS
  8. 什么是原子操作?在Java Concurrency API中有哪些原子类
  9. 什么是Executors框架
  10. 什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型
  11. 什么是Callable和Future
  12. 什么是FutureTask
  13. 什么是同步容器和并发容器的实现
  14. 什么是多线程?优缺点
  15. 什么是多线程的上下文切换
  16. ThreadLocal的设计理念与作用
  17. ThreadPool(线程池)用法与优势
  18. Concurrent包里的其他东西:ArrayBlockQueue、CountDownLatch等等
  19. synchronized和ReentrantLock的区别
  20. Semaphore有什么作用
  21. Java Concurrency API中的Lock接口是什么?对比同步它有什么优势
  22. HashTable的size()方法中明明只有一条语句“return count”,为什么还要做同步
  23. ConcurrentHashMap的并发度是什么
  24. ReentrantReadWriteLock的读写锁的使用
  25. CyclicBarrier和CountDownLatch的用法及区别
  26. LockSupport工具
  27. Condition接口及其实现原理
  28. Fork/Join框架的理解
  29. wait()和sleep()的区别
  30. 线程的五个状态(创建、就绪、执行、阻塞、死亡)
  31. start()和run()的区别
  32. Runnable接口和Callable接口的区别
  33. volatile关键字的作用
  34. Java中如何获取到线程dump文件
  35. 线程和进程有什么区别
  36. 线程实现的方式有几种(四种)
  37. 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池
  38. 如果你提交任务时,线程池队列已满,这时会发生什么
  39. 锁的等级:方法锁、对象锁、类锁
  40. 如果同步块内的线程抛出异常会发生什么
  41. 并发编程和并行编程有什么区别
  42. 如何保证多线程下i++结果正确
  43. 一个线程如果出现了运行时异常会怎样
  44. 如何在两个线程之间共享数据
  45. 生产者消费者模型的作用是什么
  46. 怎么唤醒一个阻塞的线程
  47. Java中用到的线程调度算法是什么
  48. 单例模式的线程安全性?有几种实现方式
  49. 线程类的构造方法、静态块是被哪个线程调用的
  50. 同步方法和同步块,哪个是更好的选择
  51. 如何检测死锁?怎么预防死锁

设计模式

  1. 装饰器模式
  2. 工厂模式
  3. 单例模式
  4. 观察者模式
  5. 动态代理模式
  6. 适配器模式
  7. 模板模式
  8. 策略模式

JVM

  1. 内存模型以及分区,需要详细到每个区放什么
  2. 对象创建方法、对象的内存分配、对象的访问定位
  3. GC的两种判定方法:引用计数和引用链
  4. GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方。如果让你优化收集方法,有什么思路
  5. GC收集器有哪些?CMS收集器与G1收集器的特点
  6. Minor GC与Full GC分别在什么时候发生
  7. 几种常用的内存调试工具:jmap、jstack、jconsole
  8. 类加载的五个过程:加载、验证、准备、解析、初始化
  9. 双亲委派模型:BootstrapClassLoader、ExtensionClassLoader、ApplicationClassLoader
  10. 分派:静态分派与动态分派
  11. 内存模型和GC算法重点

数据结构与算法

  1. 链表与数组
  2. 队列和栈,出栈与入栈
  3. 链表的删除、插入、反向
  4. 字符串操作
  5. Hash表的hash函数、冲突解决方法有哪些
  6. 各种排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定、在什么情况下使用性能最好与最坏
  7. 快排的partition函数与归并的Merge函数
  8. 对冒泡与快排的改进
  9. 二分查找与变种二分查找
  10. 二叉树、B+树、AVL树、红黑树、哈夫曼树
  11. 二叉树的前中后遍历:递归与非递归,层序遍历算法、
  12. 图的BFS和DFS算法、最小生成树prim算法与最短路径Dijkstra算法
  13. KMP算法
  14. 排列组合问题
  15. 动态规划、贪心算法、分治算法
  16. 大数据处理:海量数据去重、海量数据找出最大最小前n个数等

数据库

  1. 事务四大特性(ACID)原子性、一致性、隔离性、持久性
  2. 数据库隔离级别,每个级别会引发什么问题,mysql默认是那个级别
  3. innodb和myisam存储引擎的区别
  4. mysql的两种存储引用区别(事务、锁级别等),各自的使用场景
  5. 查询语句不同元素(where、jion、limit、group by、having等)执行先后顺序
  6. 数据库的优化(从sql语句优化和索引两个部分回答)
  7. 索引有B+索引和hash索引,各自的区别
  8. B+索引数据结构和B树的区别
  9. 索引的分类(主键索引、唯一索引)、最左前缀原则,哪些情况索引会失效
  10. 聚集索引个非聚集索引的区别
  11. 有哪些锁(乐观锁和悲观锁),select时怎么加排它锁
  12. 关系型数据库和非关系型数据库的区别
  13. 数据库三范式,根据某个场景设计数据表(ER图)
  14. 数据库的读写分离、主从复制
  15. 使用explain优化sql和索引
  16. long_query怎么解决
  17. 内连接、外连接、交叉连接、笛卡儿积等
  18. 死锁判定原理和具体场景,死锁怎么解决
  19. varchar和char使用场景
  20. mysql并发情况下怎么解决(通过事务、隔离级别、锁)
  21. 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)

Spring

  1. IOC和DI是什么
  2. Spring IOC的理解,其初始化过程
  3. BeanFactory和FactoryBean的区别
  4. BeanFactory和ApplicationContext的区别
  5. ApplicationContext上下文的生命周期
  6. Spring Bean的生命周期
  7. Spring AOP的实现原理
  8. Spring是如何管理事务的,事务管理机制
  9. Spring中用到了哪些设计模式
  10. Spring的不同事务传播行为有哪些,干什么用的
  11. Spring MVC的工作原理
  12. Spring如何解决循环依赖
  13. Spring如何保证Controller并发的安全

Netty

  1. BIO、NIO和AIO
  2. Netty的各大组件
  3. Netty的线程模型
  4. TCP粘包/拆包的原因及解决办法
  5. 了解有哪几种序列化协议?包括使用场景和如何去选择
  6. Netty的零拷贝实现
  7. Netty的高性能表现在哪些方面

缓存

  1. Redis用过哪些数据结构,底层是如何实现的
  2. Redis缓存穿透、缓存雪崩
  3. 如何使用Redis来实现分布式锁
  4. Redis的并发竞争问题如何解决
  5. Redis持久化的几种方式,优缺点是什么,怎么实现
  6. Redis的缓存失效策略
  7. Redis集群、高可用、原理
  8. Redis缓存分片
  9. Redis的数据淘汰策略

技术框架

  1. 看过哪些开源框架的源码
  2. 为什么要用Redis,Redis有哪些优缺点?Redis如何扩容
  3. Netty是如何使用线程池的?为什么这么使用
  4. 为什么要使用Spring,Spring 的优缺点有哪些
  5. Spring的IOC容器初始化流程
  6. Spring的IOC容器实现原理,为什么可以通过byName和byType找到Bean
  7. Spring AOP的实现原理
  8. 消息中间件是如何实现的,技术难点有哪些

技术深度

  1. 事务的实现原理
  2. 有没有看过JDK源码,看过那些,怎么实现的
  3. HTTP协议
  4. TCP协议
  5. 一致性Hash算法
  6. JVM如何加载字节码文件
  7. 类加载如何卸载字节码
  8. IO和NIO的区别,NIO优点
  9. Java线程池的实现原理,keepAliveTime等参数的作用
  10. HTTP连接池实现原理
  11. 数据库连接池实现原理
  12. 数据库的实现原理

分布式

  1. 什么是CAP定理
  2. CAP定理和BASE理论
  3. CAP理论
  4. CAP理论和最终一致性
  5. 最终一致性实现方式
  6. 一致性Hash
  7. 分布式事务,两阶段提交
  8. 如何实现分布式锁
  9. 如和实现分布式Session
  10. 如何保证消息一致性
  11. 负载均衡
  12. 正向代理(客户端代理)和反向代理(服务器端代理)
  13. CDN实现原理
  14. 怎么提升系统的QPS和吞吐量
  15. Dubbo的底层实现原理和机制
  16. 描述一个服务从发布到被消费的详细过程
  17. 分布式系统怎么做服务治理
  18. 接口的幂等性的概念
  19. 消息中间件如何解决消息丢失问题
  20. Dubbo的服务请求失败怎么处理
  21. 重连机制会不会造成错误
  22. 对分布式事务的理解
  23. 如何实现负载均衡,有哪些算法可以实现
  24. Zookeeper的用途,选举的原理是什么
  25. 数据的垂直拆分和水平拆分
  26. zookeeper原理和适用场景
  27. zookeeper watch机制
  28. redis/zk节点宕机如何处理
  29. 分布式集群下如何做到唯一序列号
  30. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全吗
  31. MQ系统的数据如何保证不丢失
  32. 列举你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题

系统架构

  1. 如何搭建一个高可用系统
  2. 哪些设计模式可以增加系统的可扩展性
  3. 什么情况下用接口,什么情况下用消息
  4. 如果AB两个系统相互依赖,如何解决依赖
  5. 什么场景应该拆分系统,什么场景应该合并系统
  6. 有没有处理过线上问题,出现内存泄漏,CPU利用率过高,应用无响应如何处理的
  7. 开发中遇到的技术问题,如何解决
  8. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能
  9. 新浪微博如何实现把微博推给订阅者
  10. Google是如何在一秒内把搜索结果返回给用户的
  11. 12306网站订票系统如何实现,如何保证票不会被超卖
  12. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品

Linux

  1. 硬链接和软连接的区别
  2. kill用法,某个进程杀不掉的原因(进入内核态,忽略kill信号)
  3. linux用过的命令
  4. 系统管理命令(如查看内存使用,网络情况)
  5. 管道的使用
  6. grep的使用,一定要掌握,每次都会问在文件中查找
  7. shell脚本
  8. find命令
  9. awk使用

TCP/IP

  1. OSI与TCP/IP各层的结构与功能,都有哪些协议
  2. TCP与UDP的区别
  3. TCP报文结构
  4. TCP的三次握手与四次挥手,各个状态名称与含义,TIMEWAIT的作用
  5. TCP拥塞控制
  6. TCP滑动窗口与回退N步协议
  7. HTTP的报文结构
  8. HTTP状态码含义
  9. HTTP的request的几种类型
  10. HTTP1.1和HTTP1.0的区别
  11. HTTP怎么处理长链接
  12. Cookie与Session的作用与原理
  13. 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP
  14. Ping的整个过程,ICMP报文
  15. C/S模式下使用socket通信,几个关键函数
  16. IP地址分类
  17. 路由器与交换机的区别

猜你喜欢

转载自blog.csdn.net/weixin_42294335/article/details/81195317