2012-03-08海辉面试
1.1.数据结构collections(帮助类,提供静态方法的排序,线程安全等操作)collection实现它的有(list,set)
2.你所知道的集合类都有哪些?主要方法?(list,map)
最常用的集合类是List和Map。List(储存数据的集合)的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、
存储和操作任何类型对象的元素列表。
List适用于按数值索引访问元素的情形。
Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。
ArrayList/VectorList
Collection
HashSet/TreeSetSet
PropetiesHashTable
Map
Treemap/HashMap
我记的不是方法名,而是思想,我知道它们都有增删改查的方法,但这些方法的具体名称,我记得不是很清楚,对于set,
大概的方法是add,remove,contains;对于map,大概的方法就是put,remove,contains等,因为,我只要在eclispe下按点操作符,
很自然的这些方法就出来了。我记住的一些思想就是List类会有get(intindex)这样的方法,因为它可以按顺序取元素,
而set类中没有get(intindex)这样的方法。List和set都可以迭代出所有元素,迭代时先要得到一个iterator对象,
所以,set和list类都有一个iterator方法,用于返回那个iterator对象。map可以返回三个集合,一个是返回所有的key的集合,
另外一个返回的是所有value的集合,再一个返回的key和value组合成的EntrySet对象的集合,map也有get方法,参数是key,
返回值是key对应的value。
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对
3.数据库优化,储存过程,function,游标
4.设计模式(写了个单例模式,抽象工厂,工厂模式,抽象工厂模式跟单例模式的区别,模板模式,代理模式等等)
5.jquery(document.getelementById("id")返回一个Dom对象,jquery的选择器(属性选择器,id选择器,类选择器))
6.xml解析(xml有什么用)(Dom(DomFactory,Dom解析,会先把要解析的所有文件读取进内存,效率低),sax(事件驱动型解析,遇到文档开头,文档结尾等会触发事件)),pull解析器(android);
7.数据库的三大范式
第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)
数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,
必须设计成两个独立的字段。
第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,
那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,
新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。
第三范式的要求如下:
满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
所以第三范式具有如下特征:
1,每一列只有一个值
2,每一行都能区分。
3,每一个表都不包含其他表已经包含的非主关键字信息。
例如,帖子表中只能出现发帖人的id,而不能出现发帖人的id,还同时出现发帖人姓名,否则,只要出现同一发帖人id的所有记录,
它们中的姓名部分都必须严格保持一致,这就是数据冗余。
8.什么是多态(一个接口,多种实现,事物的不同表现形态,父子类),有什么作用,什么情况下使用。什么是封装(封装:就是把属性或者行为隐藏起来,
不希望别人直接的去修改它,仅对外提供接口。封装是保证软件具有良好的模块性的基础。对象就是封装的基本的单位,提高复用性。
对同类型的事物封装),
有什么作用(三年了,对一些技术要有自己的理解,并不要把概念说出来,要有自己理解的东西)
9.项目开发周期:需求分析阶段,概要设计阶段,详细设计阶段,代码编写阶段,软件测试,项目上线,安装部署。
10.自我介绍有问题(应该要主要介绍自己做的项目类型,自己擅长的技术有(数据库优化,设计模式,jvm,框架原理),而不应该详细说自己做项目的具体功能)
5.英语被鄙视(口语差);
3.6面试
1.数据结构,算法(冒泡排序,归并排序,哪个效率最高,集合等)
2.多线程,线程并发
美资软件公司JAVA工程师电话面试题目
1.Talkaboutoverriding,overloading.
2.TalkaboutJAVAdesignpatternsyouknown.
3.TalkaboutthedifferencebetweenLinkList,ArrayListandVictor.
4.TalkaboutthedifferencebetweenanAbstractclassandanInterface.
5.Classa=newClass();Classb=newClass();
if(a==b)returnstrueorfalse,why?
6.WhyweuseStringBufferwhenconcatenatingstrings?
7.TrytoexplainSingletontous?Isitthreadsafe?Ifno,howtomakeitthreadsafe?
8.TrytoexplainIoc?
9.Howtosetmany-to-manyrelationshipinHibernate?
10.TalkaboutthedifferencebetweenINNERJOINandLFETJOIN.
11.Whyweuseindexindatabase?Howmanyindexesisthemaximuminonetableasyoursuggestion?
12.When‘Final’isusedinclass,methodandproperty,whatdoseitmean?
13.DoyouhaveanyexperienceonXML?TalkaboutanyXMLtoolyouused,e.g.JAXB,JAXG.
14.DoyouhaveanyexperienceonLinux?
15.InOODwhatisthereasonwhenyoucreateaSequencediagram?
Administrator10:34:20
1,堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?
2,什么时候用到接口,什么时候用到抽象类,二者区别
3,有一个100万的数组,里边有两个市重复的,如何设计算法找到。