第一次工作面试,虽然成功了,但是有许多不足的地方,需要反思和改正。
因为时间与距离的原因,两次面试都是电话面试进行的,第一次面试一个面试官,面试时间将近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 观察者模式 缓存 通道
11、网络爬虫 url判重
12、因为之前写过一个仿Spring框架,让我讲解实现方式及流程。
13、Web容器的工作原理
14、问到反射相关的问题

总结:
1、千万不要太紧张,过度的紧张会影响思路,导致该说的,会说的,都说不清楚甚至说不上来;
2、没有必要问完问题之后马上就回答,可以组织一下自己的语言,然后在回答,回答问题最好有条理,分条分步,这样显得思路很清晰,很熟练;
3、讲话一定要自信,然后语气和语速要和平时一样沉稳,不要显得很急促,或者很沉闷;
4、问一个问题,能多说就多说,在短的时间内,把自己会的东西尽可能多的展示出来,尽量说的有深度,而不是广度。说的太广,给人一种飘渺,什么都懂,也只是懂一点的感觉。从是什么,应用场景,如何应用,原理,底层实现方式,源码这样的方式或思路去回答问题。回答的有深度,就让面试官觉得这个人很行,研究的很透彻;
5、面试中尽量说自己擅长的部分,自己不擅长的方面少说,如果问到的问题确实是你不了解的,可以直接说不清楚或不会,干净利落的回答下一题,一方面拖拖拉拉的回答,给面试官不好的印象,更致命的是影响自己的心态,甚至影响整个面试过程。
6、如果是电话面试或视频一定要找一个自己熟悉的,安静的环境。

建议:
1、建议大家有时间多看一些源码,这样面试的时候,结合源码讲解回答问题,就很有说服力,经常研究源码的人,编码风格和习惯肯定都不错的,思路和设计上有突出的见解,这让面试官很放心;
2、平时学习的时候一定要不停的钻研,直到底层实现,掌握原理,设计方式等;
3、可以多参加互联网级别的讲座,面试模拟等活动,了解动态,平时多练兵,打仗才不怂。
4、平时要多总结,多思考,最好形成文档,当进入公司之后就会发现,没有文档就什么都做不了。

11-29 11:35