Java面试题总结

总结面试相关试题,参考 https://gitee.com/crossoverJie/Java-Interview

Redis参考: 分布式Redis复习精讲 https://www.cnblogs.com/rjzheng/p/9096228.html

  1. Java基础
    1. Java的8个基本类型
    2. 拆箱、装箱
    3. 是否可以继承String类,为什么设置为final类
    4. switch可用哪些类型
    5. 抽象类和接口的不同
    6. static方法是否可以调用非static方法,为什么?
    7. 什么是值传递、引用传递。
    8. List的排序,实现Comparator 接口,需要注意什么 :自反性、传递性、对等性。
    9. 常见的异常类、如何实现自定义异常,项目中的异常处理。
    10. 常用的集合类 Set、List、Queue 接口,ArrayList、HashMap、HashSet、HashTable 内部实现,遍历HashMap方法。
    11.  
  2. Java多线程
    1. 线程、进程有什么区别

    2. 如何实现多线程、有什么区别、什么是守护线程、怎么设置线程为守护线程

    3. 2个线程,怎么让一个线程运行结束后,开始另一个线程

    4. 线程的几个状态,画出线程的状态流程图

    5. 线程池,怎么创建一个线程池,线程池的大小怎么设置(计算型、IO 型)

    6. 什么是线程安全、如何保证线程安全、synchronized关键字、同步方法和同步块的区别、什么是死锁、死锁发生的条件

    7. Lock锁、ReadWriteLock读写锁、Reentrant可重入锁、内部实现原理:Volitate state ,CAS,默认都是非公平锁。

    8. CurrentHashMap原理,分段加重入锁。

    9. 生产者、消费者模型,BlockingQueue阻塞队列,ArrayListBlockingQueue 和 LinkedBlockingQueue 区别。

    10. JUC包中的常用的Atomic类,IntegerAtomic、BooleanAtomic、ReferenceAtomic 

  3. JVM相关
    1. Java内存模型(堆区、方法区、虚拟机栈、本地方法栈、程序计数器)
    2. volitate关键字作用
    3. GC常用算法、垃圾回收器( Serial 、ParNew 、Parallel Scavenge 、Serial Old 、Parallel old 、CMS 、G1 ),常用纳哪些,cms 收集器的流程 (初始标记、并发标记、并发预清理、重新标记、并发清除、并发重置)
    4. 类的ClassLoader机制、双亲加载模型流程,为什么这么设计?有什么好处,什么场景破坏了双亲加载模型(jdk<1.2、JNDI服务、OSGI 动态加载)
    5. 类加载流程  加载(本地、网络) -> 链接 ( 验证、准备、解析) -> 初始化 -> 使用 -> 释放
    6.  
  4. DB相关
    1. 常用的函数
    2. 基本查询优化
    3. MySQL索引,最左匹配、BTree索引、Hash索引、覆盖索引
    4. 数据库的隔离级别
    5. MySQL事物提交流程
    6. MySQL的常用存储引擎、不同引擎的适用场景和区别。
    7. 分库分表分区、主从复制。
    8. Redis 常用的5中类型 String、列表List、集合Set、有序集合zset、字典Hash
    9. Redis 高性能原因:纯内存操作、单线程操作,避免了频繁的上下文切换、非阻塞I/O多路复用机制
    10. Redis和数据库的双写保持一致性
    11. Redis 如何防止雪崩(随机过期时间)、缓存穿透(value = null)、Redis如何实现分布式锁
    12. Redis的定期删除 + 惰性删除、缓存淘汰机制
    13. Redis的持久化 AOF(Append-only file)、RDB(Fork子线程进行数据写入) 两种方式区别,优缺点
    14. Redis主从复制,哨兵机制
  5. 设计模式
    1. 单例模式(7种实现方式)、双重检测
    2. 模板方法
    3. 代理模式 proxy
    4. Deletegate委派模式
    5. prototype 原型模式
    6. Factory 工厂模式
    7.  
  6. 源码相关
    1. spring 注入的几种方式
    2. spring bean 注入的几种方式、初始化流程、如何处理注入依赖。Resource处理
    3. springMVC 的流程,DispatcherServlet -> HandlerMapper -> Handler -> HandlerExecutionChain -> HandlerMethod
  7. 服务器相关
    1. Linux如何配置多Tomcat实例、Tomcat日志搜索
    2. Linux epoll模型
    3. Linux 查看磁盘使用情况 、查看资源使用情况 df -h、top -h
    4. 如何查看 ulimit -a 、修改文件句柄数 ulimit -n 2048 或者/etc/security/limits.conf
    5. Nginx如何配置负载均衡、动态代理、常用的负载均衡的策略
  8. 分布式相关
    1. SOA和微服务的区别、
    2. session共享、唯一ID
    3. RPC原理,手动实现RPC框架,服务注册、服务发现、服务监控
    4. kafka、RocketMQ如何保证消息发送、消费,顺序、重复,事物消息。
    5. zookeeper、elasticsearch、canal。
    6. 分布式事物 :TA两阶段提交 、TCC方案、基于消息的最终一致性。
  9. 数据结构与算法
    1. 冒泡算法
    2. 二分法
    3. 树、红黑树
  10. 业务场景设计和分析
    1. 设计100W PV的系统,CDN、LVS、Nginx、Redis、DB
    2. 设计秒杀系统,保证商品不被超卖
    3. 大文件排序

你可能感兴趣的:(软件工程)