19年是互联网的寒冬,这个时间段,很大一部分人宁可降薪或者一直处于试用期也不会辞职,因为找工作确实很难。
但是,工作的机会还是很多的,一周安排个10次还是很轻松的。
19年换过几家,在这里说下19年java面试的主要点
1.java基础
虚拟机是大头,这个建议着重看,包含类的加载机制,gc的原理,垃圾回收算法,常用的回收机制cms ,g1两者优缺点,堆栈,堆分区,gc的调优(这个简单说一点即可,答案不唯一,例如根据项目中对象的性质(临时对象,持久对象)来进行调整堆各个分区的大小)
例如:抽象、封装、继承、多态(这个偶尔问)
集合:这个是重点。例如:集合底层实现,常用的集合。Map其实可以算作是集合,也称之为容器,这个点其实不怎么重要,不要纠结。
线程:这个也是重点。多是多线程处理并发问题,建议着重了解下threadlocal 以及ThreadPoolExecutor 各自特点,以及底层接口
2.基本概念
例如:spring最基本的 aop ioc di 等,springboot的自动装填,springcloud各个组件,这些问题最好不用简单的给出答案,最后涉及底层实现原理来说,例如aop,都知道是切面编程,主要用作 日志、权限、事务等,你说这个跟废话没差别,建议结合aop底层动态代理方向来回答,在这里可以稍微扩展一下,动态代理,静态代理的区别,动态代理分为:jdk动态代理,cglib动态代理,分别讲一下各自的使用场景,总之了解底层实现很重要,当然如果看过源码并且有自己的感悟的话可以说出来,说错也没事的哦。
3.技术
这一类主要是当下用的比较常见的,例如:redis(缓存穿透雪崩问题,布隆过滤器等),dubbo(通信原理),zk(除了注册中心的其他用途,消费者提供者之间的交互问题,宕机问题),mysql(sql优化,性能优化,引擎),mq(说出自己常用的MQ即可,优势,场景,消息准确性),三方框架或者软件(定时调度,例如:xxljob ,携程的apollo,链路追踪等),分布式事务(阿里的ots)maven ,git,liunix一些常用的命令,项目或者数据库集群,集群同步问题,集群宕机问题。
这里简单说下分布式事务,分布式事务,实际上是用一个key来维护各个子模块之间事务状态值得一种手段,通常是将这个key存放在分布式数据库中,例如redis中,阿里虽然推出来ots,但是阿里没有使用,说直白点,这个东西用来吹NB还是可以的。
4.遇到的项目难点,解决方式,以及收获,这个建议可以预先准备一下,主要问的是你解决问题的能力以及方法,难点可以不用太难,但是也不能过于简单。
5.认为自己最熟悉或者相较于其他人更突出的地方,根据自己的实际情况给出答案即可。
这里当你给出答案后,会针对你精通的面进行详细的询问,建议提前进行复习。