面试总结-武汉地区
感谢来信,您好,面试总结如下:
一、面试过程回顾
初面当天天气比较恶劣,科技园区的大楼安保比较严格,每层楼都有门禁”刷脸“等等。辗转半天终于进入了二层,在二楼门口很巧遇到一个面试公司的员工,主动询问我是否是前来参加面试的,并引导我进入了公司办公区。进来后,前台hr热情地送我进了招待室,hr给了一份基本信息表,我把准备好的简历交上去。
然后我坐在招待室开始填表信息,期间hr很客气给我递了热水,感谢。基本表信息填完后,hr又给一份java试题试卷,我开始做题目。题型全是问答题,涉及到java基础,和一些c,c++相关的,还有spring框架的题目,默认的单一实例模式singleton和多实例模式prototype,和redis等等知识点(数据库,可作为存储介质)。做完题目后,就来了总监和领导开始技术面试,对于面试的主要考察点和讨论点我做了下总结。
for的三种循环方式:普通的下标index遍历,iterator迭代器遍历(对集合元素的枚举),jdk1.5后的新语法for each,新技术往往带来了更多方便,快捷,和一些健壮性和良好的改善。(比如1.5后对于基本类型与封装类型Integer等等的自动拆装箱类型转换,方便了平时的代码开发)。所以for each一般来说是快于常规的for循环,在代码语法结构上更加简洁,不必显式地定义一个下标变量index,也不必对该变量做++或--计算,而是直接获取list或者array中的单个元素,使得更加专注于业务逻辑代码。(后来我回来百度了下,网上很多经验说道for each的本质,是iterator迭代器实现的,对于linkedlist的数据结构就有很明显的效率改善,因为arrayList和linkedList之所以arrayList更常用,就是因为开辟了一块连续内存,随机访问起来效率更高,可以直接基于index下标访问,如果是基于下标index访问linkedList,需要从链表的一端元素,逐个地寻找下一个元素,直到找到该index,再根据该地址值去找堆空间的引用,所以速度相当慢)。
java的集合框架,list,set,map。list与set的区别主要是,list有序(其中常见的arraylist本质是扩展了数据类型的array,在java设计中有实现其他的接口以增强功能,linkedList的各个节点不连续但是也是有序的,在java源码中对linkedlist实现了很多方法,使得可以像队列,栈一样直接获取到列表的首尾元素),list允许null值,而set无序,元素不可重复。一般常用的数据结构都是线程不安全的,除非java在某些实现上用了synchronized 方法,比如