预定的视频面试时间是中午12点,不过面试官并无准时到,拖了大概5、6分钟吧。Zoom会议上写着xxxJava工程师初试。 html
面试官戴着口罩,并无露脸,看起来与我年龄相仿,感受很年轻。 面试
在我按着既有的思路进行自我介绍以后,他直接就开始对我进行技术面试了,直接就开始提问Java相关基础知识了。和我上次的面试体验不一样,上次最初主要是针对项目进行了提问。 设计模式
因此我有点措手不及,其实从zoom上的“初试”和面试官的年龄、神态能够推测出来此次只是进行一个简单的Java基础技能的考核。 数组
反观在自我介绍的时候,我对本身的项目经历和工做经历介绍的有点太多了,讲了大概有10多分钟吧。这个在后面要调整一下,最初的自我介绍要简单一点儿,后面若是问到了,能够细说。 安全
这样能够把时间都留在技术交流上,我也不用口干舌燥了。 jvm
下面是对一些面试题的回顾与总结,有一些答的很差甚至没有回答出来。不过这些问题都囊括在了一些比较经典的面试题集里面。函数
问: 项目中用到的jdk是什么版本,在项目中有没有用过jdk1.8?Jdk1.8有什么新特性? 微服务
答:学习
参考文章:http://www.javashuo.com/article/p-dydpfbax-mz.html优化
问:了解微服务吗?能说一下Spring Cloud组件有哪些吗?
答:以前其实对这个有过了解,也看过相关文章,不过面试的时候却一点儿也想不起来了,尴尬。面试官问我脑海中没有这个组件的一幅图吗?其实还真没有,可是这提醒了我经过图来记忆不失为一个好方法。
参考文章:https://blog.csdn.net/xunjiushi9717/article/details/91988479
问:讲讲Java中的线程。
答:其实这个问题问的比较大,比较宽泛,因此我一时还不知道从哪儿回答。因此咱们先看后面的一些问题,其实他们也和线程相关。
能够从以上几个方面去讲,可是也能够向面试官进一步询问,要求其提出更具体一点儿的问题,这样更好。
问:讲讲volatile关键字?
答:其实这是一个比较经典的问题,当初也看过相应文章,只回答了两点,一个是被此关键字修饰的变量,具有可见性,便可以在线程间共享,并且能够禁止指令重排序。
面试官进一步问到为何能够在线程间共享时,没有回答上来。其实很简单,是由于被volatile关键字修饰后,变量会被写入主内存,其余线程访问时直接从主内存中取,不从本地内存中取,因此能够共享。
至于为何能够禁止指令重排序,是由于被volatile修饰的变量,赋值后会创建一个内存屏障。
参考文章:http://www.javashuo.com/article/p-ahklihfi-gk.html
问:线程的实现方式有哪几种?
答:这个也算是比较经典的问题了。最基础的有两种,继承Thread类,重写run方法; 实现Runnable接口,重写run方法。第三种使用线程池。
可是这里问到了线程池的参数大小是如何设置,这个没回答上来。
参考文章:https://blog.csdn.net/oqkdws/article/details/80526370
问:Java中的锁是否有了解?可否讲一下。Synchronized与lock的区别?
答:前面的问题其实也问的比较大。
参考文章:http://www.javashuo.com/article/p-uultmizd-my.html
问:设计模式是否有了解?能不能讲几种工做中用到?
答:最简单的有单例模式、工厂模式、模板模式、代理模式、发布-订阅模式,装饰者模式。
其中单例模式问到了单例的写法有哪几种,答有两种,懒汉式和饿汉式。而后又问到了有没有安全点的写法,这里回答使用Synchronized关键字。不过关键字加在哪里回答错了,应该是加在new对象的代码块中,我却回答加在方法上,这点面试官还重复问了两次。
经典的双重校验锁的单例模式代码,必须会写,以下:
public class SingleTon{ //1.构造函数私有化 private SingleTon(){}; //2.定义变量 private static volatile SingleTon s = null; //3.提供对外的访问方法 public static SingleTon getSingleTon(){ if (s == null){ synchronized(SingleTon.class){ if(s == null){ s = new SingleTon(); } } } return s; } }
参考文章:http://www.javashuo.com/article/p-winvfiyl-my.html
其中提到了代理模式,这个要求结合业务场景讲一讲,这个没有讲清楚。
问:深拷贝与浅拷贝是否知道?可否讲解一下?
答:这块儿以前看过,因此还能说出几句。
浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,为浅拷贝。
深拷贝:对基本数据类型进行值传递,对引用数据类型进行,建立一个新的对象,并复制其内容,为深拷贝。
总结:整体表现不太好吧,准备不足,不少问题都没答上来,后期对于这些问题还要重点学习与记忆。不过好在知道面试要问的老是那些问题,尚未超出范围。其次要学会观察面试官的角色与面试目标,不一样的面试官考察与面试的内容可能会不一样。