2018年已经远去,2019年悄然而至。跳槽不只是为了涨薪,更是为了锻炼本身,提升本身的能力。树挪死,人挪活。在一个公司呆的时间越长,就越老油条,从而失去不断前进的动力。如今下面就主要讲述我这一个月面试下来,面试官对中级java程序员的技术要求和面试技巧。java
首先讲对中级java程序员的技术要求:程序员
第一部分:面试
java 基础部分 :ArrayList ,LinkedList, Vector的区别: HashMap和HashTable的区别以及HashMap和ConcurrentHashMap的实现原理,特别是ConcurrentHashMap的原理,用到的读写锁分离技术。以及集合框架redis
提供的工具类Collections, 其中一个面试官问如何把一个普通的set集合专程线程安全的set。这就是用到Collections.synchronizedSet(Set<T> s)这个方法。以及这些经常使用的集合类所用到的数据结 构。spring
手动建立线程池ThreadPoolExecutor类中构造方法的七个参数的含义以及名称。以下所示:设计模式
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
java.util.concurrent包下的一些重要的类:如Semaphore, Lock Condition ,CyclicBarrier,Executors, ThreadPoolExecutor,CountDownLatch这些类的方法和使用。务必使本身能准确的描述出。缓存
第二部分:框架spring 中的IOC, AOP思想以及你对这两大思想的理解和项目中运用的场景。spring中的事务,以及spring中的经常使用设计模式,其中spring 中的经常使用设计模式最喜欢问的是观察者模式,由于jdk里面自带了观察者模式的实 现(Observer,Observable这两个类)。观察者就是一个对象观察到变化时,通知其余对象。安全
mybatis中的#和$的区别,mybatis的总计设计框架图。 mybatis中的经常使用的标签。mybatis的缓存。mybatis
第三部分:中间件:redis 和rabbitmq多线程
第四部分:项目介绍:常见的提法就是:你在项目中的主要职责,作的主要项目模块。或者在项目中你遇到了问题,怎么解决的。
第五部分:Java 虚拟机。【这部分是个人弱点,今年务必攻克】
第六部分:spring boot+spring cloud 我认为看完spring cloud 微服务实战足以应付面试。
面试技巧:
在自我介绍时就主动向面试官展现本身的亮点,包括技术(如分布式,多线程等),本身的工做年限,若是学校是名校时也能够直接说毕业哪所学校。
在介绍项目时必定要把之前项目中的涉及的表了然于胸,知道哪一个模板涉及了哪几张表。最好在面试的时候把表设计主动跟面试官说一下。至于技术难点无非就是分布式集群,多线程中如何保持数据一致性。系统与第三方系统之间
是如何交互的。把面试看成一次技术交流,在面试中发现本身的不足,从而努力提升本身。
最后祝你们前程似锦。