Java知识点总结

1. Java基础

(1) 常用集合的源码实现,重点Map

     a. HashMapHashTableConcurrentHashMap以及LinkedHashMap对比(实现LRU);

     b. Map的存储实现红黑树及对应JDK版本;

     c. ConcurrentModificationExceptionfast-fail机制);

(2) 多线程,重点是线程池;

     a. 实现Runnable和继承Thread是常识;

     b. Executors原理,参数意义,拒绝策略;

     c. wait/notify使用;

     d. java并发包常用类(CountDownLatchCyclicBarrierCondition);

(3) volatilesynchronizedReetrantLock实现;

     a. JMM内存模型和Happens-before原则;

     b. synchronized原理(https://blog.csdn.net/javazejian/article/details/72828483);

(4) JVMJVM内存布局,GC,类加载;

     a. 周志明的《深入理解java虚拟机》相关章节;

(5) NIO,单个线程为什么可以监听多个数据通道?

(6) 设计模式;

     a. 单例模式多种实现方案(现场写);

     b. 观察着模式的类图(现场画);

     c. Spring中的九大设计模式(应用场景)

     d. 代理模式中JDK动态代理和CGlib代理;

2. MySQL

(1) explainsql执行计划;

     a. sql执行计划及各字段代表含义;

     b. mysql查询缓存相关参数(query_cache_sizequery_cache_limitread_buffer_size);

(2) 事务;

     a. ACID,隔离级别;

     b. 事务实现,redoundo

     c. MVCC原理;

(3) 索引;

     a. 索引分类,优缺点;

     b. 索引原理(B-treeB+tree);

     c. 索引失效情况;

(4) 主从备份,主要是binlog日志;

3. 中间件

(1) Tomcat/Jetty

    a. TomcatContainer/Connector/Engine/Host/Context关系;

    b. JettyServer/Connector/Handler关系;

    c. 两者对比,尤其是理解TomcatBIO模型和JettyNIO模型;

(2) Netty,依然是理解NIO

(3) Redis,内存模型,淘汰策略,I/O模型,主从备份;

    a. 存储数据类型,使用场景,常用API

    b. 持久化机制(RDBAOF);

    c. 单线程架构(重点理解I/O多路复用);

    d. 集群部署,哨兵机制;

(4) Dubbo

(5) 消息队列,上面Redis掌握就好,此处如果知道RabbitMQRocketMQ更好;

4. 算法(面试最重要的环节之一)

(1) 数据结构常见算法(链表,栈基本操作,各种排序查找);

(2) 剑指offer

(3) 动态规划,背包问题;

(4) 大的数据量排序查找问题(重视位排序和Bloom Filter使用场景);

5. 项目(面试最重要的环节之二)

(1) SSM及其原理,重点是IOCAOP,事务(SSH/Spring boot/Spring cloud四个至少掌握一个);

(2) 安全问题(XSSCSRFSQL注入);

(3) 所用框架事务;

(4) 跨域问题解决方案;

(5) json相关的操作;

(6) 针对自己做的项目,一定要总结出里面的重难点及创新点,如渠道支撑项目的相关知识点;

     a. Activiti插件的使用,流程的半自动化配置,复杂流程的处理,任意环节的选取审核;

     b. HibernateFastJson搭配,去除循环依赖;

     c. 码号管理中多种类型号码的正则匹配(设计思想的转变);

     d. 单点登录;

     e. webservice

     f. 发邮件/发短信;

     h. 码号管理中状态机的使用;

     i.  Redis的使用

其实,实验室项目里面类似的知识点很多,只要大家能深入去研究下,面试时,都可以作为一点展开说明。

6. 大数据(现在大公司尤其重视大数据知识,高并发场景,要多看看新技术)

(1) 大数据存储框架(HDFSHiveHBase);

(2) 大数据处理框架(MapReduceSparkStormFlink);

(3) 虚拟化管理(openstackDocker kubernetes);

(4) 日志处理框架(KafkaFlume);

你可能感兴趣的:(java,面试,java)