java面试突击

  1. Java基础
    Java接口和抽象类有什么区别?
    String,StringBuilder和StringBuffer的区别?
    final、finally、finalize三个关键字的区别?
    ==和equals的区别,给段代码判断下“ ==” 和equals的返回值。
    Java基本数据类型有几种,每一种的区别是什么?
    值传递和引用传递的区别?
    Java的异常体系?受检查和非受检查异常区别?
    序列化和反序列化。
    反射和泛型。
  2. 集合
    Collection的体系结构,Java容器有哪些?
    HashMap系列:底层数据结构,jdk1.7和1.8的区别,解决 hash 碰撞的方法,线程不安全原因,扩容策略,get和put方法的实现等等。
    ConcurrentHashMap的实现,底层原理,jdk1.7和1.8的区别等。
    HashTable、HashMap、HashSet区别。
    ArrayList,LinkedList ,Vector的区别,包括存储结构,增删改查效率等。
    Set 和 Map的区别,List 和 Set 的区别。
  3. JVM
    JVM的内存区域,即运行时数据区域。
    Java内存模型(JMM),Happens-Before 规则。
    垃圾回收算法;垃圾收集器,面试重点问CMS和G1的原理。
    类加载,双亲委派模型,如何打破双亲委派模型。
    jvm 调优,如何排查线上问题,如何解决线上 gc 问题。
  4. Java并发
    线程生命周期有哪些,状态切换的过程。
    死锁产生的条件,如何避免死锁。
    synchronized系列。synchronized 锁的是对象还是方法, 加在静态方法和实例方法的区别;给出一段代码,让判断是否会发生争夺锁问题。synchronized 的底层实现,锁升级过程。
    volatile相关。volatile关键字的作用,原理;volatile和synchronized区别。
    Lock接口相关。ReentrantLock原理,ReentrantLock和synchronized区别。
    线程池系列。线程池的使用场景,线程池的参数,拒绝策略,线程池执行的过程;线程池的核心线程数如何配置,线程池的原理;常见的几种线程池,常见的几种阻塞队列。
    ThreadLocal是什么?它的内存泄漏了解吗?
    CAS相关。CAS的过程,CAS存在的问题,如何解决?
    sleep() 方法和 wait() 方法区别和共同点?
    线程实现的方式及区别?线程通信的方式和区别?
    AQS系列,原子类和并发工具类,了解即可,有时间可以深入学习。
  5. MySQL
    MySQL 的索引类型,最左匹配原则,回表,底层索引数据结构,为什么不用B-树?索引失效如何排查?
    InnoDB和 MyISAM 的区别?聚集和非聚集索引 的区别?
    事务的ACID特性和隔离级别。
    MySQL中的锁机制,乐观锁和悲观锁,锁的种类。
    MySQL的日志模块binlog和redo log。
    主从复制,分库分表,SQL调优。
  6. Redis
    Redis 5种数据类型的使用,以及底层数据结构,尤其是Hash和Zset(sortedSet )
    Redis性能高的原因,为什么用Redis?
    Redis的过期策略和淘汰策略。
    Redis的持久化策略,RDB和AOF的区别?
    缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题?
    Redis的主从复制,哨兵,集群。
    Redis实现分布式锁。
    Redis6的新特性。
  7. Spring和Mybatis
    AOP和IOC的理解, bean 的生命周期和作用域,IOC容器初始化过程,循环依赖问题如何解决?
    BeanFactory和FactoryBean的区别?BeanFactory和ApplicationContext有什么区别?
    Spring 中用到的设计模式。
    SpringMvc工作流程。
    Spring 和 SpringBoot 的区别?
    Mybatis 相比Spring考察较少。常考:Mybatis 和 hibernate 的区别;Mybatis 的缓存;Mybatis 的执行流程等
  8. 计算机网络
    网络分层概念,TCP和UDP区别及使用场景。
    TCP头部结构,三次握手四次挥手,TCP可靠性保证手段,滑动窗口,拥塞控制,流量控制。
    HTTP和HTTPS区别?Cookie和Session区别?
    HTTP请求报文,浏览器输入网址后发生的事情,GET和POST的区别?
  9. 操作系统和Linux
    进程和线程的区别;进程的通信方式,线程的通信方式
    内存管理和IO管理
    Linux常用命令(top、ls、ps、netstat、lsof、cat、rm、grep、kill等),僵尸进程和孤儿进程,Linux中swap的作用?
  10. 设计模式
    设计模式的分类和六大原则
    单例模式分析和手写:懒汉和饿汉,双重检查模式,静态内部类模式。
    常见的几种设计模式?项目中用到哪些设计模式,为什么要用,怎么用的?
  11. 加分项
    消息队列MQ:ActiveMQ、RocketMQ、RabbitMQ、Kafka。选一个深入了解即可,推荐Kafka或RocketMQ
    全文搜索引擎ES(elasticsearch):ES的倒排索引,分词和搜索过程等。
    分布式Zookeeper。
    微服务框架 SpringCloud或Dubbo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建议阅读本文档的方式 本文档提供详细的目录,建议大家使用电脑阅读。如果大家用手机阅读的话,可以下载一个不错的PDF阅读器,比如 很多人常用的福昕PDF阅读器。 本文档提供详细的目录,大家可以根据自己的实际需要选择自己薄弱的知识章节阅读。 前言 不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有 章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1. 自我介绍。(你可千万这样介绍:“我叫某某,性别,来自哪里,学校是那个,自己爱干什么”,记住:多说点简 历上没有的,多说点自己哪里比别人强!) 2. 自己面试中可能涉及哪些知识点、那些知识点是重点。 3. 面试中哪些问题会被经常问到、面试中自己改如何回答。(强烈不推荐背题,第一:通过背这种方式你能记住多 少?能记住多久?第二:背题的方式的学习很难坚持下去!) 4. 自己的简历该如何写。 “80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部 分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万 不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来 越强大。 另外,大家要明确的很重要的几点是: 1. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方; 2. 大部分应届生找工作的硬伤是没有工作经验或实习经历; 3. 将自己的项目经历完美的展示出来非常重要。 笔主能力有限,如果有不对的地方或者和你想法不同的地方,敬请雅正、不舍赐教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值