2018年已经远去,2019年悄然而至。跳槽不仅是为了涨薪,更是为了锻炼自己,提高自己的能力。树挪死,人挪活。在一个公司呆的时间越长,就越老油条,从而失去不断前进的动力。现在下面就主要讲述我这一个月面试下来,面试官对中级java程序员的技术要求和面试技巧。
首先讲对中级java程序员的技术要求:
第一部分:
java 基础部分 :ArrayList ,LinkedList, Vector的区别: HashMap和HashTable的区别以及HashMap和ConcurrentHashMap的实现原理,特别是ConcurrentHashMap的原理,用到的读写锁分离技术。以及集合框架
提供的工具类Collections, 其中一个面试官问如何把一个普通的set集合专程线程安全的set。这就是用到Collections.synchronizedSet(Set<T> s)这个方法。以及这些常用的集合类所用到的数据结 构。
手动创建线程池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的缓存。
第三部分:中间件:redis 和rabbitmq
第四部分:项目介绍:常见的提法就是:你在项目中的主要职责,做的主要项目模块。或者在项目中你遇到了问题,怎么解决的。
第五部分:Java 虚拟机。【这部分是我的弱点,今年务必攻克】
第六部分:spring boot+spring cloud 我认为看完spring cloud 微服务实战足以应付面试。
面试技巧:
在自我介绍时就主动向面试官展示自己的亮点,包括技术(如分布式,多线程等),自己的工作年限,如果学校是名校时也可以直接说毕业哪所学校。
在介绍项目时一定要把以前项目中的涉及的表了然于胸,知道哪个模板涉及了哪几张表。最好在面试的时候把表设计主动跟面试官说一下。至于技术难点无非就是分布式集群,多线程中如何保持数据一致性。系统与第三方系统之间
是如何交互的。把面试当作一次技术交流,在面试中发现自己的不足,从而努力提高自己。
最后祝大家前程似锦。