今天去一加规模还算大的房地产公司面试,前台妹妹特别漂亮,给了倒了杯冰水,找了个空调房让我先做着(有些办公室空调没有开),人特别好,让我一下子对这个公司充满了憧憬。
坐了一会儿拿了份面试题给我做,意料之中,又在情理之外。像我这样有工作经验的人不应该是直接面谈的么,哈哈,不过我还是有点慌的,说实话我java基础并不扎实。拿到题目,我大致看了下,有50道选择题和5道问答题。
笔试题都是些特别基础的题目,涉及到输入输出流,数据类型,运算符等和JDBC的一些知识,做的时候感觉就3-4道不会,但是坐下来确错了7个。这道不是重点,重点是那5道问答题我居然只会2个,其他3个我连随便编点的想法都没有,因为我就是不会。
1.LinkedList 和ArrayList的区别?
这个我还是知道的,ArrayList是用可增长数组形式实现的,当插入数据时,需要移动数据才行,比如有1000条数据,想插入到第2个后面,则第2个后面所有的数据都要向后移动一次,开销特别大。而查询时则只需要查询索引即可。LinkedList 是以链表形式实现的,即将对象保存在独立的空间,插入时只需要在某个对象后面在创建个空间用来保存数据即可,但是查询的时候是从第一个链子开始查,如果是在最后一个的话,则要把所有数据都要查一遍,开销特别大。
2.说一下Spring提供了哪几种bean的作用域,分别是什么?
这个,,好吧,我真的不知道,虽然应该是非常基础的问题,先将百度后的答案放上来。Spring 种提供了4种作用域:1.单例singleton :整个应用中只创建一个实例
2.原型prototype:每次注入时都新建一个实例 3.回话session :为每个会话新建一个实例 4.request 请求 为每个请求创建一次实例。
3.说一下Spring提供了哪几种事务管理方式?分别是怎么实现事务管理的?
这个我也没填,一下子没反应过来。百度后:有编码方式和声明式事务管理方式 2种。第一个百度了还是看不懂,请知道的人评论告诉我该怎么理解,第二种有几种方式实现,一种是xml文件中配置事务,另外一种是添加一个@transactional注解,一般我们都是在xml中统一配置事务的,但是某个类某个方法我们需要声明不同的事务管理方式,就可以使用第二种注解方式。
4.为什么重写了equals()方法后还需要重写hashcode()方法?
这个我大概知道,java中equals相等,则hashcode值肯定相等,而hashcode值相等,equals不一定相等。所以在重写了equals方法后,导致了内存地址不相等,hashcode值也发生了变化,所以必须重写hashcode()方法。再延伸下,为什么要使用hashcode值呢,是为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,那没就不必在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的。
5.简单说说单态模式,并简要写其一种实现方式?
一脸懵逼,什么是单态?这么多设计模式我怎么连听都没听过?我只知道单例模式。。心里想着不能骗自己,人家一个大公司,面试了这么多人,不可能有错别字的。回来查了下单态还真是单例!!吐血!!不过话说回来,让我说单例模式我也说不出个四五六。