第一次工作面试,虽然成功了,但是有许多不足的地方,需要反思和改正。
因为时间与距离的原因,两次面试都是电话面试进行的,第一次面试一个面试官,面试时间将近20分钟,第二次面试,两个面试官先后问问题,整个面试将近50分钟。面试结果是通过。面试有一段时间了,可能有一些面试问题忘记了,现已入职。
第一次面试:问的基本上都是Java基础的知识,简单的问了些问题,
问题大致是一下几个方面的:
1、 Java集合类,ArrayList LinkedList HashMap等 集合类的线程安全问题 底层数据结构
数组和链表的使用场景 还问到了HashMap的源码
2、 多线程方面:线程生命周期 线程状态 线程池
3、 Java内存模型 CAS 原子操作 volatile内存语义 功能
4、 Static final 关键字 类加载机制初始化顺序
5、 Switch case 击穿现象等
第二次面试:
问的框架方面和项目方面的问题比较多
1、 Java的几大特性 继承 封装 多态 抽象
2、 问使用的框架 spring AOP IOC原理及实现(反射 代理 源码)
3、 设计模式:单例模式
4、 版本控制器Git 基本命令
5、 Java多线程方面问的比较多 重排序 结合多场景问是否发生重排序 线程池构建 线程复用
6、 类锁 对象锁 静态锁 结合多场景提问
7、 Volatile synchronized 实现同步的其他方式 ReenTrantLook等
8、 类加载机制
9、 JVM内存模型 虚拟机栈 本地方法栈 堆 方法区 程序计数器 stackoverflowerror异常等
10、Netty框架+socket 观察者