Java工程师面试知识点总结

Java

  1. 面向对象的三大特征:举例说明封装、继承、多态。多态的实现原理?
  2. object类源码分析:比如Hashcode相等,两个类一定相等吗?equals呢?相反呢?
  3. 介绍一下集合框架?泛型了解吗?
  4. map相关原理、源码,比如:hashmap、hashtable、treemap?线程安全的concurrenthashtable、concurrenthashmap?1.7,1.8中的进化?
  5. thread底层方法原理?线程状态等?
  6. 线程池框架,原理?解决啥问题?
  7. volatile、synchronized原理?synchronized作用在代码块、方法区别?
  8. ThreadLocal是什么?底层如何实现?写一个例子。
  9. J.U.C下源码分析。比如:原子类、锁,并发集合。
  10. AQS、CAS了解吗?手写阻塞队列
  11. synchronized,ReentrantLock区别?
  12. 设计模式。比如:手写各种单例模式,解释线程安全的单例模式原理?
  13. Java反射了解吗?底层实现原理呢?哪些框架或者你的项目中用到了反射?解决什么问题?

JVM

  1. Jvm内存区域划分?1.7,1.8方法区的进化
  2. 对象的创建?内存布局?访问定位?如何判断是否死亡?分配与回收策略?
  3. 垃圾收集算法?垃圾收集器?用过什么垃圾回收器?
  4. Minor gc,full gc了解吗?线上发生频繁额full gc如何处理?cpu使用率过高怎么办?如何定位问题?如何解决?说一下解决思路和处理方法。
  5. 知道字节码吗?字节码都有哪些?Integer x=5, int y=5,比较x==y都经过哪些步骤?
  6. 讲讲类加载过程?都有哪些类加载器?分别加载哪些文件?手写类加载demo。通过例子说明jvm设计破坏了双亲委派模型,如何解决的?
  7. 知道osgi吗?如何实现的?
  8. Jvm优化了解吗?使用什么方法?达到什么效果?
  9. class.forName(“java.lang.String”)和String.class.getClassLoader.loadClass(“java.lang.String”)什么区别?
  10. 内存模型了解吗?目的?如何设计的?happen-before了解吗?解决什么问题?
  11. Java线程和操作系统线程区别?java线程如何实现的?线程状态转化说一下?
  12. 什么是线程安全?jvm线程安全实现方法?
  13. Jvm锁了解吗?不同版本对锁的优化呢?

Spring

  1. IOC,AOP底层原理?
  2. BeanFactory和FactoryBean的区别?
  3. bean的加载机制?
  4. Spring用到的设计模式?举例
  5. Spring事务的特性?隔离规则,传播规则,回滚规则,超时,只读说一下?
  6. Cglib知道吗?和jdk动态代理区别?动态代理和静态代理的区别呢?手写jdk动态代理。
  7. Spring MVC流程?

数据库

  1. Mysql体系结构了解吗?了解哪些存储引擎?都有啥区别?
  2. 使用索引有哪些原则?索引底层实现原理知道吗?
  3. 关系型数据库设计规范?如何优化一条查询sql?
  4. innodb锁的类型?有哪些锁的算法?解决什么问题?
  5. MVCC了解吗?实现原理呢?
  6. Innodb有哪些事务?事务的四大特性了解吗?底层实现原理呢?事务隔离级别了解吗?默认的隔离级别是什么?这个隔离级别导致幻读,没有影响吗?为什么不会导致幻读?原理了解吗?
  7. 分库分表了解吗?为什么要分库分表?有哪些分库分表方案?如何设计可以动态扩容缩容的分库分表方案?
  8. 用过哪些分库分表中间件?有啥有点和缺点?讲一下你了解的分库分表中间件底层实现原理吧?
  9. 我现在有一个未分库分表的系统,以后系统需要分库分表,如何设计?那如何让未分库分表的系统动态切换到分库分表的系统上呢?
  10. 如何解决分库分表主键问题?有什么实现方案?
  11. 数据库集群了解吗?有没有搭建过?
  12. Mybatis一级缓存,二级缓存了解吗?

分布式系统架构设计

  1. 幂等了解吗?有哪些解决方案?你们如何实现的?
  2. 分布式事务知道吗?你们怎么解决的?TCC?如果出现网络问题咋办?
  3. 分布式寻址方式都有哪些算法?知道一致性hash吗?手写一下java实现代码?你若userId取模分片,那我要查一段连续时间里的数据怎么办?
  4. 分布式锁了解吗?有哪些实现方案?都有啥区别?你们怎么用的呢?手写redis分布式锁demo。
  5. 为什么要进行系统拆分?
  6. 如何设计一个高并发高可用系统?
  7. 系统安全性,敏感数据如何存储,比如身份证,密码?
  8. 如何限流?工程中怎么做的,说一下具体实现?
  9. 缓存如何使用?缓存使用不当会造成什么后果?
  10. 熔断了解吗?如何熔断?熔断框架有哪些?具体实现原理了解吗?
  11. 如何降级?如何进行系统拆分?如何数据库拆分?
  12. 负载均衡了解吗?如何实现的?

分布式缓存

  1. 用过哪些缓存数据库?有啥区别?为什么单线程的redis比多线程的memcheched效率高呢?
  2. Redis用到哪些场景了?
  3. Redis有哪些数据类型?
  4. Redis底层数据结构了解吗?说下map底层设计原理吧?
  5. Redis的消息队列了解吗?和kafka的有啥区别呢?
  6. Redis的主从复制怎么实现的?集群模式如何实现的呢?redis key如何寻址呢?
  7. 知道redis的持久化吗?有啥优缺点?具体底层实现呢?
  8. Redis过期策略有哪些?LRU?写一下java版本的代码吧。

分布式服务框架

  1. 了解哪些rpc框架?区别呢?
  2. 说一下dubbo的实现过程吧?注册中心挂了可以继续通信吗?
  3. Dubbo直出哪些序列化协议?hessian呢?说一下hessian的数据结构?PB知道吗?为啥PB效率最高?
  4. Dubbo复制均衡策略和高可用策略都有哪些?动态代理策略呢?
  5. Zk了解吗?可以干吗?原理知道吗?Paxos算法了解吗?
  6. 了解netty吗?netty可以干嘛?NIO,BIO,AIO了解吗?区别呢?Rector模型了解吗?

分布式消息队列

  1. 了解哪些消息队列?区别呢?消息队列有啥优缺点?
  2. 如何保证消息队列的高可用?如何保证消息不被重复消费?
  3. 如果让你写一个消息队列,架构如何设计?说下你的思路

分布式搜索引擎

  1. Es的工作过程?如何实现分布式的?
  2. Es再数据量很大的情况下(数十亿级别)如何提高查询效率?
  3. Es和mongdb区别?使用场景呢?

网络

  1. IO模型?
  2. 说一下TCP/IP四层?
  3. TCP三次握手,四次分手的工作流程?画一下流程图?为什么不是四次,五次?
  4. http报文格式?http状态码了解吗?知道哪些?http 1.0,1.1,2.0有啥区别?
  5. http工作流程?https的工作流程?
  6. cookie和session了解吗?原理?
  7. 加密算法?对称加密?非对称加密?数字签名?
  8. oauth认证原理?

系统安全性

  1. SQL注入
  2. 跨站脚本攻击(XSS)
  3. 跨站请求伪造(CSRF)
  4. XML外部实体注入攻击
  5. 中间人攻击
  6. 文件上传漏洞
  7. 反序列化漏洞
  8. 敏感信息泄露

算法和数据结构

  1. 链表的基本操作
  2. 树:二叉树、红黑树
  3. 查找,排序,kmp,等
  4. 剑指offer练习
  5. 海量数据处理实现思路。比如:怎么在海量数据中找出重复次数最多的一个

操作系统

  1. linux基本命令操作

其他技术栈

  1. tomcat
  2. mybatis
  3. drools
  4. esper
  5. thrift
  6. netty